From: Kai Moritz Date: Tue, 27 Feb 2024 10:24:52 +0000 (+0100) Subject: WIP:test: HandoverIT-POC - splitted up code into smaller classes -- ALIGN X-Git-Tag: rebase--2024-02-27--11-55~7 X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=cdcafddd06f87203c126de75d2d961b38563e0e5;p=demos%2Fkafka%2Fchat WIP:test: HandoverIT-POC - splitted up code into smaller classes -- ALIGN --- diff --git a/src/test/java/de/juplo/kafka/chat/backend/AbstractHandoverIT.java b/src/test/java/de/juplo/kafka/chat/backend/AbstractHandoverIT.java index 2665cb61..ddecf60b 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/AbstractHandoverIT.java +++ b/src/test/java/de/juplo/kafka/chat/backend/AbstractHandoverIT.java @@ -1,8 +1,21 @@ package de.juplo.kafka.chat.backend; +import de.juplo.kafka.chat.backend.api.ChatRoomInfoTo; +import de.juplo.kafka.chat.backend.api.MessageTo; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.client.WebClient; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.Network; import org.testcontainers.junit.jupiter.Testcontainers; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.stream.IntStream; @Testcontainers @@ -18,9 +31,62 @@ public abstract class AbstractHandoverIT } + @Test + void test() throws InterruptedException + { + ChatRoomInfoTo chatRoom = createChatRoom("bar").block(); + User user = new User("nerd"); + IntStream + .rangeClosed(1,100) + .mapToObj(i ->sendMessage(chatRoom, user, "Message #" + i)) + .map(result -> result + .map(MessageTo::toString) + .retryWhen(Retry.fixedDelay(10, Duration.ofSeconds(1))) + .block()) + .forEach(result -> log.info("{}", result)); + + receiveMessages(chatRoom) + .take(100) + .doOnNext(message -> log.info("message: {}", message)) + .then() + .block(); + } + + final Network network = Network.newNetwork(); + + GenericContainer haproxy, backend1, backend2, backend3; + + Mono createChatRoom(String name) + { + return webClient + .post() + .uri("/create") + .contentType(MediaType.TEXT_PLAIN) + .bodyValue(name) + .accept(MediaType.APPLICATION_JSON) + .exchangeToMono(response -> + { + if (response.statusCode().equals(HttpStatus.OK)) + { + return response.bodyToMono(ChatRoomInfoTo.class); + } + else + { + return response.createError(); + } + }); + } + + + WebClient webClient; + @BeforeEach void setUp() throws Exception { containerTemplates.setUp(); + + + Integer port = haproxy.getMappedPort(8400); + webClient = WebClient.create("http://localhost:" + port); } }