aboutsummaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authorZHANG Dapeng <zdapeng@google.com>2018-03-12 14:12:46 -0700
committerGitHub <noreply@github.com>2018-03-12 14:12:46 -0700
commita83f67a706fdf9cd5b5c5026f1c413fbad1af839 (patch)
tree48e522d792b6cacc93becb5746c233301495458d /testing
parentc6fe4deb33686a7f0e65be6f3f509768ce5d04a6 (diff)
downloadgrpc-grpc-java-a83f67a706fdf9cd5b5c5026f1c413fbad1af839.tar.gz
core,netty,okhttp: Transparent retry
Changes: - `ClientStreamListener.onClose(Status status, RpcProgress rpcProgress, Metadata trailers)` added. - `AbstractClientStream.transportReportStatus(Status status, RpcProgress rpcProgress, boolean stopDelivery, Metadata trailers)` added - `ClientCallImpl.ClientStreamListenerImpl` will ignore the arg `rpcProgress` (non retry) - `RetriableStream.SubListener` will handle `rpcProgress` and decide if transparent retry. - `NettyClientHandler` and `OkHttpClientTransport` will pass `RpcProgress.REFUSED` to client stream listener for later stream ids when received GOAWAY, or for stream received a RST_STREAM frame with REFUSED code. - All other files are just a result of refactoring.
Diffstat (limited to 'testing')
-rw-r--r--testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java b/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java
index e165a4694..8bb692165 100644
--- a/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java
+++ b/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java
@@ -982,6 +982,14 @@ public abstract class AbstractTransportTest {
// This simulates the blocking calls which can trigger clientStream.cancel().
clientStream.cancel(Status.CANCELLED.withCause(status.asRuntimeException()));
}
+
+ @Override
+ public void closed(
+ Status status, RpcProgress rpcProgress, Metadata trailers) {
+ super.closed(status, rpcProgress, trailers);
+ // This simulates the blocking calls which can trigger clientStream.cancel().
+ clientStream.cancel(Status.CANCELLED.withCause(status.asRuntimeException()));
+ }
};
clientStream.start(clientStreamListener);
StreamCreation serverStreamCreation
@@ -1056,6 +1064,12 @@ public abstract class AbstractTransportTest {
@Override
public void closed(Status status, Metadata trailers) {
+ closed(status, RpcProgress.PROCESSED, trailers);
+ }
+
+ @Override
+ public void closed(
+ Status status, RpcProgress rpcProgress, Metadata trailers) {
assertEquals(Status.CANCELLED.getCode(), status.getCode());
assertEquals("nevermind", status.getDescription());
closedCalled.set(true);
@@ -1950,6 +1964,11 @@ public abstract class AbstractTransportTest {
@Override
public void closed(Status status, Metadata trailers) {
+ closed(status, RpcProgress.PROCESSED, trailers);
+ }
+
+ @Override
+ public void closed(Status status, RpcProgress rpcProgress, Metadata trailers) {
if (this.status.isDone()) {
fail("headersRead invoked after closed");
}