mirror of https://github.com/grpc/grpc-java.git
Implement cancel_after_* integration tests
------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82734780
This commit is contained in:
parent
42fcc501b9
commit
1c20eb6cef
|
|
@ -72,6 +72,7 @@ import org.junit.Assert;
|
||||||
import org.junit.Assume;
|
import org.junit.Assume;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
@ -305,6 +306,46 @@ public abstract class AbstractTransportTest {
|
||||||
verifyNoMoreInteractions(responseObserver);
|
verifyNoMoreInteractions(responseObserver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void cancelAfterBegin() throws Exception {
|
||||||
|
StreamRecorder<StreamingInputCallResponse> responseObserver = StreamRecorder.create();
|
||||||
|
StreamObserver<StreamingInputCallRequest> requestObserver =
|
||||||
|
asyncStub.streamingInputCall(responseObserver);
|
||||||
|
requestObserver.onError(new RuntimeException());
|
||||||
|
responseObserver.awaitCompletion();
|
||||||
|
assertEquals(Arrays.<StreamingInputCallResponse>asList(), responseObserver.getValues());
|
||||||
|
assertEquals(Status.CANCELLED, Status.fromThrowable(responseObserver.getError()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void cancelAfterFirstResponse() throws Exception {
|
||||||
|
final StreamingOutputCallRequest request = StreamingOutputCallRequest.newBuilder()
|
||||||
|
.addResponseParameters(ResponseParameters.newBuilder()
|
||||||
|
.setSize(31415))
|
||||||
|
.setPayload(Payload.newBuilder()
|
||||||
|
.setBody(ByteString.copyFrom(new byte[27182])))
|
||||||
|
.build();
|
||||||
|
final StreamingOutputCallResponse goldenResponse = StreamingOutputCallResponse.newBuilder()
|
||||||
|
.setPayload(Payload.newBuilder()
|
||||||
|
.setType(PayloadType.COMPRESSABLE)
|
||||||
|
.setBody(ByteString.copyFrom(new byte[31415])))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
StreamObserver<StreamingOutputCallResponse> responseObserver = mock(StreamObserver.class);
|
||||||
|
StreamObserver<StreamingOutputCallRequest> requestObserver
|
||||||
|
= asyncStub.fullDuplexCall(responseObserver);
|
||||||
|
requestObserver.onValue(request);
|
||||||
|
verify(responseObserver, timeout(1000)).onValue(goldenResponse);
|
||||||
|
verifyNoMoreInteractions(responseObserver);
|
||||||
|
|
||||||
|
requestObserver.onError(new RuntimeException());
|
||||||
|
ArgumentCaptor<Throwable> captor = ArgumentCaptor.forClass(Throwable.class);
|
||||||
|
verify(responseObserver, timeout(1000)).onError(captor.capture());
|
||||||
|
assertEquals(Status.CANCELLED, Status.fromThrowable(captor.getValue()));
|
||||||
|
verifyNoMoreInteractions(responseObserver);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fullDuplexCallShouldSucceed() throws Exception {
|
public void fullDuplexCallShouldSucceed() throws Exception {
|
||||||
// Build the request.
|
// Build the request.
|
||||||
|
|
|
||||||
|
|
@ -223,6 +223,10 @@ public class TestServiceClient {
|
||||||
tester.pingPong();
|
tester.pingPong();
|
||||||
} else if ("empty_stream".equals(testCase)) {
|
} else if ("empty_stream".equals(testCase)) {
|
||||||
tester.emptyStream();
|
tester.emptyStream();
|
||||||
|
} else if ("cancel_after_begin".equals(testCase)) {
|
||||||
|
tester.cancelAfterBegin();
|
||||||
|
} else if ("cancel_after_first_response".equals(testCase)) {
|
||||||
|
tester.cancelAfterFirstResponse();
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Unknown test case: " + testCase);
|
throw new IllegalArgumentException("Unknown test case: " + testCase);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue