From 0ee7a66033bd35eddab0e7de3e23767b4505f43d Mon Sep 17 00:00:00 2001 From: Ehren Kret Date: Tue, 7 Jul 2020 10:12:31 -0500 Subject: [PATCH] Keep trying ports until you get one lower than 55535 (#83) * Keep trying ports until you get one lower than 55535 * Rename method and change to do...while * Limit attempts to 11,000 to find an open redis cluster port --- .../redis/AbstractRedisClusterTest.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/redis/AbstractRedisClusterTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/redis/AbstractRedisClusterTest.java index 211d82b1b..9b5908add 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/redis/AbstractRedisClusterTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/redis/AbstractRedisClusterTest.java @@ -42,7 +42,7 @@ public abstract class AbstractRedisClusterTest { clusterNodes = new RedisServer[NODE_COUNT]; for (int i = 0; i < NODE_COUNT; i++) { - clusterNodes[i] = buildClusterNode(getNextPort()); + clusterNodes[i] = buildClusterNode(getNextRedisClusterPort()); clusterNodes[i].start(); } @@ -143,10 +143,18 @@ public abstract class AbstractRedisClusterTest { } } - private static int getNextPort() throws IOException { - try (ServerSocket socket = new ServerSocket(0)) { - socket.setReuseAddress(false); - return socket.getLocalPort(); + private static int getNextRedisClusterPort() throws IOException { + final int MAX_ITERATIONS = 11_000; + int port; + for (int i = 0; i < MAX_ITERATIONS; i++) { + try (ServerSocket socket = new ServerSocket(0)) { + socket.setReuseAddress(false); + port = socket.getLocalPort(); + } + if (port < 55535) { + return port; + } } + throw new IOException("Couldn't find an open port below 55,535 in " + MAX_ITERATIONS + " tries"); } }