Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ public void largeUnary() throws Exception {
* 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()
Expand All @@ -409,15 +409,17 @@ public void clientCompressedUnary() throws Exception {
.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));
Expand Down Expand Up @@ -557,7 +559,7 @@ public void clientStreaming() throws Exception {
* 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))
Expand All @@ -575,13 +577,15 @@ public void clientCompressedStreaming() throws Exception {
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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,13 @@ public enum TestCases {
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"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,11 @@ private void runTest(TestCases testCase) throws Exception {
break;

case CLIENT_COMPRESSED_UNARY:
tester.clientCompressedUnary();
tester.clientCompressedUnary(true);
break;

case CLIENT_COMPRESSED_UNARY_NOPROBE:
tester.clientCompressedUnary(false);
break;

case SERVER_COMPRESSED_UNARY:
Expand All @@ -233,7 +237,11 @@ private void runTest(TestCases testCase) throws Exception {
break;

case CLIENT_COMPRESSED_STREAMING:
tester.clientCompressedStreaming();
tester.clientCompressedStreaming(true);
break;

case CLIENT_COMPRESSED_STREAMING_NOPROBE:
tester.clientCompressedStreaming(false);
break;

case SERVER_STREAMING:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,21 @@ public void testCaseNamesShouldMapToEnums() {
"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());
}
Expand Down