/** * Checks onCompleted posted on the response observer is received. */ @Test public void onCompleted() throws Exception { mResponseObserver.onCompleted(); WriteResponse actualResponse = mStream.receive(TIMEOUT); Assert.assertNull(actualResponse); }
/** * Checks waitForComplete fails after times out. */ @Test public void waitForCompleteTimeout() throws Exception { WriteResponse[] responses = Stream.generate(() -> WriteResponse.newBuilder().build()) .limit(BUFFER_SIZE * 2).toArray(WriteResponse[]::new); EXECUTOR.submit(() -> { for (WriteResponse response : responses) { mResponseObserver.onNext(response); } try { Thread.sleep(TIMEOUT); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } mResponseObserver.onCompleted(); }); WriteResponse actualResponse = mStream.receive(SHORT_TIMEOUT); Assert.assertEquals(responses[0], actualResponse); mThrown.expect(DeadlineExceededException.class); mThrown.expectMessage(containsString(TEST_MESSAGE)); mStream.waitForComplete(SHORT_TIMEOUT); } }
/** * Checks waitForComplete succeed after onCompleted is triggered on response stream. */ @Test public void waitForComplete() throws Exception { WriteResponse[] responses = Stream.generate(() -> WriteResponse.newBuilder().build()) .limit(BUFFER_SIZE * 2).toArray(WriteResponse[]::new); EXECUTOR.submit(() -> { for (WriteResponse response : responses) { mResponseObserver.onNext(response); } try { Thread.sleep(SHORT_TIMEOUT); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } mResponseObserver.onCompleted(); }); WriteResponse actualResponse = mStream.receive(TIMEOUT); Assert.assertEquals(responses[0], actualResponse); mStream.waitForComplete(TIMEOUT); actualResponse = mStream.receive(TIMEOUT); Assert.assertEquals(null, actualResponse); }