diff --git a/redisson/src/test/java/org/redisson/BaseReactiveTest.java b/redisson/src/test/java/org/redisson/BaseReactiveTest.java index f3c7919f6..1cba67283 100644 --- a/redisson/src/test/java/org/redisson/BaseReactiveTest.java +++ b/redisson/src/test/java/org/redisson/BaseReactiveTest.java @@ -25,7 +25,7 @@ public abstract class BaseReactiveTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); protected RedissonReactiveClient redisson; protected static RedissonReactiveClient defaultRedisson; diff --git a/redisson/src/test/java/org/redisson/BaseTest.java b/redisson/src/test/java/org/redisson/BaseTest.java index e8d7a0cdf..496c2b6fb 100644 --- a/redisson/src/test/java/org/redisson/BaseTest.java +++ b/redisson/src/test/java/org/redisson/BaseTest.java @@ -18,7 +18,7 @@ public abstract class BaseTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); protected RedissonClient redisson; protected static RedissonClient defaultRedisson; diff --git a/redisson/src/test/java/org/redisson/RedisClientTest.java b/redisson/src/test/java/org/redisson/RedisClientTest.java index 3c814b5d8..9ec1159b0 100644 --- a/redisson/src/test/java/org/redisson/RedisClientTest.java +++ b/redisson/src/test/java/org/redisson/RedisClientTest.java @@ -43,7 +43,7 @@ public class RedisClientTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); @BeforeClass public static void beforeClass() throws IOException, InterruptedException { diff --git a/redisson/src/test/java/org/redisson/RedisRunner.java b/redisson/src/test/java/org/redisson/RedisRunner.java index d12d1ba97..e2de27bfd 100644 --- a/redisson/src/test/java/org/redisson/RedisRunner.java +++ b/redisson/src/test/java/org/redisson/RedisRunner.java @@ -5,6 +5,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.net.Inet4Address; +import java.net.ServerSocket; import java.net.URL; import java.nio.file.Paths; import java.util.ArrayList; @@ -31,6 +32,7 @@ public class RedisRunner { DAEMONIZE, PIDFILE, PORT, + RANDOM_PORT, TCP_BACKLOG, BIND(true), UNIXSOCKET, @@ -179,6 +181,7 @@ public class RedisRunner { private boolean randomDir = false; private ArrayList bindAddr = new ArrayList<>(); private int port = 6379; + private boolean randomPort = true; { this.options.put(REDIS_OPTIONS.BINARY_PATH, RedissonRuntimeEnvironment.redisBinaryPath); @@ -266,9 +269,16 @@ public class RedisRunner { public RedisRunner port(int port) { this.port = port; + this.randomPort = false; addConfigOption(REDIS_OPTIONS.PORT, port); return this; } + + public RedisRunner randomPort() { + this.randomPort = true; + options.remove(REDIS_OPTIONS.PORT); + return this; + } public int getPort() { return this.port; @@ -785,4 +795,28 @@ public class RedisRunner { public static RedisRunner.RedisProcess getDefaultRedisServerInstance() { return defaultRedisInstance; } + + private static int findFreePort() { + ServerSocket socket = null; + try { + socket = new ServerSocket(0); + socket.setReuseAddress(true); + int port = socket.getLocalPort(); + try { + socket.close(); + } catch (IOException e) { + // Ignore IOException on close() + } + return port; + } catch (IOException e) { + } finally { + if (socket != null) { + try { + socket.close(); + } catch (IOException e) { + } + } + } + throw new IllegalStateException("Could not find a free TCP/IP port to start embedded Jetty HTTP Server on"); + } } diff --git a/redisson/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java b/redisson/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java index f2d7f390a..9125006b7 100644 --- a/redisson/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java +++ b/redisson/src/test/java/org/redisson/RedissonCountDownLatchConcurrentTest.java @@ -23,7 +23,7 @@ public class RedissonCountDownLatchConcurrentTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); @BeforeClass public static void beforeClass() throws IOException, InterruptedException { diff --git a/redisson/src/test/java/org/redisson/RedissonMultiLockTest.java b/redisson/src/test/java/org/redisson/RedissonMultiLockTest.java index 3e6d547df..1f859e24f 100644 --- a/redisson/src/test/java/org/redisson/RedissonMultiLockTest.java +++ b/redisson/src/test/java/org/redisson/RedissonMultiLockTest.java @@ -23,7 +23,7 @@ public class RedissonMultiLockTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); @Test public void testMultiThreads() throws IOException, InterruptedException { diff --git a/redisson/src/test/java/org/redisson/RedissonRedLockTest.java b/redisson/src/test/java/org/redisson/RedissonRedLockTest.java index 9e71f298d..3b741c18e 100644 --- a/redisson/src/test/java/org/redisson/RedissonRedLockTest.java +++ b/redisson/src/test/java/org/redisson/RedissonRedLockTest.java @@ -25,7 +25,7 @@ public class RedissonRedLockTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); @Test public void testLockFailed() throws IOException, InterruptedException { diff --git a/redisson/src/test/java/org/redisson/RedissonTest.java b/redisson/src/test/java/org/redisson/RedissonTest.java index 2471cb465..39f7c2ea9 100644 --- a/redisson/src/test/java/org/redisson/RedissonTest.java +++ b/redisson/src/test/java/org/redisson/RedissonTest.java @@ -42,7 +42,7 @@ public class RedissonTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); protected RedissonClient redisson; protected static RedissonClient defaultRedisson; diff --git a/redisson/src/test/java/org/redisson/RedissonTopicPatternTest.java b/redisson/src/test/java/org/redisson/RedissonTopicPatternTest.java index e2ccc8b4d..5f8ecc78f 100644 --- a/redisson/src/test/java/org/redisson/RedissonTopicPatternTest.java +++ b/redisson/src/test/java/org/redisson/RedissonTopicPatternTest.java @@ -39,7 +39,7 @@ public class RedissonTopicPatternTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); @BeforeClass public static void beforeClass() throws IOException, InterruptedException { diff --git a/redisson/src/test/java/org/redisson/RedissonTopicTest.java b/redisson/src/test/java/org/redisson/RedissonTopicTest.java index e96439e8d..10c12b95f 100644 --- a/redisson/src/test/java/org/redisson/RedissonTopicTest.java +++ b/redisson/src/test/java/org/redisson/RedissonTopicTest.java @@ -45,7 +45,7 @@ public class RedissonTopicTest { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); @BeforeClass public static void beforeClass() throws IOException, InterruptedException { diff --git a/redisson/src/test/java/org/redisson/RedissonTwoLockedThread.java b/redisson/src/test/java/org/redisson/RedissonTwoLockedThread.java index f58c9deae..5f0d52e58 100644 --- a/redisson/src/test/java/org/redisson/RedissonTwoLockedThread.java +++ b/redisson/src/test/java/org/redisson/RedissonTwoLockedThread.java @@ -31,7 +31,7 @@ public class RedissonTwoLockedThread { @ClassRule public static Timeout classTimeout = new Timeout(1, TimeUnit.HOURS); @Rule - public static Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); + public Timeout testTimeout = new Timeout(15, TimeUnit.MINUTES); @Parameterized.Parameters(name= "{index} - {0}") public static Iterable data() {