refactoring

pull/5427/head
Nikita Koksharov 1 year ago
parent 2ca874f949
commit dfafb6740e

@ -10,8 +10,7 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
public class BaseStackTest {
public class DockerRedisStackTest {
@Container
private static final GenericContainer<?> REDIS =

@ -0,0 +1,85 @@
package org.redisson;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.redisson.api.*;
import org.redisson.config.Config;
import org.redisson.config.Protocol;
import org.redisson.misc.RedisURI;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.startupcheck.MinimumDurationRunningStartupCheckStrategy;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration;
import java.util.function.Consumer;
import static org.assertj.core.api.Assertions.assertThat;
@Testcontainers
public class RedisDockerTest {
@Container
private static final GenericContainer<?> REDIS =
new GenericContainer<>("redis:7.2")
.withExposedPorts(6379);
protected static RedissonClient redisson;
@BeforeAll
public static void beforeAll() {
Config config = createConfig();
redisson = Redisson.create(config);
}
protected static Config createConfig() {
Config config = new Config();
config.setProtocol(Protocol.RESP3);
config.useSingleServer()
.setAddress("redis://127.0.0.1:" + REDIS.getFirstMappedPort());
return config;
}
protected void testInCluster(Consumer<RedissonClient> redissonCallback) {
GenericContainer<?> redisClusterContainer =
new GenericContainer<>("vishnunair/docker-redis-cluster")
.withExposedPorts(6379, 6380, 6381, 6382, 6383, 6384)
.withStartupCheckStrategy(new MinimumDurationRunningStartupCheckStrategy(Duration.ofSeconds(7)));
redisClusterContainer.start();
Config config = new Config();
config.setProtocol(Protocol.RESP3);
config.useClusterServers()
.setNatMapper(new NatMapper() {
@Override
public RedisURI map(RedisURI uri) {
if (redisClusterContainer.getMappedPort(uri.getPort()) == null) {
return uri;
}
return new RedisURI(uri.getScheme(), redisClusterContainer.getHost(), redisClusterContainer.getMappedPort(uri.getPort()));
}
})
.addNodeAddress("redis://127.0.0.1:" + redisClusterContainer.getFirstMappedPort());
RedissonClient redisson = Redisson.create(config);
try {
redissonCallback.accept(redisson);
} finally {
redisson.shutdown();
redisClusterContainer.stop();
}
}
@BeforeEach
public void beforeEach() {
redisson.getKeys().flushall();
}
@AfterAll
public static void afterAll() {
redisson.shutdown();
}
}

@ -1,28 +1,15 @@
package org.redisson;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.redisson.api.*;
import org.redisson.client.codec.LongCodec;
import org.redisson.client.codec.StringCodec;
import org.redisson.config.Config;
import org.redisson.connection.balancer.RandomLoadBalancer;
import org.redisson.misc.RedisURI;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.startupcheck.MinimumDurationRunningStartupCheckStrategy;
import java.time.Duration;
import java.util.*;
import static org.assertj.core.api.Assertions.assertThat;
public class RedissonFunctionTest extends BaseTest {
@BeforeAll
public static void check() {
Assumptions.assumeTrue(RedisRunner.getDefaultRedisServerInstance().getRedisVersion().compareTo("7.0.0") > 0);
}
public class RedissonFunctionTest extends RedisDockerTest {
@Test
public void testEmpty() {
@ -54,58 +41,41 @@ public class RedissonFunctionTest extends BaseTest {
}
@Test
public void testCluster() throws InterruptedException {
GenericContainer<?> redisClusterContainer =
new GenericContainer<>("vishnunair/docker-redis-cluster")
.withExposedPorts(6379, 6380, 6381, 6382, 6383, 6384)
.withStartupCheckStrategy(new MinimumDurationRunningStartupCheckStrategy(Duration.ofSeconds(7)));
redisClusterContainer.start();
Config config = new Config();
config.useClusterServers()
.setNatMapper(new NatMapper() {
@Override
public RedisURI map(RedisURI uri) {
if (redisClusterContainer.getMappedPort(uri.getPort()) == null) {
return uri;
}
return new RedisURI(uri.getScheme(), redisClusterContainer.getHost(), redisClusterContainer.getMappedPort(uri.getPort()));
}
})
.addNodeAddress("redis://127.0.0.1:" + redisClusterContainer.getFirstMappedPort());
RedissonClient redisson = Redisson.create(config);
Map<String, Object> testMap = new HashMap<>();
testMap.put("a", "b");
testMap.put("c", "d");
testMap.put("e", "f");
testMap.put("g", "h");
testMap.put("i", "j");
testMap.put("k", "l");
RFunction f = redisson.getFunction();
f.flush();
f.load("lib", "redis.register_function('myfun', function(keys, args) return args[1] end)");
// waiting for the function replication to all nodes
Thread.sleep(5000);
RBatch batch = redisson.createBatch();
RFunctionAsync function = batch.getFunction();
for (Map.Entry<String, Object> property : testMap.entrySet()) {
List<Object> key = Collections.singletonList(property.getKey());
function.callAsync(
FunctionMode.READ,
"myfun",
FunctionResult.VALUE,
key,
property.getValue());
}
List<String> results = (List<String>) batch.execute().getResponses();
assertThat(results).containsExactly("b", "d", "f", "h", "j", "l");
redisson.shutdown();
redisClusterContainer.stop();
public void testCluster() {
testInCluster(r -> {
Map<String, Object> testMap = new HashMap<>();
testMap.put("a", "b");
testMap.put("c", "d");
testMap.put("e", "f");
testMap.put("g", "h");
testMap.put("i", "j");
testMap.put("k", "l");
RFunction f = redisson.getFunction();
f.flush();
f.load("lib", "redis.register_function('myfun', function(keys, args) return args[1] end)");
// waiting for the function replication to all nodes
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
RBatch batch = redisson.createBatch();
RFunctionAsync function = batch.getFunction();
for (Map.Entry<String, Object> property : testMap.entrySet()) {
List<Object> key = Collections.singletonList(property.getKey());
function.callAsync(
FunctionMode.READ,
"myfun",
FunctionResult.VALUE,
key,
property.getValue());
}
List<String> results = (List<String>) batch.execute().getResponses();
assertThat(results).containsExactly("b", "d", "f", "h", "j", "l");
});
}
@Test

@ -1,19 +1,16 @@
package org.redisson;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.redisson.api.*;
import org.redisson.api.geo.GeoSearchArgs;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
public class RedissonGeoTest extends BaseStackTest {
public class RedissonGeoTest extends RedisDockerTest {
@Test
public void testAdd() {

@ -13,7 +13,7 @@ import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class RedissonJsonBucketTest extends BaseStackTest {
public class RedissonJsonBucketTest extends DockerRedisStackTest {
public static class NestedType {

@ -1,7 +1,6 @@
package org.redisson;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.Test;
import org.redisson.api.*;
import org.redisson.api.listener.ScoredSortedSetAddListener;
@ -25,7 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class RedissonScoredSortedSetTest extends BaseStackTest {
public class RedissonScoredSortedSetTest extends RedisDockerTest {
@Test
public void testEntries() {

@ -22,7 +22,7 @@ import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
public class RedissonSearchTest extends BaseStackTest {
public class RedissonSearchTest extends DockerRedisStackTest {
public static class SimpleObject {

Loading…
Cancel
Save