diff options
author | zpencer <spencerfang@google.com> | 2017-11-08 13:18:12 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-08 13:18:12 -0800 |
commit | f2968f518f08e09a3f32f9cee6838755526b43aa (patch) | |
tree | ccba9c333d47542a93b4bd02421e1d7d8af0af5b /testing | |
parent | 8af643d0f51eaf2b1cd5d1fc0efede744abbb92c (diff) | |
download | grpc-grpc-java-f2968f518f08e09a3f32f9cee6838755526b43aa.tar.gz |
core,netty: correctly count streams that ended due to client cancel (#3683)
Only bump the counter from AbstractServerStream.TransportState, and hole punch
from AbstractServerStream to TransportState when the application calls close.
Diffstat (limited to 'testing')
-rw-r--r-- | testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java | 43 |
1 files changed, 41 insertions, 2 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 b08d6e07a..d089d89e5 100644 --- a/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java +++ b/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java @@ -1432,7 +1432,7 @@ public abstract class AbstractTransportTest { } @Test - public void transportTracer_streamEnded_ok() throws Exception { + public void transportTracer_server_streamEnded_ok() throws Exception { server.start(serverListener); client = newClientTransport(server); runIfNotNull(client.start(mock(ManagedClientTransport.Listener.class))); @@ -1462,7 +1462,7 @@ public abstract class AbstractTransportTest { } @Test - public void transportTracer_streamEnded_nonOk() throws Exception { + public void transportTracer_server_streamEnded_nonOk() throws Exception { server.start(serverListener); client = newClientTransport(server); runIfNotNull(client.start(mock(ManagedClientTransport.Listener.class))); @@ -1491,6 +1491,45 @@ public abstract class AbstractTransportTest { } @Test + public void transportTracer_client_streamEnded_nonOk() throws Exception { + server.start(serverListener); + client = newClientTransport(server); + runIfNotNull(client.start(mockClientTransportListener)); + ClientStream clientStream = client.newStream(methodDescriptor, new Metadata(), callOptions); + ClientStreamListenerBase clientStreamListener = new ClientStreamListenerBase(); + clientStream.start(clientStreamListener); + MockServerTransportListener serverTransportListener = + serverListener.takeListenerOrFail(TIMEOUT_MS, TimeUnit.MILLISECONDS); + StreamCreation serverStreamCreation = + serverTransportListener.takeStreamOrFail(TIMEOUT_MS, TimeUnit.MILLISECONDS); + if (!haveTransportTracer()) { + return; + } + + TransportTracer.Stats serverBefore = + serverTransportListener.transport.getTransportStats().get(); + assertEquals(0, serverBefore.streamsFailed); + assertEquals(0, serverBefore.streamsSucceeded); + // TODO(zpencer): uncomment when integrated with client transport + // TransportTracer.Stats clientBefore = client.getTransportStats().get(); + // assertEquals(0, clientBefore.streamsFailed); + // assertEquals(0, clientBefore.streamsSucceeded); + + clientStream.cancel(Status.UNKNOWN); + // do not validate stats until close() has been called on server + assertNotNull(serverStreamCreation.listener.status.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + + TransportTracer.Stats serverAfter = + serverTransportListener.transport.getTransportStats().get(); + assertEquals(1, serverAfter.streamsFailed); + assertEquals(0, serverAfter.streamsSucceeded); + // TODO(zpencer): uncomment when integrated with client transport + // TransportTracer.Stats clientAfter = client.getTransportStats().get(); + // assertEquals(1, clientAfter.streamsFailed); + // assertEquals(0, clientAfter.streamsSucceeded); + } + + @Test public void transportTracer_receive_msg() throws Exception { server.start(serverListener); client = newClientTransport(server); |