diff options
author | ZHANG Dapeng <zdapeng@google.com> | 2018-03-12 14:12:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-12 14:12:46 -0700 |
commit | a83f67a706fdf9cd5b5c5026f1c413fbad1af839 (patch) | |
tree | 48e522d792b6cacc93becb5746c233301495458d /testing | |
parent | c6fe4deb33686a7f0e65be6f3f509768ce5d04a6 (diff) | |
download | grpc-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.java | 19 |
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"); } |