From cac6405865eead8bebef0ff72c01389918b64d1f Mon Sep 17 00:00:00 2001 From: neeetman Date: Wed, 25 Oct 2023 08:23:03 +0000 Subject: [PATCH 1/6] Port conflict resolution --- .../oltpbenchmark/api/AbstractTestCase.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index d09a1d366..a5144de8c 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -99,18 +99,33 @@ public final void setUp() throws Exception { HsqlProperties props = new HsqlProperties(); //props.setProperty("server.remote_open", true); - int port = portCounter.incrementAndGet(); - - LOG.info("starting HSQLDB server for test [{}] on port [{}]", name.getMethodName(), port); - server = new Server(); server.setProperties(props); server.setDatabasePath(0, "mem:benchbase;sql.syntax_mys=true"); server.setDatabaseName(0, "benchbase"); server.setAddress("localhost"); - server.setPort(port); server.setSilent(true); server.setLogWriter(null); + + int port = -1; + boolean portFound = false; + + for (int i = 0; i < MAX_TRIES; i++) { + port = portCounter.incrementAndGet(); + try (ServerSocket testSocket = new ServerSocket(port)) { + portFound = true; + break; + } catch (BindException e) { + continue; + } + } + + if (!portFound) { + throw new RuntimeException("Unable to find an available port after " + MAX_TRIES + " tries."); + } + + LOG.info("starting HSQLDB server for test [{}] on port [{}]", name.getMethodName(), port); + server.setPort(port); server.start(); this.workConf = new WorkloadConfiguration(); From 5f2a83585f96b9f02ab836d27307d03a19a07266 Mon Sep 17 00:00:00 2001 From: neeetman Date: Wed, 25 Oct 2023 08:33:45 +0000 Subject: [PATCH 2/6] Port conflict resolution --- src/test/java/com/oltpbenchmark/api/AbstractTestCase.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index a5144de8c..f52196795 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -39,6 +39,8 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; +import java.net.ServerSocket; +import java.net.BindException; public abstract class AbstractTestCase { @@ -69,6 +71,7 @@ public abstract class AbstractTestCase { protected final String ddlOverridePath; private static final AtomicInteger portCounter = new AtomicInteger(9001); + private static final int MAX_TRIES = 10; public AbstractTestCase(boolean createDatabase, boolean loadDatabase) { From 13f7d15143cc9ed1b4fed6d1c2ddee44c0bef770 Mon Sep 17 00:00:00 2001 From: neeetman Date: Thu, 26 Oct 2023 07:46:03 +0000 Subject: [PATCH 3/6] Remoe MAX_TRIES --- .../oltpbenchmark/api/AbstractTestCase.java | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index f52196795..198535d61 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -71,7 +71,7 @@ public abstract class AbstractTestCase { protected final String ddlOverridePath; private static final AtomicInteger portCounter = new AtomicInteger(9001); - private static final int MAX_TRIES = 10; + private static final int MAX_PORT_NUMBER = 65535; public AbstractTestCase(boolean createDatabase, boolean loadDatabase) { @@ -102,33 +102,18 @@ public final void setUp() throws Exception { HsqlProperties props = new HsqlProperties(); //props.setProperty("server.remote_open", true); + int port = findAvailablePort(); + + LOG.info("starting HSQLDB server for test [{}] on port [{}]", name.getMethodName(), port); + server = new Server(); server.setProperties(props); server.setDatabasePath(0, "mem:benchbase;sql.syntax_mys=true"); server.setDatabaseName(0, "benchbase"); server.setAddress("localhost"); - server.setSilent(true); - server.setLogWriter(null); - - int port = -1; - boolean portFound = false; - - for (int i = 0; i < MAX_TRIES; i++) { - port = portCounter.incrementAndGet(); - try (ServerSocket testSocket = new ServerSocket(port)) { - portFound = true; - break; - } catch (BindException e) { - continue; - } - } - - if (!portFound) { - throw new RuntimeException("Unable to find an available port after " + MAX_TRIES + " tries."); - } - - LOG.info("starting HSQLDB server for test [{}] on port [{}]", name.getMethodName(), port); server.setPort(port); + server.setSilent(true); + server.setLogWriter(null); server.start(); this.workConf = new WorkloadConfiguration(); @@ -181,6 +166,22 @@ public final void setUp() throws Exception { } } + private int findAvailablePort() throws IOException { + while (true) { + int port = portCounter.incrementAndGet(); + + if (port > MAX_PORT_NUMBER) { + throw new IOException("No available port found up to " + MAX_PORT_NUMBER); + } + + try (ServerSocket testSocket = new ServerSocket(port)) { + return port; + } catch (BindException e) { + // This port is already in use. Continue to next port. + } + } + } + protected TransactionTypes proceduresToTransactionTypes(List> procedures) { TransactionTypes txnTypes = new TransactionTypes(new ArrayList<>()); From 336b4d3283f58a03233c0158f68ee942b4692502 Mon Sep 17 00:00:00 2001 From: neeetman Date: Thu, 26 Oct 2023 07:47:34 +0000 Subject: [PATCH 4/6] Remove space --- src/test/java/com/oltpbenchmark/api/AbstractTestCase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index 198535d61..bc27177c3 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -105,7 +105,7 @@ public final void setUp() throws Exception { int port = findAvailablePort(); LOG.info("starting HSQLDB server for test [{}] on port [{}]", name.getMethodName(), port); - + server = new Server(); server.setProperties(props); server.setDatabasePath(0, "mem:benchbase;sql.syntax_mys=true"); @@ -113,7 +113,7 @@ public final void setUp() throws Exception { server.setAddress("localhost"); server.setPort(port); server.setSilent(true); - server.setLogWriter(null); + server.setLogWriter(null); server.start(); this.workConf = new WorkloadConfiguration(); From 6e26650df40c661e024e27e9c64e6be3be839f41 Mon Sep 17 00:00:00 2001 From: Brian Kroth Date: Mon, 6 Nov 2023 13:51:27 -0600 Subject: [PATCH 5/6] Update src/test/java/com/oltpbenchmark/api/AbstractTestCase.java --- src/test/java/com/oltpbenchmark/api/AbstractTestCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index bc27177c3..6d54a6b86 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -113,7 +113,7 @@ public final void setUp() throws Exception { server.setAddress("localhost"); server.setPort(port); server.setSilent(true); - server.setLogWriter(null); + server.setLogWriter(null); server.start(); this.workConf = new WorkloadConfiguration(); From 7e65d89782f554b26e7569f0e208c05a04f1b540 Mon Sep 17 00:00:00 2001 From: neeetman Date: Wed, 8 Nov 2023 03:13:38 +0000 Subject: [PATCH 6/6] Log a warning --- src/test/java/com/oltpbenchmark/api/AbstractTestCase.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index 6d54a6b86..479f9a9ca 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -178,6 +178,7 @@ private int findAvailablePort() throws IOException { return port; } catch (BindException e) { // This port is already in use. Continue to next port. + LOG.warn("Port {} is already in use. Trying next port.", port); } } }