interop-testing: client compressed tests without probing (#4279)
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 e54b3cc..6fa7812 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
@@ -390,7 +390,7 @@
* Tests client per-message compression for unary calls. The Java API does not support inspecting
* a message's compression level, so this is primarily intended to run against a gRPC C++ server.
*/
- public void clientCompressedUnary() throws Exception {
+ public void clientCompressedUnary(boolean probe) throws Exception {
assumeEnoughMemory();
final SimpleRequest expectCompressedRequest =
SimpleRequest.newBuilder()
@@ -409,15 +409,17 @@
.setPayload(Payload.newBuilder().setBody(ByteString.copyFrom(new byte[314159])))
.build();
- // Send a non-compressed message with expectCompress=true. Servers supporting this test case
- // should return INVALID_ARGUMENT.
- try {
- blockingStub.unaryCall(expectCompressedRequest);
- fail("expected INVALID_ARGUMENT");
- } catch (StatusRuntimeException e) {
- assertEquals(Status.INVALID_ARGUMENT.getCode(), e.getStatus().getCode());
+ if (probe) {
+ // Send a non-compressed message with expectCompress=true. Servers supporting this test case
+ // should return INVALID_ARGUMENT.
+ try {
+ blockingStub.unaryCall(expectCompressedRequest);
+ fail("expected INVALID_ARGUMENT");
+ } catch (StatusRuntimeException e) {
+ assertEquals(Status.INVALID_ARGUMENT.getCode(), e.getStatus().getCode());
+ }
+ assertStatsTrace("grpc.testing.TestService/UnaryCall", Status.Code.INVALID_ARGUMENT);
}
- assertStatsTrace("grpc.testing.TestService/UnaryCall", Status.Code.INVALID_ARGUMENT);
assertEquals(
goldenResponse, blockingStub.withCompression("gzip").unaryCall(expectCompressedRequest));
@@ -557,7 +559,7 @@
* inspecting a message's compression level, so this is primarily intended to run against a gRPC
* C++ server.
*/
- public void clientCompressedStreaming() throws Exception {
+ public void clientCompressedStreaming(boolean probe) throws Exception {
final StreamingInputCallRequest expectCompressedRequest =
StreamingInputCallRequest.newBuilder()
.setExpectCompressed(BoolValue.newBuilder().setValue(true))
@@ -575,13 +577,15 @@
StreamObserver<StreamingInputCallRequest> requestObserver =
asyncStub.streamingInputCall(responseObserver);
- // Send a non-compressed message with expectCompress=true. Servers supporting this test case
- // should return INVALID_ARGUMENT.
- requestObserver.onNext(expectCompressedRequest);
- responseObserver.awaitCompletion(operationTimeoutMillis(), TimeUnit.MILLISECONDS);
- Throwable e = responseObserver.getError();
- assertNotNull("expected INVALID_ARGUMENT", e);
- assertEquals(Status.INVALID_ARGUMENT.getCode(), Status.fromThrowable(e).getCode());
+ if (probe) {
+ // Send a non-compressed message with expectCompress=true. Servers supporting this test case
+ // should return INVALID_ARGUMENT.
+ requestObserver.onNext(expectCompressedRequest);
+ responseObserver.awaitCompletion(operationTimeoutMillis(), TimeUnit.MILLISECONDS);
+ Throwable e = responseObserver.getError();
+ assertNotNull("expected INVALID_ARGUMENT", e);
+ assertEquals(Status.INVALID_ARGUMENT.getCode(), Status.fromThrowable(e).getCode());
+ }
// Start a new stream
responseObserver = StreamRecorder.create();
diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/TestCases.java b/interop-testing/src/main/java/io/grpc/testing/integration/TestCases.java
index 2efbd31..7056d38 100644
--- a/interop-testing/src/main/java/io/grpc/testing/integration/TestCases.java
+++ b/interop-testing/src/main/java/io/grpc/testing/integration/TestCases.java
@@ -26,9 +26,13 @@
CACHEABLE_UNARY("cacheable unary rpc sent using GET"),
LARGE_UNARY("single request and (large) response"),
CLIENT_COMPRESSED_UNARY("client compressed unary request"),
+ CLIENT_COMPRESSED_UNARY_NOPROBE(
+ "client compressed unary request (skip initial feature-probing request)"),
SERVER_COMPRESSED_UNARY("server compressed unary response"),
CLIENT_STREAMING("request streaming with single response"),
CLIENT_COMPRESSED_STREAMING("client per-message compression on stream"),
+ CLIENT_COMPRESSED_STREAMING_NOPROBE(
+ "client per-message compression on stream (skip initial feature-probing request)"),
SERVER_STREAMING("single request with response streaming"),
SERVER_COMPRESSED_STREAMING("server per-message compression on stream"),
PING_PONG("full-duplex ping-pong streaming"),
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 bdf7eb1..4d891c9 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
@@ -221,7 +221,11 @@
break;
case CLIENT_COMPRESSED_UNARY:
- tester.clientCompressedUnary();
+ tester.clientCompressedUnary(true);
+ break;
+
+ case CLIENT_COMPRESSED_UNARY_NOPROBE:
+ tester.clientCompressedUnary(false);
break;
case SERVER_COMPRESSED_UNARY:
@@ -233,7 +237,11 @@
break;
case CLIENT_COMPRESSED_STREAMING:
- tester.clientCompressedStreaming();
+ tester.clientCompressedStreaming(true);
+ break;
+
+ case CLIENT_COMPRESSED_STREAMING_NOPROBE:
+ tester.clientCompressedStreaming(false);
break;
case SERVER_STREAMING:
diff --git a/interop-testing/src/test/java/io/grpc/testing/integration/TestCasesTest.java b/interop-testing/src/test/java/io/grpc/testing/integration/TestCasesTest.java
index aac5cbc..6e54f5c 100644
--- a/interop-testing/src/test/java/io/grpc/testing/integration/TestCasesTest.java
+++ b/interop-testing/src/test/java/io/grpc/testing/integration/TestCasesTest.java
@@ -65,12 +65,21 @@
"timeout_on_sleeping_server"
};
- assertEquals(testCases.length, TestCases.values().length);
+ // additional test cases
+ String[] additionalTestCases = {
+ "client_compressed_unary_noprobe",
+ "client_compressed_streaming_noprobe"
+ };
+
+ assertEquals(testCases.length + additionalTestCases.length, TestCases.values().length);
Set<TestCases> testCaseSet = new HashSet<TestCases>(testCases.length);
for (String testCase : testCases) {
testCaseSet.add(TestCases.fromString(testCase));
}
+ for (String testCase : additionalTestCases) {
+ testCaseSet.add(TestCases.fromString(testCase));
+ }
assertEquals(TestCases.values().length, testCaseSet.size());
}