mirror of https://github.com/grpc/grpc-java.git
core: Rely on ping-pong for flow control testing
The previous code did a ping-pong to make sure the transport had enough time to process, but then proceeded to sleep 5 seconds. That sleep would have been needed without the ping-pong, but with the ping-pong we are confident all events have been drained from the transport. Deleting the unnecessary sleeps saves 10 seconds, for each of the 9 instances of this test.
This commit is contained in:
parent
ebc6d3e932
commit
af7efeb9f5
|
@ -1449,7 +1449,7 @@ public abstract class AbstractTransportTest {
|
||||||
clientStream.flush();
|
clientStream.flush();
|
||||||
clientStream.halfClose();
|
clientStream.halfClose();
|
||||||
doPingPong(serverListener);
|
doPingPong(serverListener);
|
||||||
assertFalse(serverStreamListener.awaitHalfClosed(TIMEOUT_MS, TimeUnit.MILLISECONDS));
|
assertFalse(serverStreamListener.isHalfClosed());
|
||||||
|
|
||||||
serverStream.request(1);
|
serverStream.request(1);
|
||||||
serverReceived += verifyMessageCountAndClose(serverStreamListener.messageQueue, 1);
|
serverReceived += verifyMessageCountAndClose(serverStreamListener.messageQueue, 1);
|
||||||
|
@ -1461,11 +1461,7 @@ public abstract class AbstractTransportTest {
|
||||||
Status status = Status.OK.withDescription("... quite a lengthy discussion");
|
Status status = Status.OK.withDescription("... quite a lengthy discussion");
|
||||||
serverStream.close(status, new Metadata());
|
serverStream.close(status, new Metadata());
|
||||||
doPingPong(serverListener);
|
doPingPong(serverListener);
|
||||||
try {
|
assertFalse(clientStreamListener.isClosed());
|
||||||
clientStreamListener.awaitClose(TIMEOUT_MS, TimeUnit.MILLISECONDS);
|
|
||||||
fail("Expected TimeoutException");
|
|
||||||
} catch (TimeoutException expectedException) {
|
|
||||||
}
|
|
||||||
|
|
||||||
clientStream.request(1);
|
clientStream.request(1);
|
||||||
clientReceived += verifyMessageCountAndClose(clientStreamListener.messageQueue, 1);
|
clientReceived += verifyMessageCountAndClose(clientStreamListener.messageQueue, 1);
|
||||||
|
|
|
@ -43,6 +43,13 @@ public class ClientStreamListenerBase implements ClientStreamListener {
|
||||||
return status.get(timeout, unit);
|
return status.get(timeout, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return {@code true} if {@code #awaitClose} would return immediately with a status.
|
||||||
|
*/
|
||||||
|
public boolean isClosed() {
|
||||||
|
return status.isDone();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns response headers from the server or throws {@link
|
* Returns response headers from the server or throws {@link
|
||||||
* java.util.concurrent.TimeoutException} if they aren't delivered before the timeout.
|
* java.util.concurrent.TimeoutException} if they aren't delivered before the timeout.
|
||||||
|
|
|
@ -54,6 +54,10 @@ public class ServerStreamListenerBase implements ServerStreamListener {
|
||||||
return halfClosedLatch.await(timeout, unit);
|
return halfClosedLatch.await(timeout, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isHalfClosed() {
|
||||||
|
return halfClosedLatch.getCount() == 0;
|
||||||
|
}
|
||||||
|
|
||||||
public Status awaitClose(int timeout, TimeUnit unit) throws Exception {
|
public Status awaitClose(int timeout, TimeUnit unit) throws Exception {
|
||||||
return status.get(timeout, unit);
|
return status.get(timeout, unit);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue