### Question:
RRResponseFuture { public Message waitResponse(long timeout) throws InterruptedException { this.countDownLatch.await(timeout, TimeUnit.MILLISECONDS); return this.respMsg; } RRResponseFuture();  RRResponseFuture(RRCallback rrCallback);  RRResponseFuture(RRCallback rrCallback, long timeout); void putResponse(final Message respMsg); Message waitResponse(long timeout); RRCallback getRrCallback(); long getExpiredTime(); boolean release();  }### Answer:
@Test public void test_watiTimeout() throws InterruptedException { RRResponseFuture responseFuture = new RRResponseFuture(new RRCallback() { @Override public void onSuccess(Message msg) { } @Override public void onException(Throwable e) { } }, 1000); Message rsp = responseFuture.waitResponse(1000); assertThat(rsp).isNull(); }