public abstract class AbstractHandoverIT
{
static final ParameterizedTypeReference<ServerSentEvent<String>> SSE_TYPE = new ParameterizedTypeReference<>() {};
+ static final int NUM_CHATROOMS = 23;
private final AbstractHandoverITContainers containers;
@Test
void test() throws InterruptedException
{
- ChatRoomInfoTo chatRoom = createChatRoom("bar").block();
+ ChatRoomInfoTo[] chatRooms = Flux
+ .range(0, NUM_CHATROOMS)
+ .flatMap(i -> createChatRoom("#" + i))
+ .toStream()
+ .toArray(size -> new ChatRoomInfoTo[size]);
+
TestClient testClient = new TestClient(
containers.haproxy.getMappedPort(8400),
- chatRoom,
+ chatRooms,
"nerd");
testClient.run();
- receiveMessages(chatRoom)
- .take(100)
+ Flux
+ .fromArray(chatRooms)
+ .flatMap(chatRoom ->receiveMessages(chatRoom).take(100))
.doOnNext(message -> log.info("message: {}", message))
.then()
.block();
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;
+import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.util.retry.Retry;
import java.time.Duration;
-import java.util.stream.IntStream;
@Slf4j
{
public void run()
{
- IntStream
- .rangeClosed(1,100)
- .mapToObj(i ->sendMessage(chatRoom, "Message #" + i))
- .map(result -> result
- .map(MessageTo::toString)
- .retryWhen(Retry.fixedDelay(10, Duration.ofSeconds(1)))
- .block())
- .forEach(result -> log.info("{}", result));
+ Flux
+ .range(1, 100)
+ .flatMap(i -> Flux
+ .fromArray(chatRooms)
+ .map(chatRoom -> sendMessage(chatRoom, "Message #" + i))
+ .flatMap(result -> result
+ .map(MessageTo::toString)
+ .retryWhen(Retry.fixedDelay(10, Duration.ofSeconds(1)))))
+ .subscribe(result -> log.info("{}", result));
}
private Mono<MessageTo> sendMessage(
private final WebClient webClient;
- private final ChatRoomInfoTo chatRoom;
+ private final ChatRoomInfoTo[] chatRooms;
private final User user;
- TestClient(Integer port, ChatRoomInfoTo chatRoom, String username)
+ TestClient(Integer port, ChatRoomInfoTo[] chatRooms, String username)
{
webClient = WebClient.create("http://localhost:" + port);
- this.chatRoom = chatRoom;
+ this.chatRooms = chatRooms;
user = new User(username);
}
}