From c1a0c554879634e6ec601a5e37953d6686f8cf3e Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Tue, 27 Feb 2024 11:28:47 +0100 Subject: [PATCH] WIP:test: HandoverIT-POC - splitted up code into smaller classes -- ALIGN --- .../juplo/kafka/chat/backend/HandoverIT.java | 36 ++++++++++--------- .../juplo/kafka/chat/backend/TestClient.java | 36 ------------------- 2 files changed, 19 insertions(+), 53 deletions(-) diff --git a/src/test/java/de/juplo/kafka/chat/backend/HandoverIT.java b/src/test/java/de/juplo/kafka/chat/backend/HandoverIT.java index ddecf60b..3e662c5a 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/HandoverIT.java +++ b/src/test/java/de/juplo/kafka/chat/backend/HandoverIT.java @@ -5,12 +5,13 @@ 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.core.ParameterizedTypeReference; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.codec.ServerSentEvent; 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.Flux; import reactor.core.publisher.Mono; import reactor.util.retry.Retry; @@ -22,6 +23,9 @@ import java.util.stream.IntStream; @Slf4j public abstract class AbstractHandoverIT { + static final ParameterizedTypeReference> SSE_TYPE = new ParameterizedTypeReference<>() {}; + + private final AbstractContainerTemplates containerTemplates; @@ -35,15 +39,6 @@ public abstract class AbstractHandoverIT 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) @@ -52,10 +47,6 @@ public abstract class AbstractHandoverIT .block(); } - final Network network = Network.newNetwork(); - - GenericContainer haproxy, backend1, backend2, backend3; - Mono createChatRoom(String name) { return webClient @@ -77,6 +68,18 @@ public abstract class AbstractHandoverIT }); } + Flux> receiveMessages(ChatRoomInfoTo chatRoom) + { + return webClient + .get() + .uri( + "/{chatRoomId}/listen", + chatRoom.getId()) + .accept(MediaType.TEXT_EVENT_STREAM) + .retrieve() + .bodyToFlux(SSE_TYPE); + } + WebClient webClient; @@ -85,8 +88,7 @@ public abstract class AbstractHandoverIT { containerTemplates.setUp(); - - Integer port = haproxy.getMappedPort(8400); + Integer port = containerTemplates.haproxy.getMappedPort(8400); webClient = WebClient.create("http://localhost:" + port); } } diff --git a/src/test/java/de/juplo/kafka/chat/backend/TestClient.java b/src/test/java/de/juplo/kafka/chat/backend/TestClient.java index 9a407f3c..60a3e813 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/TestClient.java +++ b/src/test/java/de/juplo/kafka/chat/backend/TestClient.java @@ -15,30 +15,6 @@ import reactor.core.publisher.Mono; @Slf4j public class TestClient { - static final ParameterizedTypeReference> SSE_TYPE = new ParameterizedTypeReference<>() {}; - - - 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(); - } - }); - } - Mono sendMessage( ChatRoomInfoTo chatRoom, User user, @@ -67,18 +43,6 @@ public class TestClient }); } - Flux> receiveMessages(ChatRoomInfoTo chatRoom) - { - return webClient - .get() - .uri( - "/{chatRoomId}/listen", - chatRoom.getId()) - .accept(MediaType.TEXT_EVENT_STREAM) - .retrieve() - .bodyToFlux(SSE_TYPE); - } - private final WebClient webClient; -- 2.20.1