diff --git a/redisson/src/test/java/org/redisson/RedisRunner.java b/redisson/src/test/java/org/redisson/RedisRunner.java index e57e10246..75bb974e8 100644 --- a/redisson/src/test/java/org/redisson/RedisRunner.java +++ b/redisson/src/test/java/org/redisson/RedisRunner.java @@ -923,6 +923,10 @@ public class RedisRunner { } } + public String getDefaultDir() { + return runner.getDefaultDir(); + } + public Process getRedisProcess() { return redisProcess; } @@ -993,6 +997,10 @@ public class RedisRunner { return defaultRedisInstance.createRedisClientInstance(); } + public String getDefaultDir() { + return defaultDir; + } + public static RedisRunner.RedisProcess getDefaultRedisServerInstance() { return defaultRedisInstance; } diff --git a/redisson/src/test/java/org/redisson/RedissonTest.java b/redisson/src/test/java/org/redisson/RedissonTest.java index d80e83bb1..aa0f88821 100644 --- a/redisson/src/test/java/org/redisson/RedissonTest.java +++ b/redisson/src/test/java/org/redisson/RedissonTest.java @@ -14,6 +14,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import org.junit.After; @@ -292,6 +293,48 @@ public class RedissonTest { await().atMost(2, TimeUnit.SECONDS).until(() -> assertThat(connectCounter.get()).isEqualTo(1)); await().atMost(2, TimeUnit.SECONDS).until(() -> assertThat(disconnectCounter.get()).isEqualTo(1)); } + + @Test + public void testReconnection() throws IOException, InterruptedException, TimeoutException { + RedisProcess runner = new RedisRunner() + .appendonly(true) + .randomDir() + .randomPort() + .run(); + + Config config = new Config(); + config.useSingleServer().setAddress(runner.getRedisServerAddressAndPort()); + + RedissonClient r = Redisson.create(config); + + r.getBucket("myBucket").set(1); + assertThat(r.getBucket("myBucket").get()).isEqualTo(1); + + Assert.assertEquals(0, runner.stop()); + + AtomicBoolean hasError = new AtomicBoolean(); + try { + r.getBucket("myBucket").get(); + } catch (Exception e) { + // skip error + hasError.set(true); + } + + assertThat(hasError.get()).isTrue(); + + RedisProcess pp = new RedisRunner() + .appendonly(true) + .port(runner.getRedisServerPort()) + .dir(runner.getDefaultDir()) + .run(); + + assertThat(r.getBucket("myBucket").get()).isEqualTo(1); + + r.shutdown(); + + Assert.assertEquals(0, pp.stop()); + } + @Test public void testShutdown() {