Skip to content

Commit 8063ed7

Browse files
committed
added support for Redis Enterprise and modules
1 parent 4e20609 commit 8063ed7

22 files changed

+746
-134
lines changed

build.gradle

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ java {
2121
}
2222

2323
repositories {
24-
mavenCentral()
2524
mavenLocal()
25+
mavenCentral()
2626
}
2727

2828
bootJar {
@@ -41,10 +41,19 @@ dependencies {
4141
api 'org.junit.jupiter:junit-jupiter-params'
4242
api group: 'org.testcontainers', name: 'testcontainers', version: testcontainers_version
4343
api group: 'org.testcontainers', name: 'junit-jupiter', version: testcontainers_version
44-
testImplementation 'com.redislabs:mesclun:1.3.2'
44+
implementation 'io.lettuce:lettuce-core:6.1.2.RELEASE'
4545
testImplementation 'org.projectlombok:lombok'
4646
testAnnotationProcessor 'org.projectlombok:lombok'
47-
testImplementation 'ch.qos.logback:logback-classic:1.2.3'
47+
testImplementation 'org.slf4j:slf4j-simple'
48+
testImplementation 'com.redislabs:mesclun:1.3.3-SNAPSHOT'
49+
}
50+
51+
configurations.all {
52+
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
53+
if (details.requested.group == 'io.lettuce') {
54+
details.useVersion '6.2.0.BUILD-SNAPSHOT'
55+
}
56+
}
4857
}
4958

