Rework ZeroMQMH test for Awaitility

Turns out PUB socket doesn't care if there are subscribers to it or not.
The sent message may be just lost in between.

* Resend message in the test until it is received by subscriber
* Use `await().untilAsserted()` to iterate the logic at most 10 seconds
This commit is contained in:
Artem Bilan
2021-06-22 11:36:27 -04:00
parent dfd577596e
commit cd7465a370

View File

@@ -100,27 +100,18 @@ public class ZeroMqMessageHandlerTests {
messageHandler.setMessageMapper(new EmbeddedJsonHeadersMessageMapper());
messageHandler.afterPropertiesSet();
ZMQ.Poller poller = CONTEXT.createPoller(1);
poller.register(subSocket, ZMQ.Poller.POLLIN);
Message<?> testMessage = MessageBuilder.withPayload("test").setHeader("topic", "testTopic").build();
messageHandler.handleMessage(testMessage).subscribe();
while (true) {
poller.poll(10000);
if (poller.pollin(0)) {
ZMsg msg = ZMsg.recvMsg(subSocket);
assertThat(msg).isNotNull();
assertThat(msg.unwrap().getString(ZMQ.CHARSET)).isEqualTo("testTopic");
Message<?> capturedMessage = new EmbeddedJsonHeadersMessageMapper().toMessage(msg.getFirst().getData());
assertThat(capturedMessage).isEqualTo(testMessage);
msg.destroy();
break;
}
}
await().untilAsserted(() -> {
messageHandler.handleMessage(testMessage).subscribe();
ZMsg msg = ZMsg.recvMsg(subSocket);
assertThat(msg).isNotNull();
assertThat(msg.unwrap().getString(ZMQ.CHARSET)).isEqualTo("testTopic");
Message<?> capturedMessage = new EmbeddedJsonHeadersMessageMapper().toMessage(msg.getFirst().getData());
assertThat(capturedMessage).isEqualTo(testMessage);
msg.destroy();
});
poller.unregister(subSocket);
poller.close();
messageHandler.destroy();
subSocket.close();
}