diff --git a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/KafkaTimeSourceTests.java b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/KafkaTimeSourceTests.java index dfacfa3f..d0ae307d 100644 --- a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/KafkaTimeSourceTests.java +++ b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/KafkaTimeSourceTests.java @@ -16,41 +16,12 @@ package org.springframework.cloud.stream.app.integration.test.source.time; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.testcontainers.junit.jupiter.Container; - -import org.springframework.cloud.stream.app.test.integration.StreamAppContainer; -import org.springframework.cloud.stream.app.test.integration.StreamAppContainerTestUtils; +import org.springframework.cloud.stream.app.integration.test.common.Configuration; +import org.springframework.cloud.stream.app.test.integration.junit.jupiter.KafkaBaseContainer; import org.springframework.cloud.stream.app.test.integration.junit.jupiter.KafkaStreamAppTest; -import org.springframework.cloud.stream.app.test.integration.kafka.KafkaStreamAppContainer; -import org.springframework.http.HttpStatus; -import org.springframework.web.reactive.function.client.ClientResponse; -import org.springframework.web.reactive.function.client.WebClient; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.cloud.stream.app.integration.test.common.Configuration.VERSION; @KafkaStreamAppTest +@KafkaBaseContainer(name = "time-source-kafka", versionSupplier = Configuration.VersionSupplier.class) class KafkaTimeSourceTests extends TimeSourceTests { - @Container - static StreamAppContainer source = new KafkaStreamAppContainer(StreamAppContainerTestUtils - .imageName(StreamAppContainerTestUtils.SPRINGCLOUDSTREAM_REPOSITOTRY, "time-source-kafka", VERSION)) - .withCommand("--server.port", "8080") - .withExposedPorts(8080); - - @Test - @Disabled - void testActuator() { - WebClient webClient = WebClient.create(); - ClientResponse response = webClient.get() - .uri("http://localhost:" + source.getMappedPort(8080) + "/actuator/health").exchange().block(); - assertThat(response.statusCode()).isEqualTo(HttpStatus.OK); - response = webClient.get().uri("http://localhost:" + source.getMappedPort(8080) + "/actuator/info").exchange() - .block(); - assertThat(response.statusCode()).isEqualTo(HttpStatus.OK); - - } - } diff --git a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/RabbitMQTimeSourceTests.java b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/RabbitMQTimeSourceTests.java index e56a1d72..981cca60 100644 --- a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/RabbitMQTimeSourceTests.java +++ b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/RabbitMQTimeSourceTests.java @@ -16,21 +16,12 @@ package org.springframework.cloud.stream.app.integration.test.source.time; -import org.testcontainers.junit.jupiter.Container; - -import org.springframework.cloud.stream.app.test.integration.StreamAppContainer; -import org.springframework.cloud.stream.app.test.integration.StreamAppContainerTestUtils; +import org.springframework.cloud.stream.app.integration.test.common.Configuration; +import org.springframework.cloud.stream.app.test.integration.junit.jupiter.RabbitMQBaseContainer; import org.springframework.cloud.stream.app.test.integration.junit.jupiter.RabbitMQStreamAppTest; -import org.springframework.cloud.stream.app.test.integration.rabbitmq.RabbitMQStreamAppContainer; - -import static org.springframework.cloud.stream.app.integration.test.common.Configuration.VERSION; @RabbitMQStreamAppTest - +@RabbitMQBaseContainer(name = "time-source-rabbit", versionSupplier = Configuration.VersionSupplier.class) class RabbitMQTimeSourceTests extends TimeSourceTests { - @Container - static StreamAppContainer source = new RabbitMQStreamAppContainer(StreamAppContainerTestUtils - .imageName(StreamAppContainerTestUtils.SPRINGCLOUDSTREAM_REPOSITOTRY, "time-source-rabbit", VERSION)); - } diff --git a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/TimeSourceTests.java b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/TimeSourceTests.java index c103173f..adb8fd17 100644 --- a/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/TimeSourceTests.java +++ b/applications/stream-applications-integration-tests/src/test/java/org/springframework/cloud/stream/app/integration/test/source/time/TimeSourceTests.java @@ -18,18 +18,31 @@ package org.springframework.cloud.stream.app.integration.test.source.time; import java.util.regex.Pattern; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.testcontainers.containers.wait.strategy.Wait; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.stream.app.test.integration.OutputMatcher; +import org.springframework.cloud.stream.app.test.integration.StreamAppContainer; +import org.springframework.cloud.stream.app.test.integration.junit.jupiter.BaseContainerExtension; +import org.springframework.http.HttpStatus; +import org.springframework.web.reactive.function.client.WebClient; +import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.springframework.cloud.stream.app.integration.test.common.Configuration.DEFAULT_DURATION; + @Tag("integration") +@ExtendWith(BaseContainerExtension.class) abstract class TimeSourceTests { + static StreamAppContainer source; + // "MM/dd/yy HH:mm:ss"; private final static Pattern pattern = Pattern.compile(".*\\d{2}/\\d{2}/\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}"); @@ -42,8 +55,50 @@ abstract class TimeSourceTests { .until(outputMatcher.payloadMatches((String s) -> pattern.matcher(s).matches())); } + @BeforeAll + static void configureSource() { + source = BaseContainerExtension.containerInstance() + .withExposedPorts(8080) + .waitingFor(Wait.forLogMessage(".*Started TimeSource.*", 1)); + source.start(); + } + + @Test + void testActuator() { + WebClient webClient = WebClient.create(); + webClient.get() + .uri("http://localhost:" + source.getMappedPort(8080) + "/actuator/health") + .exchangeToMono(response -> { + assertThat(response.statusCode()).isEqualTo(HttpStatus.OK); + return response.toBodilessEntity(); + }).block(); + webClient.get() + .uri("http://localhost:" + source.getMappedPort(8080) + "/actuator/info") + .exchangeToMono(response -> { + assertThat(response.statusCode()).isEqualTo(HttpStatus.OK); + return response.toBodilessEntity(); + }).block(); + webClient.get() + .uri("http://localhost:" + source.getMappedPort(8080) + "/actuator/bindings") + .exchangeToMono(response -> { + assertThat(response.statusCode()).isEqualTo(HttpStatus.OK); + return response.toBodilessEntity(); + }).block(); + webClient.get() + .uri("http://localhost:" + source.getMappedPort(8080) + "/actuator/env") + .exchangeToMono(response -> { + assertThat(response.statusCode()).isEqualTo(HttpStatus.NOT_FOUND); + return response.toBodilessEntity(); + }).block(); + } + @AfterEach void cleanUp() { outputMatcher.clearMessageMatchers(); } + + @AfterAll + static void stop() { + source.stop(); + } }