Skip to content

Commit a389422

Browse files
committed
Externalized redis enterprise admin module
1 parent 9e31f51 commit a389422

34 files changed

+385
-1426
lines changed

gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ dependencyPluginVersion=1.0.11.RELEASE
55
kordampBuildVersion=2.6.0
66
kordampPluginVersion=0.47.0
77

8+
adminVersion=0.2.0
89
awaitilityVersion=4.1.1
910
lettucemodVersion=1.8.1
1011
testcontainersVersion=1.15.3

jreleaser.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,10 @@ distributions:
9696
artifacts:
9797
- path: subprojects/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip
9898
transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip'
99-
99+
testcontainers-redis-junit:
100+
artifacts:
101+
- path: subprojects/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip
102+
transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip'
100103

101104
files:
102105
artifacts:

subprojects/testcontainers-redis-junit-jupiter/gradle.properties renamed to subprojects/testcontainers-redis-junit/gradle.properties

File renamed without changes.

subprojects/testcontainers-redis-junit-jupiter/src/main/java/com/redis/testcontainers/junit/jupiter/AbstractTestcontainersRedisTestBase.java renamed to subprojects/testcontainers-redis-junit/src/main/java/com/redis/testcontainers/junit/AbstractTestcontainersRedisTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.testcontainers.junit.jupiter;
1+
package com.redis.testcontainers.junit;
22

33
import java.util.Collection;
44
import java.util.Map;

subprojects/testcontainers-redis-junit-jupiter/src/main/java/com/redis/testcontainers/junit/jupiter/RedisTestContext.java renamed to subprojects/testcontainers-redis-junit/src/main/java/com/redis/testcontainers/junit/RedisTestContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.testcontainers.junit.jupiter;
1+
package com.redis.testcontainers.junit;
22

33
import com.redis.lettucemod.RedisModulesClient;
44
import com.redis.lettucemod.api.StatefulRedisModulesConnection;

subprojects/testcontainers-redis-junit-jupiter/src/main/java/com/redis/testcontainers/junit/jupiter/RedisTestContextsProvider.java renamed to subprojects/testcontainers-redis-junit/src/main/java/com/redis/testcontainers/junit/RedisTestContextsProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.testcontainers.junit.jupiter;
1+
package com.redis.testcontainers.junit;
22

33
import java.util.stream.Stream;
44

subprojects/testcontainers-redis-junit-jupiter/src/main/java/com/redis/testcontainers/junit/jupiter/RedisTestContextsSource.java renamed to subprojects/testcontainers-redis-junit/src/main/java/com/redis/testcontainers/junit/RedisTestContextsSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.redis.testcontainers.junit.jupiter;
1+
package com.redis.testcontainers.junit;
22

