Skip to content

Commit 90f06b1

Browse files
committed
Fix AsyncMessagingTemplateTests for time race condition
1 parent 6a548b7 commit 90f06b1

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

spring-integration-core/src/test/java/org/springframework/integration/core/AsyncMessagingTemplateTests.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
/**
4545
* @author Mark Fisher
4646
* @author Artem Bilan
47-
*
4847
* @since 2.0
4948
*/
5049
public class AsyncMessagingTemplateTests {
@@ -149,8 +148,8 @@ public void asyncReceiveWithDefaultChannel() throws Exception {
149148
AsyncMessagingTemplate template = new AsyncMessagingTemplate();
150149
template.setDefaultDestination(channel);
151150
Future<Message<?>> result = template.asyncReceive();
152-
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
153151
long start = System.currentTimeMillis();
152+
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
154153
assertThat(result.get(100000, TimeUnit.MILLISECONDS)).isNotNull();
155154
long elapsed = System.currentTimeMillis() - start;
156155
assertThat(result.get().getPayload()).isEqualTo("test");
@@ -162,8 +161,8 @@ public void asyncReceiveWithExplicitChannel() throws Exception {
162161
QueueChannel channel = new QueueChannel();
163162
AsyncMessagingTemplate template = new AsyncMessagingTemplate();
164163
Future<Message<?>> result = template.asyncReceive(channel);
165-
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
166164
long start = System.currentTimeMillis();
165+
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
167166
assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull();
168167
long elapsed = System.currentTimeMillis() - start;
169168
assertThat(result.get().getPayload()).isEqualTo("test");
@@ -179,8 +178,8 @@ public void asyncReceiveWithResolvedChannel() throws Exception {
179178
AsyncMessagingTemplate template = new AsyncMessagingTemplate();
180179
template.setBeanFactory(context);
181180
Future<Message<?>> result = template.asyncReceive("testChannel");
182-
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
183181
long start = System.currentTimeMillis();
182+
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
184183
assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull();
185184
long elapsed = System.currentTimeMillis() - start;
186185

@@ -202,8 +201,8 @@ public void asyncReceiveAndConvertWithDefaultChannel() throws Exception {
202201
AsyncMessagingTemplate template = new AsyncMessagingTemplate();
203202
template.setDefaultDestination(channel);
204203
Future<?> result = template.asyncReceiveAndConvert();
205-
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
206204
long start = System.currentTimeMillis();
205+
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
207206
assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull();
208207
long elapsed = System.currentTimeMillis() - start;
209208
assertThat(result.get()).isEqualTo("test");
@@ -216,8 +215,8 @@ public void asyncReceiveAndConvertWithExplicitChannel() throws Exception {
216215
QueueChannel channel = new QueueChannel();
217216
AsyncMessagingTemplate template = new AsyncMessagingTemplate();
218217
Future<?> result = template.asyncReceiveAndConvert(channel);
219-
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
220218
long start = System.currentTimeMillis();
219+
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
221220
assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull();
222221
long elapsed = System.currentTimeMillis() - start;
223222
assertThat(result.get()).isEqualTo("test");
@@ -234,8 +233,8 @@ public void asyncReceiveAndConvertWithResolvedChannel() throws Exception {
234233
AsyncMessagingTemplate template = new AsyncMessagingTemplate();
235234
template.setBeanFactory(context);
236235
Future<?> result = template.asyncReceiveAndConvert("testChannel");
237-
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
238236
long start = System.currentTimeMillis();
237+
sendMessageAfterDelay(channel, new GenericMessage<>("test"), 200);
239238
assertThat(result.get(10000, TimeUnit.MILLISECONDS)).isNotNull();
240239
long elapsed = System.currentTimeMillis() - start;
241240

@@ -435,15 +434,15 @@ public void cancellationException() throws Throwable {
435434
private static void sendMessageAfterDelay(MessageChannel channel, GenericMessage<String> message, int delay) {
436435
ExecutorService executorService = Executors.newSingleThreadExecutor();
437436
executorService.execute(() -> {
438-
try {
439-
Thread.sleep(delay);
440-
}
441-
catch (InterruptedException e) {
442-
Thread.currentThread().interrupt();
443-
return;
444-
}
445-
channel.send(message);
446-
});
437+
try {
438+
Thread.sleep(delay);
439+
}
440+
catch (InterruptedException e) {
441+
Thread.currentThread().interrupt();
442+
return;
443+
}
444+
channel.send(message);
445+
});
447446
executorService.shutdown();
448447
}
449448

0 commit comments

Comments
 (0)