diff --git a/consumer/websocket-consumer/src/test/java/org/springframework/cloud/fn/consumer/websocket/WebsocketConsumerTests.java b/consumer/websocket-consumer/src/test/java/org/springframework/cloud/fn/consumer/websocket/WebsocketConsumerTests.java index d98c16f7..d3ae375a 100644 --- a/consumer/websocket-consumer/src/test/java/org/springframework/cloud/fn/consumer/websocket/WebsocketConsumerTests.java +++ b/consumer/websocket-consumer/src/test/java/org/springframework/cloud/fn/consumer/websocket/WebsocketConsumerTests.java @@ -16,12 +16,14 @@ package org.springframework.cloud.fn.consumer.websocket; +import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.function.Consumer; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -80,12 +82,19 @@ public class WebsocketConsumerTests { public void testMultipleMessageSingleSubscriber() throws Exception { WebsocketConsumerClientHandler handler = new WebsocketConsumerClientHandler("handler_0", MESSAGE_COUNT, TIMEOUT); doHandshake(handler); - List messagesToSend = submitMultipleMessages(MESSAGE_COUNT); - handler.await(); + List received = new ArrayList<>(); + Awaitility.await() + .atMost(Duration.ofSeconds(10)) + .until(() -> { + handler.await(); + received.addAll(handler.getReceivedMessages()); + return received.size() == MESSAGE_COUNT; + } + ); - assertThat(handler.getReceivedMessages().size()).isEqualTo(MESSAGE_COUNT); - messagesToSend.forEach(s -> assertThat(handler.getReceivedMessages().contains(s)).isTrue()); + assertThat(received.size()).isEqualTo(MESSAGE_COUNT); + messagesToSend.forEach(s -> assertThat(received.contains(s)).isTrue()); } @Test