33
import java.lang.annotation.Documented;
44
import java.lang.annotation.ElementType;
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.redis.testcontainers.junit;
2+
3+
import java.util.Arrays;
4+
import java.util.Collection;
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
import org.junit.jupiter.api.Assertions;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.testcontainers.junit.jupiter.Container;
11+
12+
import com.redis.enterprise.Database;
13+
import com.redis.enterprise.RedisModule;
14+
import com.redis.lettucemod.api.sync.RedisModulesCommands;
15+
import com.redis.lettucemod.api.sync.RedisTimeSeriesCommands;
16+
import com.redis.lettucemod.search.Field;
17+
import com.redis.lettucemod.search.SearchResults;
18+
import com.redis.lettucemod.timeseries.CreateOptions;
19+
import com.redis.testcontainers.RedisEnterpriseContainer;
20+
import com.redis.testcontainers.RedisModulesContainer;
21+
import com.redis.testcontainers.RedisServer;
22+
23+
class RedisModulesTests extends AbstractTestcontainersRedisTestBase {
24+
25+
@Container
26+
private static final RedisModulesContainer REDIS_MOD = new RedisModulesContainer(
27+
RedisModulesContainer.DEFAULT_IMAGE_NAME.withTag(RedisModulesContainer.DEFAULT_TAG));
28+
29+
@Container
30+
private static final RedisEnterpriseContainer REDIS_ENTERPRISE = new RedisEnterpriseContainer(
31+
RedisEnterpriseContainer.DEFAULT_IMAGE_NAME.withTag(RedisEnterpriseContainer.DEFAULT_TAG))
32+
.withDatabase(Database.name("RedisEnterpriseContainerTests").ossCluster(true)
33+
.modules(RedisModule.SEARCH, RedisModule.GEARS, RedisModule.TIMESERIES).build());
34+
35+
@Override
36+
protected Collection<RedisServer> servers() {
37+
return Arrays.asList(REDIS_MOD, REDIS_ENTERPRISE);
38+
}
39+
40+
@ParameterizedTest
41+
@RedisTestContextsSource
42+
void gearsPyExecute(RedisTestContext context) {
43+
RedisModulesCommands<String, String> sync = context.sync();
44+
sync.set("foo", "bar");
45+
String sleepPy = "def sleep(x):\n" + " from time import sleep\n" + " sleep(1)\n" + " return 1\n" + "\n"
46+
+ "GB().map(sleep).run()";
47+
Assertions.assertTrue(sync.pyexecute(sleepPy).getErrors().isEmpty());
48+
Assertions.assertTrue(sync.pyexecute("GB().run()").isOk());
49+
}
50+
51+
@ParameterizedTest
52+
@RedisTestContextsSource
53+
void timeSeries(RedisTestContext context) {
54+
RedisTimeSeriesCommands<String, String> ts = context.sync();
55+
ts.create("temperature:3:11", CreateOptions.<String, String>builder().retentionTime(6000)
56+
.label("sensor_id", "2").label("area_id", "32").build());
57+
// TS.ADD temperature:3:11 1548149181 30
58+
Long add1 = ts.add("temperature:3:11", 1548149181, 30);
59+
Assertions.assertEquals(1548149181, add1);
60+
}
61+
62+
@ParameterizedTest
63+
@RedisTestContextsSource
64+
void search(RedisTestContext context) {
65+
context.sync().create("test", Field.text("name").build(), Field.tag("id").build());
66+
for (int index = 0; index < 10; index++) {
67+
Map<String, String> hash = new HashMap<>();
68+
hash.put("name", "name " + index);
69+
hash.put("id", String.valueOf(index + 1));
70+
context.sync().hset("hash:" + index, hash);
71+
}
72+
SearchResults<String, String> results = context.sync().search("test", "*");
73+
Assertions.assertEquals(10, results.getCount());
74+
}
75+
76+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.redis.testcontainers.junit;
2+
3+
import java.util.Arrays;
4+
import java.util.Collection;
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
import org.junit.jupiter.api.Assertions;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.testcontainers.junit.jupiter.Container;
11+
12+
import com.redis.testcontainers.RedisClusterContainer;
13+
import com.redis.testcontainers.RedisContainer;
14+
import com.redis.testcontainers.RedisEnterpriseContainer;
15+
import com.redis.testcontainers.RedisModulesContainer;
16+
import com.redis.testcontainers.RedisServer;
17+
18+
class RedisTests extends AbstractTestcontainersRedisTestBase {
19+
20+
@Container
21+
private static final RedisContainer REDIS = new RedisContainer(
22+
RedisContainer.DEFAULT_IMAGE_NAME.withTag(RedisContainer.DEFAULT_TAG)).withKeyspaceNotifications();
23+
@Container
24+
private static final RedisClusterContainer REDIS_CLUSTER = new RedisClusterContainer(
25+
RedisClusterContainer.DEFAULT_IMAGE_NAME.withTag(RedisClusterContainer.DEFAULT_TAG))
26+
.withKeyspaceNotifications();
27+
@Container
28+
private static final RedisModulesContainer REDIS_MOD = new RedisModulesContainer(
29+
RedisModulesContainer.DEFAULT_IMAGE_NAME.withTag(RedisModulesContainer.DEFAULT_TAG));
30+
31+
@Container
32+
private static final RedisModulesContainer REDIS_MOD_PREVIEW = new RedisModulesContainer(
33+
RedisModulesContainer.DEFAULT_IMAGE_NAME.withTag("preview"));
34+
35+
@Container
36+
private static final RedisEnterpriseContainer REDIS_ENTERPRISE = new RedisEnterpriseContainer(
37+
RedisEnterpriseContainer.DEFAULT_IMAGE_NAME.withTag(RedisEnterpriseContainer.DEFAULT_TAG));
38+
39+
@Override
40+
protected Collection<RedisServer> servers() {
41+
return Arrays.asList(REDIS, REDIS_CLUSTER, REDIS_MOD, REDIS_MOD_PREVIEW, REDIS_ENTERPRISE);
42+
}
43+
44+
@ParameterizedTest
45+
@RedisTestContextsSource
46+
void canPing(RedisTestContext context) {
47+
Assertions.assertEquals("PONG", context.sync().ping());
48+
}
49+
50+
@ParameterizedTest
51+
@RedisTestContextsSource
52+
void canWrite(RedisTestContext context) {
53+
Map<String, String> hash = new HashMap<>();
54+
hash.put("field1", "value1");
55+
context.sync().hset("hash:test", hash);
56+
Map<String, String> response = context.sync().hgetall("hash:test");
57+
Assertions.assertEquals(hash, response);
58+
}
59+
60+
}

subprojects/testcontainers-redis-junit-jupiter/testcontainers-redis-junit-jupiter.gradle renamed to subprojects/testcontainers-redis-junit/testcontainers-redis-junit.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ dependencies {
66
runtimeOnly 'org.junit.jupiter:junit-jupiter-engine'
77
api group: 'com.redis', name: 'lettucemod', version: lettucemodVersion
88
api group: 'org.awaitility', name: 'awaitility', version: awaitilityVersion
9+
testImplementation 'org.slf4j:slf4j-simple'
10+
testImplementation group: 'com.redis', name: 'redis-enterprise-admin', version: adminVersion
911
}

0 commit comments

Comments
 (0)