add a delay to testTailCall

This commit is contained in:
Vaci Koblizek 2020-11-23 21:04:09 +00:00
parent beec84a1bc
commit 3b642d0355
2 changed files with 13 additions and 2 deletions

View file

@ -446,16 +446,18 @@ public class RpcTest {
@org.junit.Test @org.junit.Test
public void testTailCall() { public void testTailCall() {
var releaseMe = new CompletableFuture<java.lang.Void>();
var caller = new Test.TestTailCaller.Client(context.connect(Test.TestSturdyRefObjectId.Tag.TEST_TAIL_CALLER)); var caller = new Test.TestTailCaller.Client(context.connect(Test.TestSturdyRefObjectId.Tag.TEST_TAIL_CALLER));
var calleeCallCount = new Counter(); var calleeCallCount = new Counter();
var callee = new Test.TestTailCallee.Client(new RpcTestUtil.TestTailCalleeImpl(calleeCallCount)); var callee = new Test.TestTailCallee.Client(new RpcTestUtil.TestTailCalleeImpl(calleeCallCount, releaseMe));
var request = caller.fooRequest(); var request = caller.fooRequest();
request.getParams().setI(456); request.getParams().setI(456);
request.getParams().setCallee(callee); request.getParams().setCallee(callee);
var promise = request.send(); var promise = request.send();
var dependentCall0 = promise.getC().getCallSequenceRequest().send(); var dependentCall0 = promise.getC().getCallSequenceRequest().send();
releaseMe.complete(null);
var response = this.context.runUntil(promise).join(); var response = this.context.runUntil(promise).join();
Assert.assertEquals(456, response.getI()); Assert.assertEquals(456, response.getI());
@ -467,6 +469,10 @@ public class RpcTest {
var dependentCall2 = response.getC().getCallSequenceRequest().send(); var dependentCall2 = response.getC().getCallSequenceRequest().send();
Assert.assertEquals(2, this.context.runUntil(dependentCall2).join().getN()); Assert.assertEquals(2, this.context.runUntil(dependentCall2).join().getN());
Assert.assertEquals(1, calleeCallCount.value()); Assert.assertEquals(1, calleeCallCount.value());
// The imported cap has resolved locally, and can be called directly
Assert.assertEquals(3, promise.getC().getCallSequenceRequest().send().join().getN());
Assert.assertEquals(4, promise.getC().getCallSequenceRequest().send().join().getN());
} }
static CompletableFuture<Test.TestCallOrder.GetCallSequenceResults.Reader> getCallSequence( static CompletableFuture<Test.TestCallOrder.GetCallSequenceResults.Reader> getCallSequence(

View file

@ -225,9 +225,14 @@ class RpcTestUtil {
static class TestTailCalleeImpl extends Test.TestTailCallee.Server { static class TestTailCalleeImpl extends Test.TestTailCallee.Server {
private final Counter count; private final Counter count;
private final CompletableFuture<java.lang.Void> releaseMe;
public TestTailCalleeImpl(Counter count) { public TestTailCalleeImpl(Counter count) {
this(count, READY_NOW);
}
public TestTailCalleeImpl(Counter count, CompletableFuture<java.lang.Void> releaseMe) {
this.count = count; this.count = count;
this.releaseMe = releaseMe;
} }
@Override @Override
@ -240,7 +245,7 @@ class RpcTestUtil {
results.setI(params.getI()); results.setI(params.getI());
results.setT(params.getT()); results.setT(params.getT());
results.setC(new TestCallOrderImpl()); results.setC(new TestCallOrderImpl());
return READY_NOW; return releaseMe;
} }
} }