|
39 | 39 | import androidx.test.core.content.pm.PackageInfoBuilder; |
40 | 40 | import com.google.common.collect.ImmutableList; |
41 | 41 | import io.grpc.Attributes; |
| 42 | +import io.grpc.InternalChannelz.SocketStats; |
42 | 43 | import io.grpc.ServerStreamTracer; |
43 | 44 | import io.grpc.Status; |
44 | 45 | import io.grpc.binder.AndroidComponentAddress; |
|
52 | 53 | import io.grpc.internal.GrpcUtil; |
53 | 54 | import io.grpc.internal.InternalServer; |
54 | 55 | import io.grpc.internal.ManagedClientTransport; |
| 56 | +import io.grpc.internal.MockServerTransportListener; |
55 | 57 | import io.grpc.internal.ObjectPool; |
56 | 58 | import io.grpc.internal.SharedResourcePool; |
57 | 59 | import java.util.List; |
@@ -301,13 +303,30 @@ public void clientIgnoresDuplicateSetupTransaction() throws Exception { |
301 | 303 | } |
302 | 304 |
|
303 | 305 | assertThat(((ConnectionClientTransport) client).getAttributes().get(REMOTE_UID)) |
304 | | - .isEqualTo(myUid()); |
| 306 | + .isEqualTo(myUid()); |
305 | 307 | } |
306 | 308 |
|
307 | 309 | @Test |
308 | | - @Ignore("See BinderTransportTest#socketStats.") |
309 | 310 | @Override |
310 | | - public void socketStats() {} |
| 311 | + // We don't quite pass the official/abstract version of this test yet because |
| 312 | + // today's binder client and server transports have different ideas of each others' address. |
| 313 | + // TODO(#12347): Remove this @Override once this difference is resolved. |
| 314 | + public void socketStats() throws Exception { |
| 315 | + server.start(serverListener); |
| 316 | + ManagedClientTransport client = newClientTransport(server); |
| 317 | + startTransport(client, mockClientTransportListener); |
| 318 | + |
| 319 | + SocketStats clientSocketStats = client.getStats().get(); |
| 320 | + assertThat(clientSocketStats.local).isInstanceOf(AndroidComponentAddress.class); |
| 321 | + assertThat(((AndroidComponentAddress) clientSocketStats.remote).getPackage()) |
| 322 | + .isEqualTo(((AndroidComponentAddress) server.getListenSocketAddress()).getPackage()); |
| 323 | + |
| 324 | + MockServerTransportListener serverTransportListener = |
| 325 | + serverListener.takeListenerOrFail(TIMEOUT_MS, MILLISECONDS); |
| 326 | + SocketStats serverSocketStats = serverTransportListener.transport.getStats().get(); |
| 327 | + assertThat(serverSocketStats.local).isEqualTo(server.getListenSocketAddress()); |
| 328 | + assertThat(serverSocketStats.remote).isEqualTo(new BoundClientAddress(myUid())); |
| 329 | + } |
311 | 330 |
|
312 | 331 | @Test |
313 | 332 | @Ignore("See BinderTransportTest#flowControlPushBack") |
|
0 commit comments