5059
test {
@@ -130,4 +139,4 @@ tasks.named("dependencyUpdates").configure {
130139
afterReleaseBuild.dependsOn ":githubRelease"
131140
afterReleaseBuild.dependsOn ":publishToSonatype"
132141
afterReleaseBuild.dependsOn ":closeAndReleaseSonatypeStagingRepository"
133-
afterReleaseBuild.dependsOn ":publishToMavenLocal"
142+
afterReleaseBuild.dependsOn ":publishToMavenLocal"

gradle.properties

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
version=1.1.4-SNAPSHOT
2-
testcontainers_version=1.15.3
3-
lombok_version=1.18.20
4-
junit_version=5.7.1
2+
testcontainers_version=1.5.4-REDISLABS

src/main/java/com/redislabs/testcontainers/RedisClusterContainer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
import org.testcontainers.containers.FixedHostPortGenericContainer;
44
import org.testcontainers.containers.wait.strategy.Wait;
55
import org.testcontainers.shaded.org.apache.commons.lang.ClassUtils;
6-
import org.testcontainers.utility.MountableFile;
76

8-
public class RedisClusterContainer extends FixedHostPortGenericContainer<RedisClusterContainer> implements RedisContainer {
7+
public class RedisClusterContainer extends FixedHostPortGenericContainer<RedisClusterContainer> implements RedisServer {
98

109
private static final String ENV_MASTERS = "MASTERS";
1110
private static final String ENV_SLAVES_PER_MASTER = "SLAVES_PER_MASTER";
@@ -73,7 +72,7 @@ public String[] getRedisURIs() {
7372
int[] ports = ports();
7473
String[] redisURIs = new String[ports.length];
7574
for (int index = 0; index < ports.length; index++) {
76-
redisURIs[index] = RedisContainerUtils.redisURI(getHost(), ports[index]);
75+
redisURIs[index] = RedisServer.redisURI(getHost(), ports[index]);
7776
}
7877
return redisURIs;
7978
}
Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,32 @@
11
package com.redislabs.testcontainers;
22

3-
public interface RedisContainer {
3+
import com.redislabs.testcontainers.support.AbstractRedisContainer;
4+
import org.testcontainers.utility.DockerImageName;
5+
import org.testcontainers.utility.MountableFile;
46

5-
String getRedisURI();
7+
public class RedisContainer extends AbstractRedisContainer<RedisContainer> {
68

7-
boolean isCluster();
9+
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("redis");
10+
private static final String DEFAULT_TAG = "latest";
11+
12+
public RedisContainer() {
13+
this(DEFAULT_IMAGE_NAME.withTag(DEFAULT_TAG));
14+
}
15+
16+
protected RedisContainer(final DockerImageName dockerImageName) {
17+
super(dockerImageName);
18+
}
19+
20+
@Override
21+
public boolean isCluster() {
22+
return false;
23+
}
24+
25+
@SuppressWarnings("unchecked")
26+
public <C extends RedisContainer> C withKeyspaceNotifications() {
27+
withCopyFileToContainer(MountableFile.forClasspathResource("redis-keyspace-notifications.conf"), "/data/redis.conf");
28+
withCommand("redis-server", "/data/redis.conf");
29+
return (C) this;
30+
}
831

932
}

src/main/java/com/redislabs/testcontainers/RedisEnterpriseContainer.java

Lines changed: 394 additions & 21 deletions
Large diffs are not rendered by default.

src/main/java/com/redislabs/testcontainers/RedisModulesContainer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.redislabs.testcontainers;
22

3+
import com.redislabs.testcontainers.support.AbstractRedisContainer;
34
import org.testcontainers.utility.DockerImageName;
45

56
public class RedisModulesContainer extends AbstractRedisContainer<RedisModulesContainer> {

src/main/java/com/redislabs/testcontainers/RedisContainerUtils.java renamed to src/main/java/com/redislabs/testcontainers/RedisServer.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22

33
import org.testcontainers.containers.GenericContainer;
44

5-
public class RedisContainerUtils {
5+
public interface RedisServer {
66

7-
public static String redisURI(String host, int port) {
7+
String getRedisURI();
8+
9+
boolean isCluster();
10+
11+
static String redisURI(String host, int port) {
812
return "redis://" + host + ":" + port;
913
}
1014

11-
public static String redisURI(GenericContainer<?> container) {
15+
static String redisURI(GenericContainer<?> container) {
1216
return redisURI(container.getHost(), container.getFirstMappedPort());
1317
}
1418

src/main/java/com/redislabs/testcontainers/RedisStandaloneContainer.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/main/java/com/redislabs/testcontainers/AbstractRedisContainer.java renamed to src/main/java/com/redislabs/testcontainers/support/AbstractRedisContainer.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package com.redislabs.testcontainers;
1+
package com.redislabs.testcontainers.support;
22

3+
import com.redislabs.testcontainers.RedisServer;
34
import org.testcontainers.containers.GenericContainer;
45
import org.testcontainers.containers.wait.strategy.Wait;
56
import org.testcontainers.shaded.org.apache.commons.lang.ClassUtils;
67
import org.testcontainers.utility.DockerImageName;
78

8-
public abstract class AbstractRedisContainer<C extends AbstractRedisContainer<C>> extends GenericContainer<C> implements RedisContainer {
9+
public abstract class AbstractRedisContainer<C extends AbstractRedisContainer<C>> extends GenericContainer<C> implements RedisServer {
910

1011
public static final int REDIS_PORT = 6379;
1112

@@ -26,7 +27,7 @@ protected AbstractRedisContainer(final DockerImageName dockerImageName, int port
2627
*/
2728
@Override
2829
public String getRedisURI() {
29-
return RedisContainerUtils.redisURI(this);
30+
return RedisServer.redisURI(this);
3031
}
3132

3233
@Override
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.redislabs.testcontainers.support.enterprise;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import lombok.Data;
6+
7+
@Data
8+
@JsonIgnoreProperties(ignoreUnknown = true)
9+
public class ActionStatus {
10+
11+
@JsonProperty("action_uid")
12+
private String actionUID;
13+
@JsonProperty("module_uid")
14+
private String moduleUID;
15+
private String name;
16+
private String progress;
17+
private String status;
18+
@JsonProperty("task_id")
19+
private String taskID;
20+
21+
}

0 commit comments

Comments
 (0)