This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 8dec349a53c4 CAMEL-23214: Migrate AvailablePortFinder in camel-itest
tests (#22124)
8dec349a53c4 is described below
commit 8dec349a53c4228ab34841567b452d60d5238061
Author: Guillaume Nodet <[email protected]>
AuthorDate: Fri Mar 20 09:12:59 2026 +0100
CAMEL-23214: Migrate AvailablePortFinder in camel-itest tests (#22124)
* CAMEL-23214: Migrate AvailablePortFinder in camel-itest tests
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* CAMEL-23214: Fix port migration in camel-itest
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* CAMEL-23214: Fix TOCTOU race in port allocation for non-test classes
Replace getNextAvailable() (which releases the port immediately) with
find() + keeping the Port reference in a field. This prevents another
test from grabbing the same port before the server binds to it.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---------
Co-authored-by: Claude Opus 4.6 <[email protected]>
---
.../java/org/apache/camel/itest/ITestSupport.java | 22 +++++++++++----
...ipientListInterceptSendToEndpointIssueTest.java | 10 +++----
.../camel/itest/greeter/CxfToJmsInOutTest.java | 5 ++--
.../greeter/JettyRecipientListCxfIssueTest.java | 16 ++++++-----
.../camel/itest/greeter/JmsToCxfInOutTest.java | 5 ++--
.../apache/camel/itest/http/HttpTestServer.java | 3 ++-
.../camel/itest/jetty/JettyFreemarkerTest.java | 6 +++--
.../itest/jetty/JettyGroovySetHeaderTest.java | 6 +++--
.../camel/itest/jetty/JettyJmsShutdownTest.java | 4 ++-
.../itest/jetty/JettyMulticastJmsFileTest.java | 7 ++---
.../jetty/JettySimulateFailoverRoundRobinTest.java | 31 +++++++++++++---------
.../camel/itest/jetty/JettyVelocityTest.java | 6 +++--
.../org/apache/camel/itest/jms/JmsHttpJmsTest.java | 5 ++--
.../camel/itest/jms/JmsHttpPostIssueTest.java | 5 ++--
.../itest/jms/JmsHttpPostIssueWithMockTest.java | 5 ++--
.../apache/camel/itest/jms/JmsJettyAsyncTest.java | 5 ++--
.../itest/netty/NettyAsyncRequestReplyTest.java | 6 +++--
.../org/apache/camel/itest/tx/JmsToHttpRoute.java | 4 ++-
...ndNoTransactionErrorHandlerConfiguredRoute.java | 3 ++-
.../itest/tx/JmsToHttpWithOnExceptionRoute.java | 4 ++-
.../camel/itest/tx/JmsToHttpWithRollbackRoute.java | 4 ++-
.../utils/extensions/FtpServiceExtension.java | 7 +++--
.../utils/extensions/GreeterServiceExtension.java | 4 ++-
23 files changed, 110 insertions(+), 63 deletions(-)
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/ITestSupport.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/ITestSupport.java
index 6bea04d1c9d3..6ad6b3584770 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/ITestSupport.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/ITestSupport.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.itest;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.camel.test.AvailablePortFinder;
/**
@@ -24,10 +27,17 @@ import org.apache.camel.test.AvailablePortFinder;
*/
public final class ITestSupport {
- static final int PORT1 = AvailablePortFinder.getNextAvailable();
- static final int PORT2 = AvailablePortFinder.getNextAvailable();
- static final int PORT3 = AvailablePortFinder.getNextAvailable();
- static final int PORT4 = AvailablePortFinder.getNextAvailable();
+ private static final AvailablePortFinder.Port P1 =
AvailablePortFinder.find();
+ private static final AvailablePortFinder.Port P2 =
AvailablePortFinder.find();
+ private static final AvailablePortFinder.Port P3 =
AvailablePortFinder.find();
+ private static final AvailablePortFinder.Port P4 =
AvailablePortFinder.find();
+ static final int PORT1 = P1.getPort();
+ static final int PORT2 = P2.getPort();
+ static final int PORT3 = P3.getPort();
+ static final int PORT4 = P4.getPort();
+
+ // Keep Port references alive to prevent TOCTOU races
+ private static final List<AvailablePortFinder.Port> DYNAMIC_PORTS = new
ArrayList<>();
static {
//set them as system properties so Spring can use the property
placeholder
@@ -42,7 +52,9 @@ public final class ITestSupport {
}
public static int getPort(String name) {
- int port = AvailablePortFinder.getNextAvailable();
+ AvailablePortFinder.Port p = AvailablePortFinder.find();
+ DYNAMIC_PORTS.add(p);
+ int port = p.getPort();
System.setProperty(name, Integer.toString(port));
return port;
}
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/ftp/FtpAndHttpRecipientListInterceptSendToEndpointIssueTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/ftp/FtpAndHttpRecipientListInterceptSendToEndpointIssueTest.java
index 16f1f97420f5..0ec629f0ddc9 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/ftp/FtpAndHttpRecipientListInterceptSendToEndpointIssueTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/ftp/FtpAndHttpRecipientListInterceptSendToEndpointIssueTest.java
@@ -21,7 +21,6 @@ import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.itest.utils.extensions.FtpServiceExtension;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -29,12 +28,9 @@ public class
FtpAndHttpRecipientListInterceptSendToEndpointIssueTest extends Cam
@RegisterExtension
public static FtpServiceExtension ftpServiceExtension = new
FtpServiceExtension();
- protected static int httpPort;
-
- @BeforeAll
- public static void initPort() throws Exception {
- httpPort = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ static AvailablePortFinder.Port httpPortFinder =
AvailablePortFinder.find();
+ protected static int httpPort = httpPortFinder.getPort();
@Test
void testFtpAndHttpIssue() throws Exception {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/CxfToJmsInOutTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/CxfToJmsInOutTest.java
index 1918ac5918ad..b3a0f2d2cb0e 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/CxfToJmsInOutTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/CxfToJmsInOutTest.java
@@ -41,11 +41,12 @@ public class CxfToJmsInOutTest {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
- private static int port = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port port = AvailablePortFinder.find();
static {
//set them as system properties so Spring can use the property place
holder
//things to set them into the URL's in the spring contexts
- System.setProperty("CxfToJmsInOutTest.port", Integer.toString(port));
+ System.setProperty("CxfToJmsInOutTest.port",
Integer.toString(port.getPort()));
}
@Autowired
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.java
index 2e3cdbbc556b..6e763dbb493f 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JettyRecipientListCxfIssueTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.spring.junit6.CamelSpringTestSupport;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.AbstractApplicationContext;
@@ -34,15 +35,18 @@ public class JettyRecipientListCxfIssueTest extends
CamelSpringTestSupport {
private static final Logger LOG =
LoggerFactory.getLogger(JettyRecipientListCxfIssueTest.class);
- private static int port1 = AvailablePortFinder.getNextAvailable();
- private static int port2 = AvailablePortFinder.getNextAvailable();
- private static int port3 = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port port1 = AvailablePortFinder.find();
+ @RegisterExtension
+ static AvailablePortFinder.Port port2 = AvailablePortFinder.find();
+ @RegisterExtension
+ static AvailablePortFinder.Port port3 = AvailablePortFinder.find();
static {
//set them as system properties so Spring can use the property
placeholder
//things to set them into the URL's in the spring contexts
- System.setProperty("RecipientListCxfTest.port1",
Integer.toString(port1));
- System.setProperty("RecipientListCxfTest.port2",
Integer.toString(port2));
- System.setProperty("RecipientListCxfTest.port3",
Integer.toString(port3));
+ System.setProperty("RecipientListCxfTest.port1",
Integer.toString(port1.getPort()));
+ System.setProperty("RecipientListCxfTest.port2",
Integer.toString(port2.getPort()));
+ System.setProperty("RecipientListCxfTest.port3",
Integer.toString(port3.getPort()));
}
@Override
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JmsToCxfInOutTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JmsToCxfInOutTest.java
index ac4fc23771c9..4bc25d7c7c9f 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JmsToCxfInOutTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/greeter/JmsToCxfInOutTest.java
@@ -37,11 +37,12 @@ public class JmsToCxfInOutTest {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
- private static int port = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port port = AvailablePortFinder.find();
static {
//set them as system properties so Spring can use the property place
holder
//things to set them into the URL's in the spring contexts
- System.setProperty("JmsToCxfInOutTest.port", Integer.toString(port));
+ System.setProperty("JmsToCxfInOutTest.port",
Integer.toString(port.getPort()));
}
@Autowired
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/http/HttpTestServer.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/http/HttpTestServer.java
index ba78d1decaee..5d8fe9bbf78d 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/http/HttpTestServer.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/http/HttpTestServer.java
@@ -32,7 +32,8 @@ import org.apache.hc.core5.util.Timeout;
*/
public class HttpTestServer {
- public static final int PORT = AvailablePortFinder.getNextAvailable();
+ private static final AvailablePortFinder.Port PORT_HOLDER =
AvailablePortFinder.find();
+ public static final int PORT = PORT_HOLDER.getPort();
/** The request handler registry. */
private final ServerBootstrap bootstrap;
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyFreemarkerTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyFreemarkerTest.java
index fe5ae05a52fd..cd52d6ce4454 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyFreemarkerTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyFreemarkerTest.java
@@ -28,6 +28,7 @@ import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.apache.camel.util.ObjectHelper;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -35,7 +36,9 @@ import static org.junit.jupiter.api.Assertions.fail;
public class JettyFreemarkerTest extends CamelTestSupport {
- private int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
+ private int port = portFinder.getPort();
@Test
void testClasspath() {
@@ -77,7 +80,6 @@ public class JettyFreemarkerTest extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
- port = AvailablePortFinder.getNextAvailable();
return new RouteBuilder() {
public void configure() {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyGroovySetHeaderTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyGroovySetHeaderTest.java
index 24af88e28e6e..450eafd569b8 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyGroovySetHeaderTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyGroovySetHeaderTest.java
@@ -21,13 +21,16 @@ import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static org.apache.camel.language.groovy.GroovyLanguage.groovy;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class JettyGroovySetHeaderTest extends CamelTestSupport {
- private int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
+ private int port = portFinder.getPort();
@Test
void testJettyGroovySetHeader() throws Exception {
@@ -45,7 +48,6 @@ public class JettyGroovySetHeaderTest extends
CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
- port = AvailablePortFinder.getNextAvailable();
return new RouteBuilder() {
@Override
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyJmsShutdownTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyJmsShutdownTest.java
index 11144e1d6125..b0ee747ae494 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyJmsShutdownTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyJmsShutdownTest.java
@@ -39,9 +39,11 @@ public class JettyJmsShutdownTest {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
+ @RegisterExtension
+ static AvailablePortFinder.Port portHolder = AvailablePortFinder.find();
private static final String URL;
static {
- int port = AvailablePortFinder.getNextAvailable();
+ int port = portHolder.getPort();
URL = "http://localhost:" + port + "/JettyJmsShutdownTest";
//set them as system properties so Spring can use the property
placeholder
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyMulticastJmsFileTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyMulticastJmsFileTest.java
index f21126a7e8b0..4caaf105cb0b 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyMulticastJmsFileTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyMulticastJmsFileTest.java
@@ -38,12 +38,13 @@ public class JettyMulticastJmsFileTest {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
- private static int port = AvailablePortFinder.getNextAvailable();
- private static final String URL = "http://localhost:" + port +
"/JettyMulticastJmsFileTest";
+ @RegisterExtension
+ static AvailablePortFinder.Port port = AvailablePortFinder.find();
+ private static final String URL = "http://localhost:" + port.getPort() +
"/JettyMulticastJmsFileTest";
static {
//set them as system properties so Spring can use the property
placeholder
//things to set them into the URL's in the spring contexts
- System.setProperty("JettyMulticastJmsFileTest.port",
Integer.toString(port));
+ System.setProperty("JettyMulticastJmsFileTest.port",
Integer.toString(port.getPort()));
}
@Autowired
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java
index 9d62bdeccd1e..18c1923d7927 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettySimulateFailoverRoundRobinTest.java
@@ -28,24 +28,29 @@ import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class JettySimulateFailoverRoundRobinTest extends CamelTestSupport {
- private static int port1 = AvailablePortFinder.getNextAvailable();
- private static int port2 = AvailablePortFinder.getNextAvailable();
- private static int port3 = AvailablePortFinder.getNextAvailable();
- private static int port4 = AvailablePortFinder.getNextAvailable();
-
- private String bad = "jetty:http://localhost:" + port1 + "/bad";
- private String bad2 = "jetty:http://localhost:" + port2 + "/bad2";
- private String good = "jetty:http://localhost:" + port3 + "/good";
- private String good2 = "jetty:http://localhost:" + port4 + "/good2";
- private String hbad = "http://localhost:" + port1 + "/bad";
- private String hbad2 = "http://localhost:" + port2 + "/bad2";
- private String hgood = "http://localhost:" + port3 + "/good";
- private String hgood2 = "http://localhost:" + port4 + "/good2";
+ @RegisterExtension
+ static AvailablePortFinder.Port port1 = AvailablePortFinder.find();
+ @RegisterExtension
+ static AvailablePortFinder.Port port2 = AvailablePortFinder.find();
+ @RegisterExtension
+ static AvailablePortFinder.Port port3 = AvailablePortFinder.find();
+ @RegisterExtension
+ static AvailablePortFinder.Port port4 = AvailablePortFinder.find();
+
+ private String bad = "jetty:http://localhost:" + port1.getPort() + "/bad";
+ private String bad2 = "jetty:http://localhost:" + port2.getPort() +
"/bad2";
+ private String good = "jetty:http://localhost:" + port3.getPort() +
"/good";
+ private String good2 = "jetty:http://localhost:" + port4.getPort() +
"/good2";
+ private String hbad = "http://localhost:" + port1.getPort() + "/bad";
+ private String hbad2 = "http://localhost:" + port2.getPort() + "/bad2";
+ private String hgood = "http://localhost:" + port3.getPort() + "/good";
+ private String hgood2 = "http://localhost:" + port4.getPort() + "/good2";
@Test
void testJettySimulateFailoverRoundRobin() throws Exception {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyVelocityTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyVelocityTest.java
index f69880d1e84a..a1fda2be796f 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyVelocityTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyVelocityTest.java
@@ -28,6 +28,7 @@ import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.apache.camel.util.ObjectHelper;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -35,7 +36,9 @@ import static org.junit.jupiter.api.Assertions.fail;
public class JettyVelocityTest extends CamelTestSupport {
- private int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
+ private int port = portFinder.getPort();
@Test
void testClasspath() {
@@ -77,7 +80,6 @@ public class JettyVelocityTest extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
- port = AvailablePortFinder.getNextAvailable();
return new RouteBuilder() {
public void configure() {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpJmsTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpJmsTest.java
index 54b0e5dbc19b..9e6a5ee810a1 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpJmsTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpJmsTest.java
@@ -41,7 +41,9 @@ public class JmsHttpJmsTest extends CamelTestSupport {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
- private int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
+ private int port = portFinder.getPort();
@Test
void testJmsHttpJms() throws Exception {
@@ -67,7 +69,6 @@ public class JmsHttpJmsTest extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
- port = AvailablePortFinder.getNextAvailable();
return new RouteBuilder() {
public void configure() {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueTest.java
index 91ba8cda10a1..d87678a44ea0 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueTest.java
@@ -42,7 +42,9 @@ public class JmsHttpPostIssueTest extends CamelTestSupport {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
- private int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
+ private int port = portFinder.getPort();
@Test
void testJmsInOnlyHttpPostIssue() {
@@ -61,7 +63,6 @@ public class JmsHttpPostIssueTest extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
- port = AvailablePortFinder.getNextAvailable();
return new RouteBuilder() {
public void configure() {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueWithMockTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueWithMockTest.java
index 9a93a8a86f3d..2e10ff86d15f 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueWithMockTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsHttpPostIssueWithMockTest.java
@@ -41,7 +41,9 @@ public class JmsHttpPostIssueWithMockTest extends
CamelTestSupport {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
- private int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
+ private int port = portFinder.getPort();
@Test
void testJmsInOnlyHttpPostIssue() throws Exception {
@@ -64,7 +66,6 @@ public class JmsHttpPostIssueWithMockTest extends
CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
- port = AvailablePortFinder.getNextAvailable();
return new RouteBuilder() {
public void configure() {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsJettyAsyncTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsJettyAsyncTest.java
index 526213ce6ffd..1e0e891b6cc8 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsJettyAsyncTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/jms/JmsJettyAsyncTest.java
@@ -36,8 +36,10 @@ public class JmsJettyAsyncTest extends CamelTestSupport {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
private int size = 100;
- private int port;
+ private int port = portFinder.getPort();
@Test
void testJmsJettyAsyncTest() throws Exception {
@@ -53,7 +55,6 @@ public class JmsJettyAsyncTest extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() {
- port = AvailablePortFinder.getNextAvailable();
return new RouteBuilder() {
@Override
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/netty/NettyAsyncRequestReplyTest.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/netty/NettyAsyncRequestReplyTest.java
index b0a06f9eacdb..7f1811e50ed5 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/netty/NettyAsyncRequestReplyTest.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/netty/NettyAsyncRequestReplyTest.java
@@ -49,9 +49,12 @@ public class NettyAsyncRequestReplyTest extends
CamelTestSupport {
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension =
JmsServiceExtension.createExtension();
+ @RegisterExtension
+ static AvailablePortFinder.Port portFinder = AvailablePortFinder.find();
+
private static final Logger LOG =
LoggerFactory.getLogger(NettyAsyncRequestReplyTest.class);
- private int port;
+ private int port = portFinder.getPort();
@Test
void testNetty() {
@@ -101,7 +104,6 @@ public class NettyAsyncRequestReplyTest extends
CamelTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
- port = AvailablePortFinder.getNextAvailable();
from("netty:tcp://localhost:" + port +
"?textline=true&sync=true&reuseAddress=true&synchronous=false")
.to("activemq:queue:NettyAsyncRequestReplyTest")
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpRoute.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpRoute.java
index 7f77c1249dce..ae3377d949bc 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpRoute.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpRoute.java
@@ -33,6 +33,7 @@ import static
org.apache.camel.itest.TransactionSupport.transactionErrorHandler;
*/
public class JmsToHttpRoute extends RouteBuilder {
protected static int counter;
+ protected AvailablePortFinder.Port portHolder;
protected int port;
@Resource(name = "PROPAGATION_REQUIRED")
@@ -46,7 +47,8 @@ public class JmsToHttpRoute extends RouteBuilder {
@Override
public void configure() {
- port = AvailablePortFinder.getNextAvailable();
+ portHolder = AvailablePortFinder.find();
+ port = portHolder.getPort();
// configure a global transacted error handler
errorHandler(transactionErrorHandler(required));
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionAndNoTransactionErrorHandlerConfiguredRoute.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionAndNoTransactionErrorHandlerConfiguredRoute.java
index 3ff925f8acc8..57dbe61acfa6 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionAndNoTransactionErrorHandlerConfiguredRoute.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionAndNoTransactionErrorHandlerConfiguredRoute.java
@@ -30,7 +30,8 @@ public class
JmsToHttpWithOnExceptionAndNoTransactionErrorHandlerConfiguredRoute
@Override
public void configure() {
- port = AvailablePortFinder.getNextAvailable();
+ portHolder = AvailablePortFinder.find();
+ port = portHolder.getPort();
// if its a 404 then regard it as handled
onException(HttpOperationFailedException.class).onWhen(exchange -> {
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionRoute.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionRoute.java
index 91a5eede0183..e0e4ed12b264 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionRoute.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithOnExceptionRoute.java
@@ -33,6 +33,7 @@ import static
org.apache.camel.itest.TransactionSupport.transactionErrorHandler;
*/
public class JmsToHttpWithOnExceptionRoute extends RouteBuilder {
protected static int counter;
+ protected AvailablePortFinder.Port portHolder;
protected int port;
@Resource(name = "PROPAGATION_REQUIRED")
@@ -45,7 +46,8 @@ public class JmsToHttpWithOnExceptionRoute extends
RouteBuilder {
@Override
public void configure() {
- port = AvailablePortFinder.getNextAvailable();
+ portHolder = AvailablePortFinder.find();
+ port = portHolder.getPort();
// configure a global transacted error handler
errorHandler(transactionErrorHandler(required));
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithRollbackRoute.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithRollbackRoute.java
index 82ae446d7a30..4f44bbdcfdc8 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithRollbackRoute.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/tx/JmsToHttpWithRollbackRoute.java
@@ -33,6 +33,7 @@ import static
org.apache.camel.itest.TransactionSupport.transactionErrorHandler;
*/
public class JmsToHttpWithRollbackRoute extends RouteBuilder {
protected static int counter;
+ protected AvailablePortFinder.Port portHolder;
protected int port;
@Resource(name = "PROPAGATION_REQUIRED")
@@ -46,7 +47,8 @@ public class JmsToHttpWithRollbackRoute extends RouteBuilder {
@Override
public void configure() {
- port = AvailablePortFinder.getNextAvailable();
+ portHolder = AvailablePortFinder.find();
+ port = portHolder.getPort();
// configure a global transacted error handler
errorHandler(transactionErrorHandler(required));
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/FtpServiceExtension.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/FtpServiceExtension.java
index f96bd98adba0..5e2a19550e97 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/FtpServiceExtension.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/FtpServiceExtension.java
@@ -32,18 +32,21 @@ import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
public class FtpServiceExtension implements BeforeAllCallback,
AfterAllCallback {
+ private static AvailablePortFinder.Port ftpPortHolder;
private static int ftpPort;
private static FtpServer ftpServer;
public FtpServiceExtension() {
if (ftpPort == 0) {
- ftpPort = AvailablePortFinder.getNextAvailable();
+ ftpPortHolder = AvailablePortFinder.find();
+ ftpPort = ftpPortHolder.getPort();
}
}
public FtpServiceExtension(String property) {
if (ftpPort == 0) {
- ftpPort = AvailablePortFinder.getNextAvailable();
+ ftpPortHolder = AvailablePortFinder.find();
+ ftpPort = ftpPortHolder.getPort();
}
//set them as system properties so Spring can use the property
placeholder
diff --git
a/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/GreeterServiceExtension.java
b/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/GreeterServiceExtension.java
index 7885649ede42..dcd0ee4ef51b 100644
---
a/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/GreeterServiceExtension.java
+++
b/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/GreeterServiceExtension.java
@@ -31,10 +31,12 @@ public class GreeterServiceExtension implements
BeforeAllCallback, AfterAllCallb
private static final GreeterImpl GREETER;
private static final String ADDRESS;
+ private static final AvailablePortFinder.Port PORT_HOLDER;
private static final int PORT;
static {
- PORT = AvailablePortFinder.getNextAvailable();
+ PORT_HOLDER = AvailablePortFinder.find();
+ PORT = PORT_HOLDER.getPort();
GREETER = new GreeterImpl();
ADDRESS = "http://localhost:" + PORT + "/SoapContext/SoapPort";