Skip to content

Commit 306171c

Browse files
authored
#3 add Redis support (#6)
1 parent bed253c commit 306171c

8 files changed

Lines changed: 112 additions & 2 deletions

File tree

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,18 @@ dependencies {
276276
* `minio.url`
277277
* `minio.access-key`
278278
* `minio.secret-key`
279-
* `minio.region`
279+
* `minio.region`
280+
281+
## Redis
282+
283+
* **Module-ID**: redis
284+
* **Default-Image**: redis
285+
286+
````kotlin
287+
dependencies {
288+
testResourcesImplementation ("io.cloudflight.testresources.springboot:springboot-testresources-redis:0.0.3")
289+
}
290+
````
291+
292+
* **Provided properties**:
293+
* `spring.data.redis.url`

settings.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ include("springboot-testresources-minio")
99
include("springboot-testresources-jdbc")
1010
include("springboot-testresources-jdbc:springboot-testresources-jdbc-mariadb")
1111
include("springboot-testresources-jdbc:springboot-testresources-jdbc-postgres")
12+
include("springboot-testresources-redis")
1213

1314
include("testprojects:jdbc:mariadb")
1415
include("testprojects:jdbc:postgres")
1516
include("testprojects:minio")
16-
17+
include("testprojects:redis")
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
description = "Spring Boot TestResourceProvider for Redis"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package io.cloudflight.testresources.springboot.redis;
2+
3+
import io.micronaut.testresources.testcontainers.AbstractTestContainersProvider;
4+
import org.testcontainers.containers.GenericContainer;
5+
import org.testcontainers.utility.DockerImageName;
6+
7+
import java.util.*;
8+
9+
public class RedisTestResourceProvider extends AbstractTestContainersProvider<GenericContainer<?>> {
10+
11+
public static final String REDIS_URI = "spring.data.redis.url";
12+
public static final String DEFAULT_IMAGE = "redis";
13+
public static final String SIMPLE_NAME = "redis";
14+
public static final int REDIS_PORT = 6379;
15+
16+
private static final Set<String> SUPPORTED_PROPERTIES;
17+
18+
static {
19+
SUPPORTED_PROPERTIES = Set.of(REDIS_URI);
20+
}
21+
22+
@Override
23+
public List<String> getResolvableProperties(Map<String, Collection<String>> propertyEntries, Map<String, Object> testResourcesConfig) {
24+
return Collections.singletonList(REDIS_URI);
25+
}
26+
27+
@Override
28+
protected String getSimpleName() {
29+
return SIMPLE_NAME;
30+
}
31+
32+
@Override
33+
protected String getDefaultImageName() {
34+
return DEFAULT_IMAGE;
35+
}
36+
37+
@Override
38+
protected GenericContainer<?> createContainer(DockerImageName imageName, Map<String, Object> requestedProperties, Map<String, Object> testResourcesConfiguration) {
39+
GenericContainer<?> container = new GenericContainer<>(imageName);
40+
container.withExposedPorts(REDIS_PORT);
41+
return container;
42+
}
43+
44+
@Override
45+
protected Optional<String> resolveProperty(String propertyName, GenericContainer<?> container) {
46+
if (REDIS_URI.equals(propertyName)) {
47+
return Optional.of("redis://" + container.getHost() + ":" + container.getMappedPort(REDIS_PORT));
48+
}
49+
return Optional.empty();
50+
}
51+
52+
@Override
53+
protected boolean shouldAnswer(String propertyName, Map<String, Object> requestedProperties, Map<String, Object> testResourcesConfiguration) {
54+
return SUPPORTED_PROPERTIES.contains(propertyName);
55+
}
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.cloudflight.testresources.springboot.redis.RedisTestResourceProvider
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
plugins {
2+
id("io.micronaut.test-resources")
3+
}
4+
5+
dependencies {
6+
implementation("org.springframework.boot:spring-boot-starter-data-redis")
7+
8+
testImplementation("org.springframework.boot:spring-boot-starter-test")
9+
10+
testRuntimeOnly(project(":springboot-testresources-client"))
11+
testResourcesImplementation(project(":springboot-testresources-redis"))
12+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package io.cloudflight.testresources.springboot.redis
2+
3+
import org.springframework.boot.autoconfigure.SpringBootApplication
4+
5+
@SpringBootApplication
6+
class Application
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.cloudflight.testresources.springboot.redis
2+
3+
import org.assertj.core.api.Assertions.assertThat
4+
import org.junit.jupiter.api.Test
5+
import org.springframework.beans.factory.annotation.Autowired
6+
import org.springframework.boot.test.context.SpringBootTest
7+
import org.springframework.data.redis.core.RedisTemplate
8+
9+
@SpringBootTest
10+
class ApplicationTest(
11+
@Autowired private val redisTemplate: RedisTemplate<Any, Any>
12+
) {
13+
14+
@Test
15+
fun redisIsAlive() {
16+
redisTemplate.opsForValue().set("test", "me")
17+
assertThat(redisTemplate.opsForValue().get("test")).isEqualTo("me")
18+
}
19+
}

0 commit comments

Comments
 (0)