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() {