diff --git a/.circleci/config.yml b/.circleci/config.yml index 83c81c6..a63c713 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,12 +8,15 @@ jobs: - checkout - run: name: Analyze on SonarCloud - command: mvn verify sonar:sonar + command: mvn verify sonar:sonar -DskipTests executors: - jdk: - docker: - - image: 'cimg/openjdk:21.0.6' + machine_executor_amd64: + machine: + image: ubuntu-2204:current + environment: + architecture: "amd64" + platform: "linux/amd64" orbs: maven: circleci/maven@2.0.0 @@ -22,6 +25,6 @@ workflows: maven_test: jobs: - maven/test: - executor: jdk + executor: machine_executor_amd64 - build: context: SonarCloud \ No newline at end of file diff --git a/account-service/pom.xml b/account-service/pom.xml index 00b3707..400f139 100644 --- a/account-service/pom.xml +++ b/account-service/pom.xml @@ -34,9 +34,13 @@ logstash-logback-encoder 8.0 + + io.projectreactor + reactor-core-micrometer + io.micrometer - micrometer-tracing-bridge-otel + micrometer-tracing-bridge-brave org.springframework.boot diff --git a/account-service/src/test/java/pl/piomin/services/account/OrderReceiverTest.java b/account-service/src/test/java/pl/piomin/services/account/OrderReceiverTest.java index fe7eee7..9ffa6bf 100644 --- a/account-service/src/test/java/pl/piomin/services/account/OrderReceiverTest.java +++ b/account-service/src/test/java/pl/piomin/services/account/OrderReceiverTest.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.stream.binder.test.EnableTestBinder; import org.springframework.cloud.stream.binder.test.InputDestination; import org.springframework.cloud.stream.binder.test.OutputDestination; import org.springframework.integration.support.MessageBuilder; @@ -20,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableTestBinder public class OrderReceiverTest { private static final Logger LOGGER = LoggerFactory.getLogger(OrderReceiverTest.class); diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3b95b1d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +version: "3.7" +services: + rabbitmq: + container_name: rabbitmq + image: rabbitmq:4 + ports: + - "5672:5672" \ No newline at end of file diff --git a/order-service/pom.xml b/order-service/pom.xml index b703e49..6d12090 100644 --- a/order-service/pom.xml +++ b/order-service/pom.xml @@ -17,6 +17,10 @@ org.springframework.cloud spring-cloud-stream + + org.springframework.cloud + spring-cloud-starter-stream-rabbit + org.springframework.boot spring-boot-starter-web @@ -25,6 +29,10 @@ org.springframework.boot spring-boot-starter-actuator + + io.projectreactor + reactor-core-micrometer + net.logstash.logback logstash-logback-encoder @@ -32,7 +40,7 @@ io.micrometer - micrometer-tracing-bridge-otel + micrometer-tracing-bridge-brave org.springframework.boot @@ -49,6 +57,21 @@ messaging-common ${project.version} + + org.testcontainers + rabbitmq + test + + + org.springframework.boot + spring-boot-testcontainers + test + + + org.testcontainers + junit-jupiter + test + diff --git a/order-service/src/test/java/pl/piomin/services/order/OrderControllerTest.java b/order-service/src/test/java/pl/piomin/services/order/OrderControllerTest.java index a61b1fd..edb616d 100644 --- a/order-service/src/test/java/pl/piomin/services/order/OrderControllerTest.java +++ b/order-service/src/test/java/pl/piomin/services/order/OrderControllerTest.java @@ -4,6 +4,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.testcontainers.containers.RabbitMQContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; import pl.piomin.services.messaging.Order; import pl.piomin.services.messaging.OrderStatus; @@ -14,11 +18,17 @@ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@Testcontainers public class OrderControllerTest { @Autowired TestRestTemplate template; + @Container + @ServiceConnection + static final RabbitMQContainer rabbit = new RabbitMQContainer("rabbitmq:4") + .withExposedPorts(5672); + @Test public void testOrder() throws InterruptedException { Order order = new Order(); diff --git a/pom.xml b/pom.xml index 39093da..4dcb793 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ 21 + 1.21.0 piomin_sample-message-driven-microservices piomin https://sonarcloud.io @@ -16,7 +17,7 @@ org.springframework.boot spring-boot-starter-parent - 3.3.5 + 3.4.3 @@ -25,7 +26,14 @@ org.springframework.cloud spring-cloud-dependencies - 2023.0.1 + 2024.0.1 + pom + import + + + org.testcontainers + testcontainers-bom + ${testcontainers.version} pom import diff --git a/product-service/pom.xml b/product-service/pom.xml index 24c795c..fbae578 100644 --- a/product-service/pom.xml +++ b/product-service/pom.xml @@ -28,7 +28,11 @@ io.micrometer - micrometer-tracing-bridge-otel + micrometer-tracing-bridge-brave + + + io.projectreactor + reactor-core-micrometer org.springframework.boot diff --git a/product-service/src/test/java/pl/piomin/services/product/OrderReceiverTest.java b/product-service/src/test/java/pl/piomin/services/product/OrderReceiverTest.java index b2b6495..96ba257 100644 --- a/product-service/src/test/java/pl/piomin/services/product/OrderReceiverTest.java +++ b/product-service/src/test/java/pl/piomin/services/product/OrderReceiverTest.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.stream.binder.test.EnableTestBinder; import org.springframework.cloud.stream.binder.test.InputDestination; import org.springframework.cloud.stream.binder.test.OutputDestination; import org.springframework.integration.support.MessageBuilder; @@ -20,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableTestBinder public class OrderReceiverTest { private static final Logger LOGGER = LoggerFactory.getLogger(OrderReceiverTest.class);