From 90f06b1f76955ef81dee485054e3f00f23bc786f Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Mon, 30 Sep 2024 09:10:18 -0400 Subject: [PATCH] Fix `AsyncMessagingTemplateTests` for time race condition --- .../core/AsyncMessagingTemplateTests.java | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/spring-integration-core/src/test/java/org/springframework/integration/core/AsyncMessagingTemplateTests.java b/spring-integration-core/src/test/java/org/springframework/integration/core/AsyncMessagingTemplateTests.java index d6ae4cd88d..9478c489bb 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/core/AsyncMessagingTemplateTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/core/AsyncMessagingTemplateTests.java @@ -44,7 +44,6 @@ import static org.awaitility.Awaitility.await; /** * @author Mark Fisher * @author Artem Bilan - * * @since 2.0 */ public class AsyncMessagingTemplateTests { @@ -149,8 +148,8 @@ public class AsyncMessagingTemplateTests { AsyncMessagingTemplate template = new AsyncMessagingTemplate(); template.setDefaultDestination(channel); Future> result = template.asyncReceive(); - sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); long start = System.currentTimeMillis(); + sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); assertThat(result.get(100000, TimeUnit.MILLISECONDS)).isNotNull(); long elapsed = System.currentTimeMillis() - start; assertThat(result.get().getPayload()).isEqualTo("test"); @@ -162,8 +161,8 @@ public class AsyncMessagingTemplateTests { QueueChannel channel = new QueueChannel(); AsyncMessagingTemplate template = new AsyncMessagingTemplate(); Future> result = template.asyncReceive(channel); - sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); long start = System.currentTimeMillis(); + sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull(); long elapsed = System.currentTimeMillis() - start; assertThat(result.get().getPayload()).isEqualTo("test"); @@ -179,8 +178,8 @@ public class AsyncMessagingTemplateTests { AsyncMessagingTemplate template = new AsyncMessagingTemplate(); template.setBeanFactory(context); Future> result = template.asyncReceive("testChannel"); - sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); long start = System.currentTimeMillis(); + sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull(); long elapsed = System.currentTimeMillis() - start; @@ -202,8 +201,8 @@ public class AsyncMessagingTemplateTests { AsyncMessagingTemplate template = new AsyncMessagingTemplate(); template.setDefaultDestination(channel); Future result = template.asyncReceiveAndConvert(); - sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); long start = System.currentTimeMillis(); + sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull(); long elapsed = System.currentTimeMillis() - start; assertThat(result.get()).isEqualTo("test"); @@ -216,8 +215,8 @@ public class AsyncMessagingTemplateTests { QueueChannel channel = new QueueChannel(); AsyncMessagingTemplate template = new AsyncMessagingTemplate(); Future result = template.asyncReceiveAndConvert(channel); - sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); long start = System.currentTimeMillis(); + sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull(); long elapsed = System.currentTimeMillis() - start; assertThat(result.get()).isEqualTo("test"); @@ -234,8 +233,8 @@ public class AsyncMessagingTemplateTests { AsyncMessagingTemplate template = new AsyncMessagingTemplate(); template.setBeanFactory(context); Future result = template.asyncReceiveAndConvert("testChannel"); - sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); long start = System.currentTimeMillis(); + sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200); assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull(); long elapsed = System.currentTimeMillis() - start; @@ -435,15 +434,15 @@ public class AsyncMessagingTemplateTests { private static void sendMessageAfterDelay(MessageChannel channel, GenericMessage message, int delay) { ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(() -> { - try { - Thread.sleep(delay); - } - catch (InterruptedException e) { - Thread.currentThread().interrupt(); - return; - } - channel.send(message); - }); + try { + Thread.sleep(delay); + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + return; + } + channel.send(message); + }); executorService.shutdown(); }