From 1e02b65c0806ddaa71aba8463ee50f4a6bd35961 Mon Sep 17 00:00:00 2001 From: Kun Zhang Date: Tue, 10 Oct 2017 13:46:51 -0700 Subject: [PATCH] Fix interop_test client. --- .../integration/AbstractInteropTest.java | 14 ++++++++-- .../integration/TestServiceClient.java | 28 +++++++++++-------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/AbstractInteropTest.java b/interop-testing/src/main/java/io/grpc/testing/integration/AbstractInteropTest.java index 9d0783a2e9..ef6bd03817 100644 --- a/interop-testing/src/main/java/io/grpc/testing/integration/AbstractInteropTest.java +++ b/interop-testing/src/main/java/io/grpc/testing/integration/AbstractInteropTest.java @@ -288,6 +288,10 @@ public abstract class AbstractInteropTest { return true; } + protected boolean serverInProcess() { + return true; + } + @Test public void emptyUnary() throws Exception { assertEquals(EMPTY, blockingStub.emptyCall(EMPTY)); @@ -1754,6 +1758,9 @@ public abstract class AbstractInteropTest { @SuppressWarnings("AssertionFailureIgnored") // Failure is checked in the end by the passed flag. private void assertServerMetrics(String method, Status.Code code, Collection requests, Collection responses) { + if (!serverInProcess()) { + return; + } AssertionError checkFailure = null; boolean passed = false; @@ -1875,7 +1882,7 @@ public abstract class AbstractInteropTest { } } - private static void checkCensusMetrics(MetricsRecord record, boolean server, + private void checkCensusMetrics(MetricsRecord record, boolean server, Collection requests, Collection responses) { int uncompressedRequestsSize = 0; for (MessageLite request : requests) { @@ -1885,7 +1892,7 @@ public abstract class AbstractInteropTest { for (MessageLite response : responses) { uncompressedResponsesSize += response.getSerializedSize(); } - if (server) { + if (server && serverInProcess()) { assertEquals( requests.size(), record.getMetricAsLongOrFail(RpcConstants.RPC_SERVER_REQUEST_COUNT)); assertEquals( @@ -1899,7 +1906,8 @@ public abstract class AbstractInteropTest { // check if they are recorded. assertNotNull(record.getMetric(RpcConstants.RPC_SERVER_REQUEST_BYTES)); assertNotNull(record.getMetric(RpcConstants.RPC_SERVER_RESPONSE_BYTES)); - } else { + } + if (!server) { assertEquals( requests.size(), record.getMetricAsLongOrFail(RpcConstants.RPC_CLIENT_REQUEST_COUNT)); assertEquals( diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java b/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java index 291ebec3e7..a83151b976 100644 --- a/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java +++ b/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java @@ -19,6 +19,7 @@ package io.grpc.testing.integration; import com.google.common.annotations.VisibleForTesting; import com.google.common.io.Files; import io.grpc.ManagedChannel; +import io.grpc.internal.AbstractManagedChannelImplBuilder; import io.grpc.internal.GrpcUtil; import io.grpc.internal.testing.TestUtils; import io.grpc.netty.GrpcSslContexts; @@ -316,6 +317,7 @@ public class TestServiceClient { private class Tester extends AbstractInteropTest { @Override protected ManagedChannel createChannel() { + AbstractManagedChannelImplBuilder builder; if (!useOkHttp) { SslContext sslContext = null; if (useTestCa) { @@ -326,23 +328,23 @@ public class TestServiceClient { throw new RuntimeException(ex); } } - NettyChannelBuilder builder = + NettyChannelBuilder nettyBuilder = NettyChannelBuilder.forAddress(serverHost, serverPort) .flowControlWindow(65 * 1024) .negotiationType(useTls ? NegotiationType.TLS : NegotiationType.PLAINTEXT) .sslContext(sslContext); if (serverHostOverride != null) { - builder.overrideAuthority(serverHostOverride); + nettyBuilder.overrideAuthority(serverHostOverride); } if (fullStreamDecompression) { - builder.enableFullStreamDecompression(); + nettyBuilder.enableFullStreamDecompression(); } - return builder.build(); + builder = nettyBuilder; } else { - OkHttpChannelBuilder builder = OkHttpChannelBuilder.forAddress(serverHost, serverPort); + OkHttpChannelBuilder okBuilder = OkHttpChannelBuilder.forAddress(serverHost, serverPort); if (serverHostOverride != null) { // Force the hostname to match the cert the server uses. - builder.overrideAuthority( + okBuilder.overrideAuthority( GrpcUtil.authorityFromHostAndPort(serverHostOverride, serverPort)); } if (useTls) { @@ -351,23 +353,25 @@ public class TestServiceClient { ? TestUtils.newSslSocketFactoryForCa(Platform.get().getProvider(), TestUtils.loadCert("ca.pem")) : (SSLSocketFactory) SSLSocketFactory.getDefault(); - builder.sslSocketFactory(factory); + okBuilder.sslSocketFactory(factory); } catch (Exception e) { throw new RuntimeException(e); } } else { - builder.usePlaintext(true); + okBuilder.usePlaintext(true); } if (fullStreamDecompression) { - builder.enableFullStreamDecompression(); + okBuilder.enableFullStreamDecompression(); } - return builder.build(); + builder = okBuilder; } + io.grpc.internal.TestingAccessor.setStatsContextFactory(builder, getClientStatsFactory()); + return builder.build(); } @Override - protected boolean metricsExpected() { - // Server-side metrics won't be found, because server is a separate process. + protected boolean serverInProcess() { + // Server is a separate process. return false; } }