Skip to content

Commit 5dce7bd

Browse files
committed
EmbeddedHeadersJsonMessageMapperTests: race condition
The `EmbeddedHeadersJsonMessageMapperTests.testEmbedSome` does not embed a `timestamp` header. To see that in action, add a short `Thread.sleep(2);` between `encode` and `decode` operations. Otherwise, there is no guarantee that the system clock might not produce the same timestamp for a new message in the `EmbeddedHeadersJsonMessageMapper.toMessage()`
1 parent d60fc95 commit 5dce7bd

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

spring-integration-core/src/test/java/org/springframework/integration/support/json/EmbeddedHeadersJsonMessageMapperTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
/**
3434
* @author Jooyoung Pyoung
35+
* @author Artem Bilan
3536
*
3637
* @since 7.0
3738
*/
@@ -45,10 +46,12 @@ public void testEmbedAll() {
4546
}
4647

4748
@Test
48-
public void testEmbedSome() {
49+
public void testEmbedSome() throws InterruptedException {
4950
EmbeddedHeadersJsonMessageMapper mapper = new EmbeddedHeadersJsonMessageMapper(MessageHeaders.ID);
5051
GenericMessage<String> message = new GenericMessage<>("foo");
5152
byte[] encodedMessage = mapper.fromMessage(message);
53+
// some delay for a fresh timestamp on a decoded message
54+
Thread.sleep(2);
5255
Message<?> decoded = mapper.toMessage(encodedMessage);
5356
assertThat(decoded.getPayload()).isEqualTo(message.getPayload());
5457
assertThat(decoded.getHeaders().getTimestamp()).isNotEqualTo(message.getHeaders().getTimestamp());

0 commit comments

Comments
 (0)