From ae72a5b62bab92f6eea8d93c9f255e9e533641cf Mon Sep 17 00:00:00 2001 From: Robert McNees <86265089+robertmcnees@users.noreply.github.com> Date: Mon, 15 Nov 2021 14:49:16 -0500 Subject: [PATCH] Modified usage of Redis containers for tests (#1971) Changed CircleCI configuration to machine. Added new build profile to skip Docker tests. --- .circleci/config.yml | 22 +++++---- pom.xml | 21 +++++++++ spring-cloud-config-server/pom.xml | 5 +- ...EnvironmentRepositoryIntegrationTests.java | 46 +++++++++---------- 4 files changed, 57 insertions(+), 37 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c21397c9..3b543c18 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,9 +1,11 @@ version: 2 jobs: build: - docker: - - image: springcloud/pipeline-base - user: appuser + machine: + image: ubuntu-2004:202107-02 +# docker: +# - image: springcloud/pipeline-base +# user: appuser environment: _JAVA_OPTIONS: "-Xms1024m -Xmx2048m" TERM: dumb @@ -12,18 +14,18 @@ jobs: - gh-pages # list of branches to ignore steps: - checkout - - restore_cache: - key: sc-config-{{ .Branch }} +# - restore_cache: +# key: sc-config-{{ .Branch }} - run: name: "Download dependencies" command: ./mvnw -s .settings.xml -U --fail-never dependency:go-offline || true - - save_cache: - key: sc-config-{{ .Branch }} - paths: - - ~/.m2 +# - save_cache: +# key: sc-config-{{ .Branch }} +# paths: +# - ~/.m2 - run: name: "Running build" - command: ./mvnw -s .settings.xml clean org.jacoco:jacoco-maven-plugin:prepare-agent install -U -P sonar -nsu --batch-mode -Dmaven.test.redirectTestOutputToFile=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + command: ./mvnw -s .settings.xml clean org.jacoco:jacoco-maven-plugin:prepare-agent install -U -P sonar,withoutDockerTests -nsu --batch-mode -Dmaven.test.redirectTestOutputToFile=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn - run: name: "Aggregate test results" when: always diff --git a/pom.xml b/pom.xml index b2761cf8..5f587558 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,7 @@ 3.1.0-SNAPSHOT 1.11.911 v1-rev20201112-1.30.10 + 1.15.1 2.31.0 true true @@ -110,6 +111,13 @@ v1-rev20200210-1.30.9 + org.testcontainers + testcontainers-bom + ${testcontainers.version} + pom + import + + com.github.tomakehurst wiremock-jre8 ${wiremock.version} @@ -222,6 +230,19 @@ + + withoutDockerTests + + + + maven-surefire-plugin + + DockerRequired + + + + + diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index ecda4b1c..21268590 100644 --- a/spring-cloud-config-server/pom.xml +++ b/spring-cloud-config-server/pom.xml @@ -164,9 +164,8 @@ test - it.ozimov - embedded-redis - 0.7.3 + org.testcontainers + junit-jupiter test diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/RedisEnvironmentRepositoryIntegrationTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/RedisEnvironmentRepositoryIntegrationTests.java index ce3e1c09..1dc19b69 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/RedisEnvironmentRepositoryIntegrationTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/RedisEnvironmentRepositoryIntegrationTests.java @@ -16,44 +16,42 @@ package org.springframework.cloud.config.server.environment; -import java.io.IOException; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import redis.embedded.RedisServer; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.config.environment.Environment; import org.springframework.data.redis.core.BoundHashOperations; import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import static org.assertj.core.api.Assertions.assertThat; -@RunWith(SpringRunner.class) -@DataRedisTest(properties = "spring.redis.port=6378") +@SpringBootTest +@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) @ActiveProfiles("redis") +@Testcontainers +@Tag("DockerRequired") public class RedisEnvironmentRepositoryIntegrationTests { - private RedisServer redisServer; - - @Before - public void startRedis() throws IOException { - redisServer = new RedisServer(6378); - redisServer.start(); - } - - @After - public void stopRedis() { - redisServer.stop(); - } + @Container + public static GenericContainer redisContainer = new GenericContainer<>("redis:5.0.9-alpine").withExposedPorts(6379); @Autowired - StringRedisTemplate redis; + private StringRedisTemplate redis; + + @DynamicPropertySource + static void containerProperties(DynamicPropertyRegistry registry) { + registry.add("spring.redis.host", redisContainer::getContainerIpAddress); + registry.add("spring.redis.port", redisContainer::getFirstMappedPort); + } @Test public void test() {