diff --git a/redisson/src/test/java/org/redisson/RedissonShardedTopicTest.java b/redisson/src/test/java/org/redisson/RedissonShardedTopicTest.java index 981ab50b3..c683bedeb 100644 --- a/redisson/src/test/java/org/redisson/RedissonShardedTopicTest.java +++ b/redisson/src/test/java/org/redisson/RedissonShardedTopicTest.java @@ -3,12 +3,17 @@ package org.redisson; import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.redisson.api.HostPortNatMapper; +import org.redisson.api.NatMapper; import org.redisson.api.RTopic; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.redisson.connection.balancer.RandomLoadBalancer; +import org.redisson.misc.RedisURI; import org.testcontainers.containers.FixedHostPortGenericContainer; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.startupcheck.IsRunningStartupCheckStrategy; import org.testcontainers.containers.startupcheck.MinimumDurationRunningStartupCheckStrategy; +import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -23,36 +28,29 @@ import static org.assertj.core.api.Assertions.assertThat; public class RedissonShardedTopicTest { @Container - private final FixedHostPortGenericContainer redisClusterContainer = - new FixedHostPortGenericContainer<>("vishnunair/docker-redis-cluster") - .withFixedExposedPort(5000, 6379) - .withFixedExposedPort(5001, 6380) - .withFixedExposedPort(5002, 6381) - .withFixedExposedPort(5003, 6382) - .withFixedExposedPort(5004, 6383) - .withFixedExposedPort(5005, 6384) - .withStartupCheckStrategy( - new MinimumDurationRunningStartupCheckStrategy(Duration.ofSeconds(6)) - ); + private final GenericContainer redisClusterContainer = + new GenericContainer<>("vishnunair/docker-redis-cluster") + .withExposedPorts(6379, 6380, 6381, 6382, 6383, 6384) + .withStartupCheckStrategy( + new MinimumDurationRunningStartupCheckStrategy(Duration.ofSeconds(6)) + ); @Test public void testClusterSharding() { Config config = new Config(); - HostPortNatMapper m = new HostPortNatMapper(); - Map mm = new HashMap<>(); - String ip = redisClusterContainer.getCurrentContainerInfo().getNetworkSettings().getIpAddress(); - mm.put(ip + ":6380", "127.0.0.1:5001"); - mm.put(ip + ":6382", "127.0.0.1:5003"); - mm.put(ip + ":6379", "127.0.0.1:5000"); - mm.put(ip + ":6383", "127.0.0.1:5004"); - mm.put(ip + ":6384", "127.0.0.1:5005"); - mm.put(ip + ":6381", "127.0.0.1:5002"); - m.setHostsPortMap(mm); config.useClusterServers() .setPingConnectionInterval(0) - .setNatMapper(m) + .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())); + } + }) .setLoadBalancer(new RandomLoadBalancer()) - .addNodeAddress("redis://127.0.0.1:5000"); + .addNodeAddress("redis://127.0.0.1:" + redisClusterContainer.getFirstMappedPort()); RedissonClient redisson = Redisson.create(config); AtomicInteger counter = new AtomicInteger();