diff --git a/redis/example/pom.xml b/redis/example/pom.xml
index 2dc044e7..6437e84e 100644
--- a/redis/example/pom.xml
+++ b/redis/example/pom.xml
@@ -15,9 +15,13 @@
- ${project.groupId}
- spring-data-redis-example-utils
- ${project.version}
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.springframework
+ spring-test
test
diff --git a/redis/example/src/test/java/example/springdata/redis/RedisTestConfiguration.java b/redis/example/src/test/java/example/springdata/redis/RedisTestConfiguration.java
index 94cd96c3..c7eff431 100644
--- a/redis/example/src/test/java/example/springdata/redis/RedisTestConfiguration.java
+++ b/redis/example/src/test/java/example/springdata/redis/RedisTestConfiguration.java
@@ -15,11 +15,11 @@
*/
package example.springdata.redis;
-import jakarta.annotation.PreDestroy;
-
-import org.springframework.beans.factory.annotation.Autowired;
+import com.redis.testcontainers.RedisContainer;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.springframework.context.annotation.Bean;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
@@ -27,12 +27,9 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
@SpringBootApplication
public class RedisTestConfiguration {
- @Autowired RedisConnectionFactory factory;
-
- /**
- * Clear database before shut down.
- */
- public @PreDestroy void flushTestDb() {
- factory.getConnection().flushDb();
+ @Bean
+ @ServiceConnection(name = "redis")
+ RedisContainer redisContainer() {
+ return new RedisContainer(DockerImageName.parse("redis:7"));
}
}
diff --git a/redis/example/src/test/java/example/springdata/redis/commands/GeoOperationsTests.java b/redis/example/src/test/java/example/springdata/redis/commands/GeoOperationsTests.java
index d70f4610..613ff6f7 100644
--- a/redis/example/src/test/java/example/springdata/redis/commands/GeoOperationsTests.java
+++ b/redis/example/src/test/java/example/springdata/redis/commands/GeoOperationsTests.java
@@ -15,13 +15,10 @@
*/
package example.springdata.redis.commands;
-import static org.assertj.core.api.Assertions.*;
-
-import example.springdata.redis.test.condition.EnabledOnCommand;
+import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.geo.Circle;
@@ -37,7 +34,6 @@ import org.springframework.data.redis.core.RedisOperations;
* @author Mark Paluch
*/
@SpringBootTest
-@EnabledOnCommand("GEOADD")
class GeoOperationsTests {
@Autowired RedisOperations operations;
diff --git a/redis/example/src/test/java/example/springdata/redis/commands/KeyOperationsTests.java b/redis/example/src/test/java/example/springdata/redis/commands/KeyOperationsTests.java
index 16ee33b3..6fc637c1 100644
--- a/redis/example/src/test/java/example/springdata/redis/commands/KeyOperationsTests.java
+++ b/redis/example/src/test/java/example/springdata/redis/commands/KeyOperationsTests.java
@@ -15,13 +15,10 @@
*/
package example.springdata.redis.commands;
-import example.springdata.redis.test.condition.EnabledOnRedisAvailable;
-
import java.util.UUID;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
import org.springframework.data.redis.connection.RedisConnection;
@@ -36,7 +33,6 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
* @author Christoph Strobl
*/
@DataRedisTest
-@EnabledOnRedisAvailable
class KeyOperationsTests {
private static final String PREFIX = KeyOperationsTests.class.getSimpleName();
diff --git a/redis/pom.xml b/redis/pom.xml
index 8d99e58e..4a850173 100644
--- a/redis/pom.xml
+++ b/redis/pom.xml
@@ -33,19 +33,19 @@
spring-boot-starter-data-redis
+
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+
+ com.redis
+ testcontainers-redis
+ 2.2.2
+ test
+
+
-
-
-
-
-
- com.github.kstyrc
- embedded-redis
- 0.6
-
-
-
-
-
diff --git a/redis/pubsub/pom.xml b/redis/pubsub/pom.xml
index 9ba42bdf..761b002e 100644
--- a/redis/pubsub/pom.xml
+++ b/redis/pubsub/pom.xml
@@ -16,9 +16,13 @@
- ${project.groupId}
- spring-data-redis-example-utils
- ${project.version}
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.springframework
+ spring-test
test
diff --git a/redis/pubsub/src/test/java/example/springdata/redis/RedisTestConfiguration.java b/redis/pubsub/src/test/java/example/springdata/redis/RedisTestConfiguration.java
index cec2d756..1c38139c 100644
--- a/redis/pubsub/src/test/java/example/springdata/redis/RedisTestConfiguration.java
+++ b/redis/pubsub/src/test/java/example/springdata/redis/RedisTestConfiguration.java
@@ -15,10 +15,22 @@
*/
package example.springdata.redis;
+import com.redis.testcontainers.RedisContainer;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.springframework.context.annotation.Bean;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Mark Paluch
+ * @author Christoph Strobl
*/
@SpringBootApplication
-public class RedisTestConfiguration {}
+public class RedisTestConfiguration {
+
+ @Bean
+ @ServiceConnection(name = "redis")
+ RedisContainer redisContainer() {
+ return new RedisContainer(DockerImageName.parse("redis:7"));
+ }
+}
diff --git a/redis/reactive/pom.xml b/redis/reactive/pom.xml
index b730243d..241bec0f 100644
--- a/redis/reactive/pom.xml
+++ b/redis/reactive/pom.xml
@@ -41,9 +41,13 @@
- ${project.groupId}
- spring-data-redis-example-utils
- ${project.version}
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.springframework
+ spring-test
test
diff --git a/redis/reactive/src/test/java/example/springdata/redis/RedisTestConfiguration.java b/redis/reactive/src/test/java/example/springdata/redis/RedisTestConfiguration.java
index 2191dcb8..b790f72c 100644
--- a/redis/reactive/src/test/java/example/springdata/redis/RedisTestConfiguration.java
+++ b/redis/reactive/src/test/java/example/springdata/redis/RedisTestConfiguration.java
@@ -15,28 +15,30 @@
*/
package example.springdata.redis;
-import jakarta.annotation.PreDestroy;
-
+import com.redis.testcontainers.RedisContainer;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory;
-import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.ReactiveRedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializationContext.RedisSerializationContextBuilder;
import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Mark Paluch
+ * @author Christoph Strobl
*/
@SpringBootApplication
public class RedisTestConfiguration {
@Bean
- public LettuceConnectionFactory redisConnectionFactory() {
- return new LettuceConnectionFactory();
+ @ServiceConnection(name = "redis")
+ RedisContainer redisContainer() {
+ return new RedisContainer(DockerImageName.parse("redis:7"));
}
/**
@@ -72,10 +74,4 @@ public class RedisTestConfiguration {
return new ReactiveRedisTemplate<>(connectionFactory, serializationContext);
}
- /**
- * Clear database before shut down.
- */
- public @PreDestroy void flushTestDb() {
- redisConnectionFactory().getConnection().flushDb();
- }
}
diff --git a/redis/reactive/src/test/java/example/springdata/redis/commands/KeyCommandsTests.java b/redis/reactive/src/test/java/example/springdata/redis/commands/KeyCommandsTests.java
index 12620907..1dc5598e 100644
--- a/redis/reactive/src/test/java/example/springdata/redis/commands/KeyCommandsTests.java
+++ b/redis/reactive/src/test/java/example/springdata/redis/commands/KeyCommandsTests.java
@@ -15,19 +15,14 @@
*/
package example.springdata.redis.commands;
-import example.springdata.redis.RedisTestConfiguration;
-import example.springdata.redis.test.condition.EnabledOnRedisAvailable;
-import reactor.core.publisher.Flux;
-import reactor.test.StepVerifier;
-
import java.nio.ByteBuffer;
import java.time.Duration;
import java.util.Collections;
import java.util.UUID;
+import example.springdata.redis.RedisTestConfiguration;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.ReactiveRedisConnection;
@@ -36,6 +31,8 @@ import org.springframework.data.redis.connection.ReactiveStringCommands.SetComma
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.data.redis.util.ByteUtils;
+import reactor.core.publisher.Flux;
+import reactor.test.StepVerifier;
/**
* Show usage of reactive operations on Redis keys using low level API provided by
@@ -44,7 +41,6 @@ import org.springframework.data.redis.util.ByteUtils;
* @author Mark Paluch
*/
@SpringBootTest(classes = RedisTestConfiguration.class)
-@EnabledOnRedisAvailable
class KeyCommandsTests {
private static final String PREFIX = KeyCommandsTests.class.getSimpleName();
diff --git a/redis/reactive/src/test/java/example/springdata/redis/operations/JacksonJsonTests.java b/redis/reactive/src/test/java/example/springdata/redis/operations/JacksonJsonTests.java
index 81b1cb18..716d775d 100644
--- a/redis/reactive/src/test/java/example/springdata/redis/operations/JacksonJsonTests.java
+++ b/redis/reactive/src/test/java/example/springdata/redis/operations/JacksonJsonTests.java
@@ -18,7 +18,6 @@ package example.springdata.redis.operations;
import example.springdata.redis.EmailAddress;
import example.springdata.redis.Person;
import example.springdata.redis.RedisTestConfiguration;
-import example.springdata.redis.test.condition.EnabledOnRedisAvailable;
import lombok.extern.slf4j.Slf4j;
import reactor.test.StepVerifier;
@@ -39,7 +38,6 @@ import org.springframework.data.redis.util.ByteUtils;
*/
@Slf4j
@SpringBootTest(classes = RedisTestConfiguration.class)
-@EnabledOnRedisAvailable
class JacksonJsonTests {
@Autowired ReactiveRedisOperations typedOperations;
diff --git a/redis/reactive/src/test/java/example/springdata/redis/operations/ListOperationsTests.java b/redis/reactive/src/test/java/example/springdata/redis/operations/ListOperationsTests.java
index 4a15c86b..46457dc1 100644
--- a/redis/reactive/src/test/java/example/springdata/redis/operations/ListOperationsTests.java
+++ b/redis/reactive/src/test/java/example/springdata/redis/operations/ListOperationsTests.java
@@ -16,7 +16,6 @@
package example.springdata.redis.operations;
import example.springdata.redis.RedisTestConfiguration;
-import example.springdata.redis.test.condition.EnabledOnRedisAvailable;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -38,7 +37,6 @@ import org.springframework.data.redis.core.ReactiveRedisOperations;
*/
@Slf4j
@SpringBootTest(classes = RedisTestConfiguration.class)
-@EnabledOnRedisAvailable
class ListOperationsTests {
@Autowired ReactiveRedisOperations operations;
diff --git a/redis/reactive/src/test/java/example/springdata/redis/operations/ValueOperationsTests.java b/redis/reactive/src/test/java/example/springdata/redis/operations/ValueOperationsTests.java
index 87558b5a..f27cdb82 100644
--- a/redis/reactive/src/test/java/example/springdata/redis/operations/ValueOperationsTests.java
+++ b/redis/reactive/src/test/java/example/springdata/redis/operations/ValueOperationsTests.java
@@ -18,7 +18,6 @@ package example.springdata.redis.operations;
import static org.assertj.core.api.Assertions.*;
import example.springdata.redis.RedisTestConfiguration;
-import example.springdata.redis.test.condition.EnabledOnRedisAvailable;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -39,7 +38,6 @@ import org.springframework.data.redis.core.ReactiveRedisOperations;
*/
@Slf4j
@SpringBootTest(classes = RedisTestConfiguration.class)
-@EnabledOnRedisAvailable
class ValueOperationsTests {
@Autowired ReactiveRedisOperations operations;
diff --git a/redis/repositories/pom.xml b/redis/repositories/pom.xml
index fd8a5e13..e8fdc3e1 100644
--- a/redis/repositories/pom.xml
+++ b/redis/repositories/pom.xml
@@ -15,15 +15,13 @@
- ${project.groupId}
- spring-data-redis-example-utils
- ${project.version}
+ org.springframework.boot
+ spring-boot-testcontainers
test
-
- com.github.kstyrc
- embedded-redis
+ org.springframework
+ spring-test
test
diff --git a/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java b/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
index d169460e..e325046f 100644
--- a/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
+++ b/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
@@ -17,7 +17,7 @@ package example.springdata.redis.repositories;
import static org.assertj.core.api.Assertions.*;
-import example.springdata.redis.test.condition.EnabledOnRedisAvailable;
+import com.redis.testcontainers.RedisContainer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
@@ -29,6 +29,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@@ -40,16 +41,23 @@ import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisOperations;
import org.springframework.data.redis.core.index.GeoIndexed;
import org.springframework.data.redis.core.index.Indexed;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
* @author Oliver Gierke
* @author Mark Paluch
*/
+@Testcontainers
@DataRedisTest
-@EnabledOnRedisAvailable
class PersonRepositoryTests {
+ @Container
+ @ServiceConnection
+ static RedisContainer redis = new RedisContainer(DockerImageName.parse("redis:7"));
+
/** {@link Charset} for String conversion **/
private static final Charset CHARSET = StandardCharsets.UTF_8;
diff --git a/redis/streams/pom.xml b/redis/streams/pom.xml
index 73d47336..8cdcce5f 100644
--- a/redis/streams/pom.xml
+++ b/redis/streams/pom.xml
@@ -22,9 +22,13 @@
- ${project.groupId}
- spring-data-redis-example-utils
- ${project.version}
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+ org.springframework
+ spring-test
test
diff --git a/redis/streams/src/test/java/example/springdata/redis/reactive/ReactiveStreamApiTests.java b/redis/streams/src/test/java/example/springdata/redis/reactive/ReactiveStreamApiTests.java
index 2ed3a06c..ed061f71 100644
--- a/redis/streams/src/test/java/example/springdata/redis/reactive/ReactiveStreamApiTests.java
+++ b/redis/streams/src/test/java/example/springdata/redis/reactive/ReactiveStreamApiTests.java
@@ -18,8 +18,12 @@ package example.springdata.redis.reactive;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.redis.connection.stream.StreamOffset.*;
+import com.redis.testcontainers.RedisContainer;
import example.springdata.redis.SensorData;
-import example.springdata.redis.test.condition.EnabledOnCommand;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
import reactor.test.StepVerifier;
import java.time.Duration;
@@ -43,11 +47,15 @@ import org.springframework.data.redis.stream.StreamReceiver;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataRedisTest
-@EnabledOnCommand("XADD")
@ImportAutoConfiguration(RedisReactiveAutoConfiguration.class)
class ReactiveStreamApiTests {
+ @Container
+ @ServiceConnection
+ static RedisContainer redis = new RedisContainer(DockerImageName.parse("redis:7"));
+
@Autowired ReactiveStringRedisTemplate template;
@Autowired StreamReceiver> streamReceiver;
diff --git a/redis/streams/src/test/java/example/springdata/redis/sync/SyncStreamApiTests.java b/redis/streams/src/test/java/example/springdata/redis/sync/SyncStreamApiTests.java
index 0cf27940..b4d7d08a 100644
--- a/redis/streams/src/test/java/example/springdata/redis/sync/SyncStreamApiTests.java
+++ b/redis/streams/src/test/java/example/springdata/redis/sync/SyncStreamApiTests.java
@@ -18,8 +18,8 @@ package example.springdata.redis.sync;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.redis.connection.stream.StreamOffset.*;
+import com.redis.testcontainers.RedisContainer;
import example.springdata.redis.SensorData;
-import example.springdata.redis.test.condition.EnabledOnCommand;
import java.util.concurrent.TimeUnit;
@@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.data.redis.RedisSystemException;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
@@ -36,15 +37,22 @@ import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.core.StreamOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
* @author Mark Paluch
*/
+@Testcontainers
@DataRedisTest
-@EnabledOnCommand("XADD")
class SyncStreamApiTests {
+ @Container
+ @ServiceConnection
+ static RedisContainer redis = new RedisContainer(DockerImageName.parse("redis:7"));
+
@Autowired StringRedisTemplate template;
@Autowired StreamMessageListenerContainer> messageListenerContainer;
diff --git a/redis/util/pom.xml b/redis/util/pom.xml
index 09db062a..8d345c0d 100644
--- a/redis/util/pom.xml
+++ b/redis/util/pom.xml
@@ -25,12 +25,6 @@
lettuce-core
-
- com.github.kstyrc
- embedded-redis
- true
-
-