From 21580a6d2d2faf74e26ed013dbb5a5fef4d73927 Mon Sep 17 00:00:00 2001 From: Jukka Zitting Date: Thu, 12 Jul 2012 13:55:40 +0200 Subject: [PATCH] JCR-3385: DbClusterTest fails when port is already in use --- .../jackrabbit/core/cluster/DbClusterTest.java | 28 ++++++++++++++++++-- .../core/cluster/DbClusterTestJCR3162.java | 12 ++++++--- .../jackrabbit/core/cluster/repository-h2.xml | 12 ++++----- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTest.java b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTest.java index c663beb..af109bf 100644 --- a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTest.java +++ b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTest.java @@ -18,6 +18,9 @@ package org.apache.jackrabbit.core.cluster; import java.io.File; import java.io.IOException; +import java.net.ServerSocket; +import java.util.Random; + import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; @@ -32,13 +35,34 @@ import org.h2.tools.Server; */ public class DbClusterTest extends JUnitTest { + static String findFreePort() { + try { + ServerSocket socket = new ServerSocket(); + try { + socket.bind(null); + return String.valueOf(socket.getLocalPort()); + } finally { + socket.close(); + } + } catch (IOException e) { + // something went wrong, just try a random port as a fallback + return String.valueOf(new Random().nextInt(32 * 1024) + 10000); + } + } + + private String port1 = findFreePort(); + private String port2 = findFreePort(); + Server server1, server2; public void setUp() throws Exception { deleteAll(); - server1 = Server.createTcpServer("-tcpPort", "9001", "-baseDir", + System.setProperty("h2.bindAddress", "localhost"); + System.setProperty("port1", port1); + System.setProperty("port2", port2); + server1 = Server.createTcpServer("-tcpPort", port1, "-baseDir", "./target/dbClusterTest/db1", "-tcpAllowOthers").start(); - server2 = Server.createTcpServer("-tcpPort", "9002", "-baseDir", + server2 = Server.createTcpServer("-tcpPort", port2, "-baseDir", "./target/dbClusterTest/db2", "-tcpAllowOthers").start(); FileUtils.copyFile( new File("./src/test/resources/org/apache/jackrabbit/core/cluster/repository-h2.xml"), diff --git a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTestJCR3162.java b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTestJCR3162.java index 6f7067d..6379309 100644 --- a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTestJCR3162.java +++ b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/DbClusterTestJCR3162.java @@ -48,6 +48,9 @@ public class DbClusterTestJCR3162 extends JUnitTest { private static final SimpleCredentials ADMIN = new SimpleCredentials( "admin", "admin".toCharArray()); + private String port1 = DbClusterTest.findFreePort(); + private String port2 = DbClusterTest.findFreePort(); + private Server server1; private Server server2; @@ -59,9 +62,12 @@ public class DbClusterTestJCR3162 extends JUnitTest { public void setUp() throws Exception { deleteAll(); - server1 = Server.createTcpServer("-tcpPort", "9001", "-baseDir", + System.setProperty("h2.bindAddress", "localhost"); + System.setProperty("port1", port1); + System.setProperty("port2", port2); + server1 = Server.createTcpServer("-tcpPort", port1, "-baseDir", "./target/dbClusterTest/db1", "-tcpAllowOthers").start(); - server2 = Server.createTcpServer("-tcpPort", "9002", "-baseDir", + server2 = Server.createTcpServer("-tcpPort", port2, "-baseDir", "./target/dbClusterTest/db2", "-tcpAllowOthers").start(); FileUtils .copyFile( @@ -133,7 +139,7 @@ public class DbClusterTestJCR3162 extends JUnitTest { Connection con = null; try { con = DriverManager.getConnection( - "jdbc:h2:tcp://localhost:9001,localhost:9002/db", "sa", + "jdbc:h2:tcp://localhost:" + port1 + ",localhost:" + port2 + "/db", "sa", "sa"); PreparedStatement prep = con .prepareStatement("update JOURNAL_LOCAL_REVISIONS set REVISION_ID=0 where JOURNAL_ID=?"); diff --git a/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/cluster/repository-h2.xml b/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/cluster/repository-h2.xml index d15f787..30ac295 100644 --- a/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/cluster/repository-h2.xml +++ b/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/cluster/repository-h2.xml @@ -28,7 +28,7 @@ (e.g. registered namespaces, custom node types, etc.) --> - + @@ -38,7 +38,7 @@ data store configuration --> - + @@ -103,7 +103,7 @@ class: FQN of class implementing the PersistenceManager interface --> - + @@ -115,7 +115,7 @@ --> - + @@ -138,7 +138,7 @@ implementations. --> - + @@ -160,7 +160,7 @@ - + -- 1.7.10.msysgit.1