@Test
@DirtiesContext
public void testStopCancelled() throws Exception {
this.asyncTemplate.setReceiveTimeout(5000);
RabbitConverterFuture<String> future = this.asyncTemplate.convertSendAndReceive("noReply");
TheCallback callback = new TheCallback();
future.addCallback(callback);
assertEquals(1, TestUtils.getPropertyValue(this.asyncTemplate, "pending", Map.class).size());
this.asyncTemplate.stop();
this.asyncTemplate.stop();
try {
future.get(10, TimeUnit.SECONDS);
fail("Expected CancellationException");
}
catch (CancellationException e) {
assertEquals("AsyncRabbitTemplate was stopped while waiting for reply", future.getNackCause());
}
assertEquals(0, TestUtils.getPropertyValue(this.asyncTemplate, "pending", Map.class).size());
assertTrue(callback.latch.await(10, TimeUnit.SECONDS));
assertTrue(future.isCancelled());
assertNull(TestUtils.getPropertyValue(this.asyncTemplate, "taskScheduler"));
future.set("foo");
assertNull(callback.result);
}