Improve MetricsTest#testBroadcastMessage to avoid race when the metrics has not yet fully published the collected metrics which are asserted

This commit is contained in:
Julien Viet
2019-11-15 13:01:28 +01:00
parent d84bc2c99e
commit ba74b71985

View File

@@ -108,8 +108,7 @@ public class MetricsTest extends VertxTestBase {
AtomicInteger receiveCount = new AtomicInteger();
for (Vertx vertx : to) {
MessageConsumer<Object> consumer = vertx.eventBus().consumer(ADDRESS1);
consumer.completionHandler(done -> {
assertTrue(done.succeeded());
consumer.completionHandler(onSuccess(v -> {
if (broadcastCount.incrementAndGet() == to.length) {
String msg = TestUtils.randomAlphaString(10);
if (publish) {
@@ -118,14 +117,15 @@ public class MetricsTest extends VertxTestBase {
from.eventBus().send(ADDRESS1, msg);
}
}
});
}));
consumer.handler(msg -> {
if (receiveCount.incrementAndGet() == to.length) {
assertEquals(new HashSet<>(Arrays.asList(expected)), new HashSet<>(eventBusMetrics.getSentMessages()));
testComplete();
}
});
}
waitUntil(() -> eventBusMetrics.getSentMessages().size() == expected.length);
assertEquals(new HashSet<>(Arrays.asList(expected)), new HashSet<>(eventBusMetrics.getSentMessages()));
await();
}