From e9a0149030f6229f650d3df99d6f7341f6bbf724 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Sat, 25 Apr 2020 13:20:57 -0400 Subject: [PATCH] Fix race in TCP async gateway test --- .../ip/tcp/TcpOutboundGatewayTests.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java index 3860b2b932..5c2fcedfce 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java @@ -981,12 +981,27 @@ public class TcpOutboundGatewayTests { gateway.afterPropertiesSet(); gateway.handleMessage(MessageBuilder.withPayload("Test1").build()); gateway.handleMessage(MessageBuilder.withPayload("Test2").build()); - Message reply = replyChannel.receive(10000); - assertThat(reply).isNotNull(); - assertThat(reply.getPayload()).isEqualTo("reply1".getBytes()); - reply = replyChannel.receive(10000); - assertThat(reply).isNotNull(); - assertThat(reply.getPayload()).isEqualTo("reply2".getBytes()); + Message reply1 = replyChannel.receive(10000); + assertThat(reply1).isNotNull(); + if (singleUse) { + assertThat(reply1.getPayload()).satisfiesAnyOf( + payload -> assertThat(payload).isEqualTo("reply1".getBytes()), + payload -> assertThat(payload).isEqualTo("reply2".getBytes())); + } + else { + assertThat(reply1.getPayload()).isEqualTo("reply1".getBytes()); + } + Message reply2 = replyChannel.receive(10000); + assertThat(reply2).isNotNull(); + if (singleUse) { + assertThat(reply1.getPayload()).satisfiesAnyOf( + payload -> assertThat(payload).isEqualTo("reply1".getBytes()), + payload -> assertThat(payload).isEqualTo("reply2".getBytes())); + assertThat(reply1.getPayload()).isNotEqualTo(reply2.getPayload()); + } + else { + assertThat(reply2.getPayload()).isEqualTo("reply2".getBytes()); + } assertThat(thread.get()).isNotSameAs(Thread.currentThread()); } finally {