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 aed48e70e583 CAMEL-23214: Migrate AvailablePortFinder in miscellaneous
component tests
aed48e70e583 is described below
commit aed48e70e583267eff1c147216a521ed7c00f1b1
Author: Guillaume Nodet <[email protected]>
AuthorDate: Fri Mar 20 14:55:33 2026 +0100
CAMEL-23214: Migrate AvailablePortFinder in miscellaneous component tests
Migrate from deprecated getNextAvailable() to find() across 69 test files
to eliminate TOCTOU port races.
---
.../websocket/WebsocketCamelRouterTestSupport.java | 6 ++--
...bsocketCamelRouterWithInitParamTestSupport.java | 6 ++--
.../component/avro/AvroConsumerTestSupport.java | 19 ++++++++++--
.../camel/component/avro/AvroTestSupport.java | 21 ++++++++-----
.../component/clickup/ClickUpWebhookCallTest.java | 11 +------
...lickUpWebhookRegistrationAlreadyExistsTest.java | 2 +-
.../clickup/ClickUpWebhookRegistrationTest.java | 2 +-
.../component/clickup/util/ClickUpTestSupport.java | 10 ++-----
.../camel/component/elytron/BaseElytronTest.java | 7 +++--
.../file/remote/FromFtpClientSoTimeoutTest.java | 6 ++--
.../SftpSimpleConsumeThroughProxyIT.java | 9 ++++--
.../SftpSimpleProduceThroughProxyIT.java | 9 ++++--
.../apache/camel/component/hl7/HL7TestSupport.java | 12 +++-----
.../http/HttpCustomComponentNameTest.java | 8 +++--
.../component/http/HttpProducerSessionTest.java | 7 +++--
...psTwoComponentsSslContextParametersGetTest.java | 8 ++---
.../integration/WatsonxAiWebSocketStreamingIT.java | 20 +++++++------
.../camel/component/iec60870/ConnectionTest.java | 22 +++++++-------
...tReplyTemporaryRefreshFailureOnStartupTest.java | 8 +++--
.../apache/camel/component/jmx/JMXRemoteTest.java | 9 ++++--
.../jmx/JMXRobustRemoteConnectionTest.java | 20 +++++++++++--
.../camel/component/scp/ScpServerTestSupport.java | 12 +++-----
.../camel/jsonpath/JsonPathPlatformHttpTest.java | 8 +++--
.../component/knative/http/KnativeHttpServer.java | 35 +++++++++++++++++++---
.../component/knative/http/KnativeHttpTest.java | 6 ++--
.../component/knative/http/KnativeHttpsServer.java | 9 +++---
.../core/integ5/ServerAnnotationProcessor.java | 6 +++-
.../core/integ5/ServerAnnotationProcessor.java | 6 +++-
.../camel/service/lra/AbstractLRATestSupport.java | 8 ++---
.../LumberjackComponentGlobalSSLTest.java | 15 ++++------
.../lumberjack/LumberjackComponentSSLTest.java | 14 ++++-----
.../lumberjack/LumberjackComponentTest.java | 14 ++++-----
.../lumberjack/LumberjackDisconnectionTest.java | 14 ++++-----
.../lumberjack/LumberjackMultiThreadIT.java | 8 +++--
.../component/milo/AbstractMiloServerTest.java | 15 ++++------
.../component/milo/server/ServerLocalTest.java | 6 +++-
.../apache/camel/component/mina/BaseMinaTest.java | 20 +++++++------
.../camel/oaipmh/utils/MockOaipmhServer.java | 25 +++++++++++-----
.../olingo2/AbstractOlingo2AppAPITestSupport.java | 8 +++--
.../mqtt5/PahoMqtt5ReconnectAfterFailureIT.java | 16 ++++++----
.../paho/PahoReconnectAfterFailureIT.java | 12 ++++----
.../camel/component/pubnub/PubNubTestBase.java | 8 +++--
.../camel/component/salesforce/PubSubApiTest.java | 9 +++++-
.../apache/camel/maven/HttpProxyMojoManualIT.java | 34 +++++++++++----------
.../servlet/ServletCamelRouterTestSupport.java | 5 +++-
.../camel/component/slack/SlackProducerTest.java | 9 ++++--
.../smpp/integration/SmppTRXProducerIT.java | 13 ++++----
...mppTRXProducerSupervisingRouteControllerIT.java | 9 +++---
.../org/apache/camel/component/snmp/TrapTest.java | 26 +++++++++-------
.../AbstractSpringSecurityBearerTokenTest.java | 12 +++-----
.../component/ssh/SshAlgorithmParametersTest.java | 30 +++++++++++--------
.../component/ssh/SshComponentTestSupport.java | 5 +++-
.../camel/component/ssh/SshIdleTimeoutTest.java | 10 ++++---
.../camel/component/stomp/StompBaseTest.java | 14 +++++----
.../StompConsumerHeaderFilterStrategyTest.java | 4 +--
.../camel/component/stomp/StompConsumerTest.java | 2 +-
.../component/stomp/StompConsumerUriTest.java | 2 +-
.../stomp/StompGlobalSslConsumerTest.java | 2 +-
.../camel/component/stomp/StompProducerTest.java | 2 +-
.../component/stomp/StompSslConsumerTest.java | 2 +-
.../component/stomp/StompSslProducerTest.java | 2 +-
.../component/webhook/WebhookBasePathTest.java | 2 +-
.../component/webhook/WebhookHttpBindingTest.java | 2 +-
.../component/webhook/WebhookMultiRouteTest.java | 2 +-
.../camel/component/webhook/WebhookPathTest.java | 2 +-
.../component/webhook/WebhookRegistrationTest.java | 2 +-
.../camel/component/webhook/WebhookTestBase.java | 10 ++-----
.../component/webhook/WebhookUriEncodingTest.java | 2 +-
.../component/whatsapp/WhatsAppWebhookTest.java | 13 ++++----
.../builder/endpoint/EndpointQueryParamTest.java | 12 +++++---
.../apache/camel/builder/endpoint/RestDslTest.java | 7 +++--
.../camel/dsl/jbang/it/RunCommandOnMqttITCase.java | 6 ++--
72 files changed, 429 insertions(+), 310 deletions(-)
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterTestSupport.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterTestSupport.java
index ab94dca517f2..b29e5c159b3b 100644
---
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterTestSupport.java
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterTestSupport.java
@@ -23,9 +23,11 @@ import
org.apache.camel.test.infra.jetty.services.JettyEmbeddedService;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.RegisterExtension;
public abstract class WebsocketCamelRouterTestSupport extends CamelTestSupport
{
- protected static final int PORT = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ protected static AvailablePortFinder.Port PORT =
AvailablePortFinder.find();
// This test needs to run with its own lifecycle management, so we cannot
use extensions
private JettyEmbeddedService service;
@@ -34,7 +36,7 @@ public abstract class WebsocketCamelRouterTestSupport extends
CamelTestSupport {
void setupJetty() {
final JettyConfiguration jettyConfiguration = JettyConfigurationBuilder
.emptyTemplate()
- .withPort(PORT)
+ .withPort(PORT.getPort())
.withContextPath(JettyConfiguration.ROOT_CONTEXT_PATH)
.withWebSocketConfiguration()
.addServletConfiguration(new
JettyConfiguration.WebSocketContextHandlerConfiguration.ServletConfiguration<>(
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterWithInitParamTestSupport.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterWithInitParamTestSupport.java
index 0e6670cbe0ce..a00a6c901e2b 100644
---
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterWithInitParamTestSupport.java
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketCamelRouterWithInitParamTestSupport.java
@@ -23,9 +23,11 @@ import
org.apache.camel.test.infra.jetty.services.JettyEmbeddedService;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.RegisterExtension;
public abstract class WebsocketCamelRouterWithInitParamTestSupport extends
CamelTestSupport {
- protected static final int PORT = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ protected static AvailablePortFinder.Port PORT =
AvailablePortFinder.find();
// This test needs to run with its own lifecycle management, so we cannot
use extensions
protected JettyEmbeddedService service;
@@ -42,7 +44,7 @@ public abstract class
WebsocketCamelRouterWithInitParamTestSupport extends Camel
final JettyConfiguration jettyConfiguration = JettyConfigurationBuilder
.emptyTemplate()
- .withPort(PORT)
+ .withPort(PORT.getPort())
.withContextPath(JettyConfiguration.ROOT_CONTEXT_PATH)
.withWebSocketConfiguration().addServletConfiguration(servletConfiguration).build()
.build();
diff --git
a/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
index 9ea12f3845f2..1c8d8527f611 100644
---
a/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
+++
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
@@ -27,6 +27,7 @@ import org.apache.camel.avro.impl.KeyValueProtocolImpl;
import org.apache.camel.avro.test.TestPojo;
import org.apache.camel.avro.test.TestReflection;
import org.apache.camel.avro.test.TestReflectionImpl;
+import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.TestNameExtension;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
@@ -40,8 +41,13 @@ public abstract class AvroConsumerTestSupport extends
AvroTestSupport {
public static final String REFLECTION_TEST_NAME = "Chucky";
public static final int REFLECTION_TEST_AGE = 100;
- protected int avroPortMessageInRoute =
setupFreePort("avroPortMessageInRoute");
- protected int avroPortForWrongMessages =
setupFreePort("avroPortForWrongMessages");
+ @RegisterExtension
+ AvailablePortFinder.Port avroPortMessageInRouteHolder =
AvailablePortFinder.find();
+ @RegisterExtension
+ AvailablePortFinder.Port avroPortForWrongMessagesHolder =
AvailablePortFinder.find();
+
+ protected int avroPortMessageInRoute;
+ protected int avroPortForWrongMessages;
Transceiver transceiver;
Requestor requestor;
@@ -62,6 +68,15 @@ public abstract class AvroConsumerTestSupport extends
AvroTestSupport {
@Order(10)
TestNameExtension testNameExtension = new TestNameExtension();
+ @Override
+ protected void doPreSetup() throws Exception {
+ super.doPreSetup();
+ avroPortMessageInRoute = avroPortMessageInRouteHolder.getPort();
+ avroPortForWrongMessages = avroPortForWrongMessagesHolder.getPort();
+ System.setProperty("avroPortMessageInRoute",
String.valueOf(avroPortMessageInRoute));
+ System.setProperty("avroPortForWrongMessages",
String.valueOf(avroPortForWrongMessages));
+ }
+
protected abstract void initializeTranceiver() throws IOException;
@Override
diff --git
a/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
index 89eb4e9698f7..a4fb2b7263ea 100644
---
a/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
+++
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
@@ -19,16 +19,23 @@ package org.apache.camel.component.avro;
import org.apache.camel.CamelContext;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class AvroTestSupport extends CamelTestSupport {
- protected int port = 9100;
- protected int avroPort = setupFreePort("avroport");
- protected int avroPortReflection = setupFreePort("avroPortReflection");
+ @RegisterExtension
+ AvailablePortFinder.Port avroPortHolder = AvailablePortFinder.find();
+ @RegisterExtension
+ AvailablePortFinder.Port avroPortReflectionHolder =
AvailablePortFinder.find();
- public int setupFreePort(String name) {
- port = AvailablePortFinder.getNextAvailable();
- System.setProperty(name, String.valueOf(port));
- return port;
+ protected int avroPort;
+ protected int avroPortReflection;
+
+ @Override
+ protected void doPreSetup() throws Exception {
+ avroPort = avroPortHolder.getPort();
+ avroPortReflection = avroPortReflectionHolder.getPort();
+ System.setProperty("avroport", String.valueOf(avroPort));
+ System.setProperty("avroPortReflection",
String.valueOf(avroPortReflection));
}
@Override
diff --git
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookCallTest.java
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookCallTest.java
index 15bacaed2fcf..baddae18e713 100644
---
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookCallTest.java
+++
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookCallTest.java
@@ -27,8 +27,6 @@ import
org.apache.camel.component.clickup.util.ClickUpTestSupport;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.component.webhook.WebhookConfiguration;
import org.apache.camel.component.webhook.WebhookEndpoint;
-import org.apache.camel.test.AvailablePortFinder;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,13 +44,6 @@ public class ClickUpWebhookCallTest extends
ClickUpTestSupport {
public static final String MESSAGES_EVENTS_TIME_TRACKING_CREATED_SIGNATURE
=
"ac99f10017e28db6839941c184964890ec3262b1d6b1756d33ff53d972d5a361";
- private static int port;
-
- @BeforeAll
- public static void initPort() {
- port = AvailablePortFinder.getNextAvailable();
- }
-
@Test
public void testWebhookCall() throws Exception {
WebhookConfiguration config
@@ -85,7 +76,7 @@ public class ClickUpWebhookCallTest extends
ClickUpTestSupport {
public void configure() {
restConfiguration()
.host("localhost")
- .port(port);
+ .port(port.getPort());
from("webhook:clickup:" + WORKSPACE_ID +
"?authorizationToken=" + AUTHORIZATION_TOKEN + "&webhookSecret="
+ WEBHOOK_SECRET + "&events=" + String.join(",", EVENTS)
+ "&webhookAutoRegister=false")
diff --git
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java
index c1658407bff0..c198153205f4 100644
---
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java
+++
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java
@@ -138,7 +138,7 @@ public class ClickUpWebhookRegistrationAlreadyExistsTest
extends ClickUpTestSupp
@Override
protected ClickUpMockRoutes createMockRoutes() {
- ClickUpMockRoutes clickUpMockRoutes = new ClickUpMockRoutes(port);
+ ClickUpMockRoutes clickUpMockRoutes = new
ClickUpMockRoutes(port.getPort());
clickUpMockRoutes.addEndpoint(
"health",
diff --git
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java
index fdc3f55bd436..f7d2ead33a0e 100644
---
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java
+++
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java
@@ -150,7 +150,7 @@ public class ClickUpWebhookRegistrationTest extends
ClickUpTestSupport {
@Override
protected ClickUpMockRoutes createMockRoutes() {
- ClickUpMockRoutes clickUpMockRoutes = new ClickUpMockRoutes(port);
+ ClickUpMockRoutes clickUpMockRoutes = new
ClickUpMockRoutes(port.getPort());
clickUpMockRoutes.addEndpoint(
"health",
diff --git
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java
index c68c3bde21aa..cb92941f08fd 100644
---
a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java
+++
b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java
@@ -24,22 +24,18 @@ import org.apache.camel.CamelContext;
import org.apache.camel.component.clickup.ClickUpComponent;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
/**
* A support test class for ClickUp tests.
*/
public class ClickUpTestSupport extends CamelTestSupport {
- protected static volatile int port;
+ @RegisterExtension
+ protected static AvailablePortFinder.Port port =
AvailablePortFinder.find();
private ClickUpMockRoutes mockRoutes;
- @BeforeAll
- public static void initPort() {
- port = AvailablePortFinder.getNextAvailable();
- }
-
/**
* Retrieves a response from a JSON file on classpath.
*
diff --git
a/components/camel-elytron/src/test/java/org/apache/camel/component/elytron/BaseElytronTest.java
b/components/camel-elytron/src/test/java/org/apache/camel/component/elytron/BaseElytronTest.java
index 583c0b4e4f85..a0373ec0c7d8 100644
---
a/components/camel-elytron/src/test/java/org/apache/camel/component/elytron/BaseElytronTest.java
+++
b/components/camel-elytron/src/test/java/org/apache/camel/component/elytron/BaseElytronTest.java
@@ -33,6 +33,7 @@ import
org.apache.camel.component.undertow.spi.UndertowSecurityProvider;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.wildfly.security.WildFlyElytronBaseProvider;
import org.wildfly.security.auth.permission.LoginPermission;
import org.wildfly.security.auth.realm.token.TokenSecurityRealm;
@@ -46,7 +47,8 @@ import org.wildfly.security.permission.PermissionVerifier;
*/
public abstract class BaseElytronTest extends CamelTestSupport {
- private static volatile int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port port = AvailablePortFinder.find();
private static KeyPair keyPair;
private final AtomicInteger counter = new AtomicInteger(1);
@@ -59,7 +61,6 @@ public abstract class BaseElytronTest extends
CamelTestSupport {
@BeforeAll
public static void initPort() throws Exception {
- port = AvailablePortFinder.getNextAvailable();
keyPair = null;
URL location =
ElytronSecurityProvider.class.getProtectionDomain().getCodeSource().getLocation();
@@ -74,7 +75,7 @@ public abstract class BaseElytronTest extends
CamelTestSupport {
}
protected static int getPort() {
- return port;
+ return port.getPort();
}
@BindToRegistry("prop")
diff --git
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java
index 60143cdd1aa1..89660e324499 100644
---
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java
+++
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.apache.commons.net.ftp.FTPFile;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -34,10 +35,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
*/
public class FromFtpClientSoTimeoutTest extends CamelTestSupport {
- int port = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
private String getFtpUrl() {
- return "ftp://admin@localhost:" + port + "/timeout/?soTimeout=5000";
+ return "ftp://admin@localhost:" + port.getPort() +
"/timeout/?soTimeout=5000";
}
@Test
diff --git
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeThroughProxyIT.java
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeThroughProxyIT.java
index be31a5c86ec4..f3d0472ce423 100644
---
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeThroughProxyIT.java
+++
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeThroughProxyIT.java
@@ -27,6 +27,7 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.condition.EnabledIf;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.littleshoot.proxy.HttpProxyServer;
import org.littleshoot.proxy.ProxyAuthenticator;
import org.littleshoot.proxy.impl.DefaultHttpProxyServer;
@@ -35,12 +36,14 @@ import org.littleshoot.proxy.impl.DefaultHttpProxyServer;
@EnabledIf(value =
"org.apache.camel.test.infra.ftp.services.embedded.SftpUtil#hasRequiredAlgorithms('src/test/resources/hostkey.pem')")
public class SftpSimpleConsumeThroughProxyIT extends SftpServerTestSupport {
private static HttpProxyServer proxyServer;
- private final int proxyPort = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+
+ AvailablePortFinder.Port proxyPort = AvailablePortFinder.find();
@BeforeAll
public void setupProxy() {
proxyServer = DefaultHttpProxyServer.bootstrap()
- .withPort(proxyPort)
+ .withPort(proxyPort.getPort())
.withProxyAuthenticator(new ProxyAuthenticator() {
@Override
public boolean authenticate(String userName, String
password) {
@@ -92,7 +95,7 @@ public class SftpSimpleConsumeThroughProxyIT extends
SftpServerTestSupport {
@BindToRegistry("proxy")
public ProxyHTTP createProxy() {
- final ProxyHTTP proxyHTTP = new ProxyHTTP("localhost", proxyPort);
+ final ProxyHTTP proxyHTTP = new ProxyHTTP("localhost",
proxyPort.getPort());
proxyHTTP.setUserPasswd("user", "password");
return proxyHTTP;
}
diff --git
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleProduceThroughProxyIT.java
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleProduceThroughProxyIT.java
index 9dccdfbf44f5..123a6e8c9612 100644
---
a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleProduceThroughProxyIT.java
+++
b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleProduceThroughProxyIT.java
@@ -26,6 +26,7 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIf;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.littleshoot.proxy.HttpProxyServer;
import org.littleshoot.proxy.ProxyAuthenticator;
import org.littleshoot.proxy.impl.DefaultHttpProxyServer;
@@ -37,12 +38,14 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class SftpSimpleProduceThroughProxyIT extends SftpServerTestSupport {
private static HttpProxyServer proxyServer;
- private final int proxyPort = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+
+ AvailablePortFinder.Port proxyPort = AvailablePortFinder.find();
@BeforeEach
public void setupProxy() {
proxyServer = DefaultHttpProxyServer.bootstrap()
- .withPort(proxyPort)
+ .withPort(proxyPort.getPort())
.withProxyAuthenticator(new ProxyAuthenticator() {
@Override
public boolean authenticate(String userName, String
password) {
@@ -104,7 +107,7 @@ public class SftpSimpleProduceThroughProxyIT extends
SftpServerTestSupport {
@BindToRegistry("proxy")
public ProxyHTTP createProxy() {
- final ProxyHTTP proxyHTTP = new ProxyHTTP("localhost", proxyPort);
+ final ProxyHTTP proxyHTTP = new ProxyHTTP("localhost",
proxyPort.getPort());
proxyHTTP.setUserPasswd("user", "password");
return proxyHTTP;
}
diff --git
a/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7TestSupport.java
b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7TestSupport.java
index e4fcad2e7532..7d70fee609f0 100644
---
a/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7TestSupport.java
+++
b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7TestSupport.java
@@ -18,19 +18,15 @@ package org.apache.camel.component.hl7;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
public abstract class HL7TestSupport extends CamelTestSupport {
- private static int port;
-
- @BeforeAll
- public static void initPort() {
- port = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ static AvailablePortFinder.Port port = AvailablePortFinder.find();
protected static int getPort() {
- return port;
+ return port.getPort();
}
}
diff --git
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpCustomComponentNameTest.java
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpCustomComponentNameTest.java
index 7e33555160b7..04589f2e6c9b 100644
---
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpCustomComponentNameTest.java
+++
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpCustomComponentNameTest.java
@@ -22,12 +22,16 @@ import org.apache.camel.support.service.ServiceHelper;
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;
import static org.junit.jupiter.api.Assertions.assertNotNull;
public class HttpCustomComponentNameTest extends CamelTestSupport {
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
+
@Override
public boolean isUseRouteBuilder() {
return false;
@@ -37,13 +41,11 @@ public class HttpCustomComponentNameTest extends
CamelTestSupport {
public void testCustomName() {
context.start();
- int port = AvailablePortFinder.getNextAvailable();
-
Component custom = new HttpComponent();
context.addComponent("http-foo", custom);
ServiceHelper.startService(custom);
- String uri = "http-foo://www.somewhere.com:" + port + "?q=Camel";
+ String uri = "http-foo://www.somewhere.com:" + port.getPort() +
"?q=Camel";
Endpoint endpoint = context.getEndpoint(uri);
assertNotNull(endpoint);
// the endpoint uri should use the custom component name as scheme
diff --git
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSessionTest.java
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSessionTest.java
index 024b3e97b73d..9953f0c3cfc5 100644
---
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSessionTest.java
+++
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProducerSessionTest.java
@@ -33,11 +33,12 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
public class HttpProducerSessionTest extends CamelTestSupport {
- private static final int PORT = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port PORT = AvailablePortFinder.find();
private final JettyConfiguration jettyConfiguration =
JettyConfigurationBuilder
.emptyTemplate()
- .withPort(PORT)
+ .withPort(PORT.getPort())
.withContextPath("/session")
.withContextHandlerConfiguration()
.withCustomizer(HttpProducerSessionTest::customizer)
@@ -88,7 +89,7 @@ public class HttpProducerSessionTest extends CamelTestSupport
{
private String getTestServerEndpointSessionUrl() {
// session handling will not work for localhost
- return "http://localhost:" + PORT + "/session/";
+ return "http://localhost:" + PORT.getPort() + "/session/";
}
@Override
diff --git
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpsTwoComponentsSslContextParametersGetTest.java
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpsTwoComponentsSslContextParametersGetTest.java
index 29491d73556b..41e630c6abbe 100644
---
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpsTwoComponentsSslContextParametersGetTest.java
+++
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpsTwoComponentsSslContextParametersGetTest.java
@@ -29,12 +29,14 @@ import org.apache.hc.core5.http.impl.routing.RequestRouter;
import org.apache.hc.core5.http.protocol.UriPatternType;
import org.apache.hc.core5.net.URIAuthority;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
public class HttpsTwoComponentsSslContextParametersGetTest extends
BaseHttpsTest {
- private int port2;
+ @RegisterExtension
+ AvailablePortFinder.Port port2 = AvailablePortFinder.find();
private HttpServer localServer;
@BindToRegistry("x509HostnameVerifier")
@@ -88,14 +90,12 @@ public class HttpsTwoComponentsSslContextParametersGetTest
extends BaseHttpsTest
context.addRoutes(new RouteBuilder() {
@Override
public void configure() {
- port2 = AvailablePortFinder.getNextAvailable();
-
from("direct:foo")
.to("https-foo://localhost:" +
localServer.getLocalPort()
+
"/mail?x509HostnameVerifier=#x509HostnameVerifier&sslContextParameters=#sslContextParameters");
from("direct:bar")
- .to("https-bar://localhost:" + port2
+ .to("https-bar://localhost:" + port2.getPort()
+
"/mail?x509HostnameVerifier=#x509HostnameVerifier&sslContextParameters=#sslContextParameters2");
}
});
diff --git
a/components/camel-ibm/camel-ibm-watsonx-ai/src/test/java/org/apache/camel/component/ibm/watsonx/ai/integration/WatsonxAiWebSocketStreamingIT.java
b/components/camel-ibm/camel-ibm-watsonx-ai/src/test/java/org/apache/camel/component/ibm/watsonx/ai/integration/WatsonxAiWebSocketStreamingIT.java
index fa28ec52916d..dd6d6d8c62a7 100644
---
a/components/camel-ibm/camel-ibm-watsonx-ai/src/test/java/org/apache/camel/component/ibm/watsonx/ai/integration/WatsonxAiWebSocketStreamingIT.java
+++
b/components/camel-ibm/camel-ibm-watsonx-ai/src/test/java/org/apache/camel/component/ibm/watsonx/ai/integration/WatsonxAiWebSocketStreamingIT.java
@@ -35,6 +35,7 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,7 +67,8 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
private static final String MODEL_ID = "ibm/granite-4-h-small";
- private final int port = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
private Vertx vertx;
@AfterEach
@@ -96,7 +98,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() {
- fromF("vertx-websocket:localhost:%d/chat", port)
+ fromF("vertx-websocket:localhost:%d/chat", port.getPort())
.routeId("websocket-chat-stream")
// Store connection key for sending responses back to
this specific client
.setProperty("connectionKey",
header(VertxWebsocketConstants.CONNECTION_KEY))
@@ -107,7 +109,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
// Stream consumer that sends each token as a
WebSocket message
Consumer<String> streamHandler = chunk -> {
producer.sendBodyAndHeader(
- "vertx-websocket:localhost:" + port +
"/chat",
+ "vertx-websocket:localhost:" +
port.getPort() + "/chat",
chunk,
VertxWebsocketConstants.CONNECTION_KEY, connectionKey);
};
@@ -124,7 +126,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
String connectionKey =
exchange.getProperty("connectionKey", String.class);
ProducerTemplate producer =
exchange.getContext().createProducerTemplate();
producer.sendBodyAndHeader(
- "vertx-websocket:localhost:" + port +
"/chat",
+ "vertx-websocket:localhost:" +
port.getPort() + "/chat",
"[DONE]",
VertxWebsocketConstants.CONNECTION_KEY,
connectionKey);
});
@@ -137,7 +139,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
List<String> receivedMessages = new CopyOnWriteArrayList<>();
CountDownLatch doneLatch = new CountDownLatch(1);
- WebSocket webSocket = openWebSocketConnection("localhost", port,
"/chat", message -> {
+ WebSocket webSocket = openWebSocketConnection("localhost",
port.getPort(), "/chat", message -> {
LOG.info("Received WebSocket message: {}", message);
receivedMessages.add(message);
if ("[DONE]".equals(message)) {
@@ -170,7 +172,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() {
- fromF("vertx-websocket:localhost:%d/explain", port)
+ fromF("vertx-websocket:localhost:%d/explain", port.getPort())
.routeId("websocket-explain-stream")
.setProperty("connectionKey",
header(VertxWebsocketConstants.CONNECTION_KEY))
.process(exchange -> {
@@ -179,7 +181,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
Consumer<String> streamHandler = chunk -> {
producer.sendBodyAndHeader(
- "vertx-websocket:localhost:" + port +
"/explain",
+ "vertx-websocket:localhost:" +
port.getPort() + "/explain",
chunk,
VertxWebsocketConstants.CONNECTION_KEY, connectionKey);
};
@@ -193,7 +195,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
String connectionKey =
exchange.getProperty("connectionKey", String.class);
ProducerTemplate producer =
exchange.getContext().createProducerTemplate();
producer.sendBodyAndHeader(
- "vertx-websocket:localhost:" + port +
"/explain",
+ "vertx-websocket:localhost:" +
port.getPort() + "/explain",
"[DONE]",
VertxWebsocketConstants.CONNECTION_KEY,
connectionKey);
});
@@ -205,7 +207,7 @@ public class WatsonxAiWebSocketStreamingIT extends
WatsonxAiTestSupport {
List<String> receivedMessages = new CopyOnWriteArrayList<>();
CountDownLatch doneLatch = new CountDownLatch(1);
- WebSocket webSocket = openWebSocketConnection("localhost", port,
"/explain", message -> {
+ WebSocket webSocket = openWebSocketConnection("localhost",
port.getPort(), "/explain", message -> {
LOG.info("Received: {}", message);
receivedMessages.add(message);
if ("[DONE]".equals(message)) {
diff --git
a/components/camel-iec60870/src/test/java/org/apache/camel/component/iec60870/ConnectionTest.java
b/components/camel-iec60870/src/test/java/org/apache/camel/component/iec60870/ConnectionTest.java
index af4ba0db6227..7423031345ea 100644
---
a/components/camel-iec60870/src/test/java/org/apache/camel/component/iec60870/ConnectionTest.java
+++
b/components/camel-iec60870/src/test/java/org/apache/camel/component/iec60870/ConnectionTest.java
@@ -33,6 +33,7 @@ import
org.eclipse.neoscada.protocol.iec60870.asdu.types.Value;
import org.eclipse.neoscada.protocol.iec60870.client.AutoConnectClient.State;
import
org.eclipse.neoscada.protocol.iec60870.server.data.model.WriteModel.Request;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -85,33 +86,32 @@ public class ConnectionTest extends CamelTestSupport {
@EndpointInject(MOCK_SERVER_1)
protected MockEndpoint testServer1Endpoint;
- private int testPort;
+ @RegisterExtension
+ AvailablePortFinder.Port testPort = AvailablePortFinder.find();
@Override
protected RoutesBuilder createRouteBuilder() {
- testPort = AvailablePortFinder.getNextAvailable();
-
return new RouteBuilder() {
@Override
public void configure() {
-
from(DIRECT_SEND_S_1).toF("iec60870-server:localhost:%s/00-00-00-00-01",
testPort);
- fromF("iec60870-client:localhost:%s/00-00-00-00-01",
testPort).to(MOCK_CLIENT_1);
- fromF("iec60870-client:localhost:%s/00-00-00-00-02",
testPort).to(MOCK_CLIENT_2);
+
from(DIRECT_SEND_S_1).toF("iec60870-server:localhost:%s/00-00-00-00-01",
testPort.getPort());
+ fromF("iec60870-client:localhost:%s/00-00-00-00-01",
testPort.getPort()).to(MOCK_CLIENT_1);
+ fromF("iec60870-client:localhost:%s/00-00-00-00-02",
testPort.getPort()).to(MOCK_CLIENT_2);
-
from(DIRECT_SEND_C_1).toF("iec60870-client:localhost:%s/00-00-00-01-01",
testPort);
- fromF("iec60870-server:localhost:%s/00-00-00-01-01",
testPort).to(MOCK_SERVER_1);
+
from(DIRECT_SEND_C_1).toF("iec60870-client:localhost:%s/00-00-00-01-01",
testPort.getPort());
+ fromF("iec60870-server:localhost:%s/00-00-00-01-01",
testPort.getPort()).to(MOCK_SERVER_1);
// Route for interrogation command
-
from(DIRECT_INTERROGATION).toF("iec60870-client:localhost:%s/00-00-00-00-01",
testPort);
+
from(DIRECT_INTERROGATION).toF("iec60870-client:localhost:%s/00-00-00-00-01",
testPort.getPort());
// Route for read command
-
from(DIRECT_READ).toF("iec60870-client:localhost:%s/00-00-00-00-01", testPort);
+
from(DIRECT_READ).toF("iec60870-client:localhost:%s/00-00-00-00-01",
testPort.getPort());
// Route for status command - gets connection state without
sending protocol commands
from(DIRECT_STATUS)
.setHeader(Constants.IEC60870_COMMAND_TYPE,
constant(Constants.COMMAND_TYPE_STATUS))
- .toF("iec60870-client:localhost:%s/00-00-00-00-01",
testPort);
+ .toF("iec60870-client:localhost:%s/00-00-00-00-01",
testPort.getPort());
}
};
}
diff --git
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/temp/JmsRequestReplyTemporaryRefreshFailureOnStartupTest.java
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/temp/JmsRequestReplyTemporaryRefreshFailureOnStartupTest.java
index 70c3bd840c7c..0ba19e7e4bbc 100644
---
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/temp/JmsRequestReplyTemporaryRefreshFailureOnStartupTest.java
+++
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/temp/JmsRequestReplyTemporaryRefreshFailureOnStartupTest.java
@@ -38,6 +38,7 @@ import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Tags;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static
org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
@@ -45,8 +46,9 @@ import static
org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknow
@Tags({ @Tag("exclusive") })
public final class JmsRequestReplyTemporaryRefreshFailureOnStartupTest extends
CamelTestSupport {
- private static final int PORT = AvailablePortFinder.getNextAvailable();
- public static ArtemisService service = new
ArtemisVMService.ReusableArtemisVMService(PORT);
+ @RegisterExtension
+ static AvailablePortFinder.Port PORT = AvailablePortFinder.find();
+ public static ArtemisService service = new
ArtemisVMService.ReusableArtemisVMService(PORT.getPort());
private final Long recoveryInterval = 1000L;
@@ -69,7 +71,7 @@ public final class
JmsRequestReplyTemporaryRefreshFailureOnStartupTest extends C
}
private static void createBroker() {
- service = new ArtemisVMService.ReusableArtemisVMService(PORT);
+ service = new
ArtemisVMService.ReusableArtemisVMService(PORT.getPort());
service.initialize();
}
diff --git
a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRemoteTest.java
b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRemoteTest.java
index 73586b06423b..1042c6e6eff3 100644
---
a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRemoteTest.java
+++
b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRemoteTest.java
@@ -29,6 +29,7 @@ import javax.management.remote.JMXServiceURL;
import org.apache.camel.test.AvailablePortFinder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
/**
* Tests against a "remote" JMX server. Creates an RMI Registry on or near
port 39000 and registers the simple mbean
@@ -38,6 +39,9 @@ import org.junit.jupiter.api.Test;
*/
public class JMXRemoteTest extends SimpleBeanFixture {
+ @RegisterExtension
+ AvailablePortFinder.Port portHolder = AvailablePortFinder.find();
+
JMXServiceURL url;
JMXConnectorServer connector;
Registry registry;
@@ -51,10 +55,9 @@ public class JMXRemoteTest extends SimpleBeanFixture {
@Override
protected void initServer() throws Exception {
- int port = AvailablePortFinder.getNextAvailable();
- registry = LocateRegistry.createRegistry(port);
+ registry = LocateRegistry.createRegistry(portHolder.getPort());
- url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:" +
port + "/" + DOMAIN);
+ url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:" +
portHolder.getPort() + "/" + DOMAIN);
// create MBean server
server = MBeanServerFactory.createMBeanServer(DOMAIN);
// create JMXConnectorServer MBean
diff --git
a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRobustRemoteConnectionTest.java
b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRobustRemoteConnectionTest.java
index 860121a530ee..35c0bedadcfa 100644
---
a/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRobustRemoteConnectionTest.java
+++
b/components/camel-jmx/src/test/java/org/apache/camel/component/jmx/JMXRobustRemoteConnectionTest.java
@@ -17,8 +17,10 @@
package org.apache.camel.component.jmx;
import java.io.File;
+import java.rmi.NoSuchObjectException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
+import java.rmi.server.UnicastRemoteObject;
import java.util.Collections;
import javax.management.MBeanServerFactory;
@@ -30,6 +32,7 @@ import org.apache.camel.test.AvailablePortFinder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
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.assertThrows;
@@ -46,6 +49,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*/
public class JMXRobustRemoteConnectionTest extends SimpleBeanFixture {
+ @RegisterExtension
+ AvailablePortFinder.Port portHolder = AvailablePortFinder.find();
+
JMXServiceURL url;
JMXConnectorServer connector;
Registry registry;
@@ -54,7 +60,7 @@ public class JMXRobustRemoteConnectionTest extends
SimpleBeanFixture {
@BeforeEach
@Override
public void setUp() throws Exception {
- port = AvailablePortFinder.getNextAvailable();
+ port = portHolder.getPort();
url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:" +
port + "/" + DOMAIN);
initContext();
@@ -65,7 +71,17 @@ public class JMXRobustRemoteConnectionTest extends
SimpleBeanFixture {
@AfterEach
public void tearDown() throws Exception {
super.tearDown();
- connector.stop();
+ if (connector != null) {
+ connector.stop();
+ }
+ if (registry != null) {
+ try {
+ UnicastRemoteObject.unexportObject(registry, true);
+ } catch (NoSuchObjectException e) {
+ // Already unexported, ignore
+ }
+ registry = null;
+ }
}
@Override
diff --git
a/components/camel-jsch/src/test/java/org/apache/camel/component/scp/ScpServerTestSupport.java
b/components/camel-jsch/src/test/java/org/apache/camel/component/scp/ScpServerTestSupport.java
index 42f4d1b58c6b..2e534a4e9b79 100644
---
a/components/camel-jsch/src/test/java/org/apache/camel/component/scp/ScpServerTestSupport.java
+++
b/components/camel-jsch/src/test/java/org/apache/camel/component/scp/ScpServerTestSupport.java
@@ -44,8 +44,8 @@ import
org.apache.sshd.server.auth.password.PasswordAuthenticator;
import org.apache.sshd.server.auth.pubkey.PublickeyAuthenticator;
import org.apache.sshd.server.session.ServerSession;
import org.apache.sshd.sftp.server.SftpSubsystemFactory;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,7 +56,8 @@ public abstract class ScpServerTestSupport extends
CamelTestSupport {
protected static final Logger LOG =
LoggerFactory.getLogger(ScpServerTestSupport.class);
protected static final String SCP_ROOT_DIR = "target/test-classes/scp";
protected static final String KNOWN_HOSTS = "known_hosts";
- protected static int port;
+ @RegisterExtension
+ protected static AvailablePortFinder.Port port =
AvailablePortFinder.find();
protected Consumer<SshServer> serverConfigurer;
@@ -75,18 +76,13 @@ public abstract class ScpServerTestSupport extends
CamelTestSupport {
}
protected int getPort() {
- return port;
+ return port.getPort();
}
protected SshServer getSshd() {
return sshd;
}
- @BeforeAll
- public static void initPort() {
- port = AvailablePortFinder.getNextAvailable();
- }
-
@Override
@BeforeEach
public void doPreSetup() throws Exception {
diff --git
a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathPlatformHttpTest.java
b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathPlatformHttpTest.java
index ee81bec58900..a83af808f7df 100644
---
a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathPlatformHttpTest.java
+++
b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathPlatformHttpTest.java
@@ -26,6 +26,7 @@ import org.apache.camel.model.ProcessorDefinition;
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;
@@ -35,12 +36,13 @@ class JsonPathPlatformHttpTest extends CamelTestSupport {
public static final String JSON_PATH = "$.room[?(@.temperature > 20)]";
public static final String RESULT = "HOT";
- private static final int PORT = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port PORT = AvailablePortFinder.find();
@Test
public void testWithPlatformHttp() {
String result = RestAssured.given()
- .port(PORT)
+ .port(PORT.getPort())
.contentType(ContentType.JSON)
.body(BODY)
.post("/getTemperature")
@@ -63,7 +65,7 @@ class JsonPathPlatformHttpTest extends CamelTestSupport {
CamelContext context = super.createCamelContext();
VertxPlatformHttpServerConfiguration conf = new
VertxPlatformHttpServerConfiguration();
- conf.setBindPort(PORT);
+ conf.setBindPort(PORT.getPort());
context.addService(new VertxPlatformHttpServer(conf));
diff --git
a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpServer.java
b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpServer.java
index 66d71b124b72..56ef4829d94d 100644
---
a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpServer.java
+++
b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpServer.java
@@ -50,13 +50,19 @@ public class KnativeHttpServer extends ServiceSupport {
private final BlockingQueue<HttpServerRequest> requests;
private final Handler<RoutingContext> handler;
+ private AvailablePortFinder.Port reservedPort;
private Vertx vertx;
private Router router;
private ExecutorService executor;
private HttpServer server;
public KnativeHttpServer(CamelContext context) {
- this(context, "localhost", AvailablePortFinder.getNextAvailable(),
"/", null);
+ this(context, AvailablePortFinder.find());
+ }
+
+ private KnativeHttpServer(CamelContext context, AvailablePortFinder.Port
port) {
+ this(context, "localhost", port.getPort(), "/", null);
+ this.reservedPort = port;
}
public KnativeHttpServer(CamelContext context, int port) {
@@ -68,7 +74,12 @@ public class KnativeHttpServer extends ServiceSupport {
}
public KnativeHttpServer(CamelContext context, Handler<RoutingContext>
handler) {
- this(context, "localhost", AvailablePortFinder.getNextAvailable(),
"/", handler);
+ this(context, AvailablePortFinder.find(), handler);
+ }
+
+ private KnativeHttpServer(CamelContext context, AvailablePortFinder.Port
port, Handler<RoutingContext> handler) {
+ this(context, "localhost", port.getPort(), "/", handler);
+ this.reservedPort = port;
}
public KnativeHttpServer(CamelContext context, String host, int port,
String path) {
@@ -76,11 +87,22 @@ public class KnativeHttpServer extends ServiceSupport {
}
public KnativeHttpServer(CamelContext context, String host, String path) {
- this(context, host, AvailablePortFinder.getNextAvailable(), path,
null);
+ this(context, host, AvailablePortFinder.find(), path);
+ }
+
+ private KnativeHttpServer(CamelContext context, String host,
AvailablePortFinder.Port port, String path) {
+ this(context, host, port.getPort(), path, null);
+ this.reservedPort = port;
}
public KnativeHttpServer(CamelContext context, String host, String path,
Handler<RoutingContext> handler) {
- this(context, host, AvailablePortFinder.getNextAvailable(), path,
handler);
+ this(context, host, AvailablePortFinder.find(), path, handler);
+ }
+
+ private KnativeHttpServer(CamelContext context, String host,
AvailablePortFinder.Port port, String path,
+ Handler<RoutingContext> handler) {
+ this(context, host, port.getPort(), path, handler);
+ this.reservedPort = port;
}
public KnativeHttpServer(CamelContext context, String host, int port,
String path, Handler<RoutingContext> handler) {
@@ -239,6 +261,11 @@ public class KnativeHttpServer extends ServiceSupport {
context.getExecutorServiceManager().shutdown(executor);
executor = null;
}
+
+ if (reservedPort != null) {
+ reservedPort.close();
+ reservedPort = null;
+ }
}
protected HttpServerOptions getServerOptions() {
diff --git
a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
index 103845a526c4..6cdd820881d2 100644
---
a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
+++
b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
@@ -53,6 +53,7 @@ import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
@@ -72,6 +73,8 @@ public class KnativeHttpTest {
private CamelContext context;
private ProducerTemplate template;
+ @RegisterExtension
+ AvailablePortFinder.Port platformHttpPortExt = AvailablePortFinder.find();
private int platformHttpPort;
private String platformHttpHost;
@@ -91,7 +94,7 @@ public class KnativeHttpTest {
this.context = new DefaultCamelContext();
this.template = this.context.createProducerTemplate();
this.platformHttpHost = "localhost";
- this.platformHttpPort = AvailablePortFinder.getNextAvailable();
+ this.platformHttpPort = platformHttpPortExt.getPort();
configurePlatformHttpComponent(context, this.platformHttpPort);
@@ -1356,7 +1359,6 @@ public class KnativeHttpTest {
@ParameterizedTest
@EnumSource(CloudEvents.class)
void testHeaders(CloudEvent ce) throws Exception {
- final int port = AvailablePortFinder.getNextAvailable();
final KnativeHttpServer server = new KnativeHttpServer(context);
configureKnativeComponent(
diff --git
a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpsServer.java
b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpsServer.java
index 6a56aed70db0..1722e23c82c9 100644
---
a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpsServer.java
+++
b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpsServer.java
@@ -22,12 +22,11 @@ import io.vertx.core.net.JksOptions;
import io.vertx.core.net.PemKeyCertOptions;
import io.vertx.ext.web.RoutingContext;
import org.apache.camel.CamelContext;
-import org.apache.camel.test.AvailablePortFinder;
public class KnativeHttpsServer extends KnativeHttpServer {
public KnativeHttpsServer(CamelContext context) {
- super(context, "localhost", AvailablePortFinder.getNextAvailable(),
"/", null);
+ super(context);
}
public KnativeHttpsServer(CamelContext context, int port) {
@@ -39,7 +38,7 @@ public class KnativeHttpsServer extends KnativeHttpServer {
}
public KnativeHttpsServer(CamelContext context, Handler<RoutingContext>
handler) {
- super(context, "localhost", AvailablePortFinder.getNextAvailable(),
"/", handler);
+ super(context, handler);
}
public KnativeHttpsServer(CamelContext context, String host, int port,
String path) {
@@ -47,11 +46,11 @@ public class KnativeHttpsServer extends KnativeHttpServer {
}
public KnativeHttpsServer(CamelContext context, String host, String path) {
- super(context, host, AvailablePortFinder.getNextAvailable(), path,
null);
+ super(context, host, path);
}
public KnativeHttpsServer(CamelContext context, String host, String path,
Handler<RoutingContext> handler) {
- super(context, host, AvailablePortFinder.getNextAvailable(), path,
handler);
+ super(context, host, path, handler);
}
@Override
diff --git
a/components/camel-ldap/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
b/components/camel-ldap/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
index 07c7a0ef8a9f..b8050aeb3816 100644
---
a/components/camel-ldap/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
+++
b/components/camel-ldap/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
@@ -55,6 +55,8 @@ import org.slf4j.LoggerFactory;
*/
public final class ServerAnnotationProcessor {
private static final Logger LOG =
LoggerFactory.getLogger(ServerAnnotationProcessor.class);
+ // Keep Port references alive to prevent port reuse (TOCTOU prevention)
+ private static final List<org.apache.camel.test.AvailablePortFinder.Port>
RESERVED_PORTS = new ArrayList<>();
private ServerAnnotationProcessor() {
}
@@ -336,7 +338,9 @@ public final class ServerAnnotationProcessor {
}
private static int getFreePort() {
- return org.apache.camel.test.AvailablePortFinder.getNextAvailable();
+ org.apache.camel.test.AvailablePortFinder.Port port =
org.apache.camel.test.AvailablePortFinder.find();
+ RESERVED_PORTS.add(port);
+ return port.getPort();
}
}
diff --git
a/components/camel-ldif/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
b/components/camel-ldif/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
index 07c7a0ef8a9f..b8050aeb3816 100644
---
a/components/camel-ldif/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
+++
b/components/camel-ldif/src/test/java/org/apache/directory/server/core/integ5/ServerAnnotationProcessor.java
@@ -55,6 +55,8 @@ import org.slf4j.LoggerFactory;
*/
public final class ServerAnnotationProcessor {
private static final Logger LOG =
LoggerFactory.getLogger(ServerAnnotationProcessor.class);
+ // Keep Port references alive to prevent port reuse (TOCTOU prevention)
+ private static final List<org.apache.camel.test.AvailablePortFinder.Port>
RESERVED_PORTS = new ArrayList<>();
private ServerAnnotationProcessor() {
}
@@ -336,7 +338,9 @@ public final class ServerAnnotationProcessor {
}
private static int getFreePort() {
- return org.apache.camel.test.AvailablePortFinder.getNextAvailable();
+ org.apache.camel.test.AvailablePortFinder.Port port =
org.apache.camel.test.AvailablePortFinder.find();
+ RESERVED_PORTS.add(port);
+ return port.getPort();
}
}
diff --git
a/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java
b/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java
index 7f9c352f31b9..fa7604767b88 100644
---
a/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java
+++
b/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java
@@ -47,7 +47,8 @@ public abstract class AbstractLRATestSupport extends
CamelTestSupport {
@RegisterExtension
static MicroprofileLRAService service =
MicroprofileLRAServiceFactory.createService();
- private Integer serverPort;
+ @RegisterExtension
+ AvailablePortFinder.Port serverPortHolder = AvailablePortFinder.find();
private int activeLRAs;
@@ -106,9 +107,6 @@ public abstract class AbstractLRATestSupport extends
CamelTestSupport {
}
protected int getServerPort() {
- if (serverPort == null) {
- serverPort = AvailablePortFinder.getNextAvailable();
- }
- return serverPort;
+ return serverPortHolder.getPort();
}
}
diff --git
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentGlobalSSLTest.java
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentGlobalSSLTest.java
index 21a2546cf839..a6d9cd318b05 100644
---
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentGlobalSSLTest.java
+++
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentGlobalSSLTest.java
@@ -29,20 +29,16 @@ import org.apache.camel.support.jsse.SSLContextParameters;
import org.apache.camel.support.jsse.TrustManagersParameters;
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;
import org.junit.jupiter.api.parallel.Isolated;
import static org.junit.jupiter.api.Assertions.assertEquals;
@Isolated
public class LumberjackComponentGlobalSSLTest extends CamelTestSupport {
- private static int port;
-
- @BeforeAll
- public static void beforeClass() {
- port = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
@Override
protected CamelContext createCamelContext() throws Exception {
@@ -59,7 +55,7 @@ public class LumberjackComponentGlobalSSLTest extends
CamelTestSupport {
public void configure() {
// Lumberjack configured with SSL
- from("lumberjack:0.0.0.0:" + port).to("mock:output");
+ from("lumberjack:0.0.0.0:" + port.getPort()).to("mock:output");
}
};
}
@@ -75,7 +71,8 @@ public class LumberjackComponentGlobalSSLTest extends
CamelTestSupport {
List<Integer> windows = Arrays.asList(15, 10, 15, 10, 10);
// When sending messages
- List<Integer> responses = LumberjackUtil.sendMessages(port,
createClientSSLContextParameters(context), windows);
+ List<Integer> responses
+ = LumberjackUtil.sendMessages(port.getPort(),
createClientSSLContextParameters(context), windows);
// Then we should have the messages we're expecting
mock.assertIsSatisfied();
diff --git
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentSSLTest.java
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentSSLTest.java
index 9fe5d7dd763d..39a982409851 100644
---
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentSSLTest.java
+++
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentSSLTest.java
@@ -29,20 +29,16 @@ import org.apache.camel.support.jsse.SSLContextParameters;
import org.apache.camel.support.jsse.TrustManagersParameters;
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;
import org.junit.jupiter.api.parallel.Isolated;
import static org.junit.jupiter.api.Assertions.assertEquals;
@Isolated
public class LumberjackComponentSSLTest extends CamelTestSupport {
- private static int port;
-
- @BeforeAll
- public static void beforeClass() {
- port = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
@Override
protected RouteBuilder createRouteBuilder() {
@@ -52,7 +48,7 @@ public class LumberjackComponentSSLTest extends
CamelTestSupport {
return new RouteBuilder() {
public void configure() {
// Lumberjack configured with SSL
- from("lumberjack:0.0.0.0:" + port +
"?sslContextParameters=#ssl").to("mock:output");
+ from("lumberjack:0.0.0.0:" + port.getPort() +
"?sslContextParameters=#ssl").to("mock:output");
}
};
}
@@ -66,7 +62,7 @@ public class LumberjackComponentSSLTest extends
CamelTestSupport {
List<Integer> windows = Arrays.asList(15, 10, 15, 10, 10);
// When sending messages
- List<Integer> responses = LumberjackUtil.sendMessages(port,
createClientSSLContextParameters(), windows);
+ List<Integer> responses = LumberjackUtil.sendMessages(port.getPort(),
createClientSSLContextParameters(), windows);
// Then we should have the messages we're expecting
mock.assertIsSatisfied();
diff --git
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentTest.java
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentTest.java
index 45220b93ce99..f80a625d69d2 100644
---
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentTest.java
+++
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackComponentTest.java
@@ -24,10 +24,10 @@ import org.apache.camel.builder.RouteBuilder;
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.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.condition.OS;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.parallel.Isolated;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -37,19 +37,15 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
disabledReason = "This test does not run reliably multiple
platforms (see CAMEL-21438)")
@Isolated
public class LumberjackComponentTest extends CamelTestSupport {
- private static int port;
-
- @BeforeAll
- public static void beforeClass() {
- port = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
// Lumberjack configured with a specific port
- from("lumberjack:0.0.0.0:" + port).to("mock:output");
+ from("lumberjack:0.0.0.0:" + port.getPort()).to("mock:output");
}
};
}
@@ -64,7 +60,7 @@ public class LumberjackComponentTest extends CamelTestSupport
{
List<Integer> windows = Arrays.asList(15, 10, 15, 10, 10);
// When sending messages
- List<Integer> responses = LumberjackUtil.sendMessages(port, null,
windows);
+ List<Integer> responses = LumberjackUtil.sendMessages(port.getPort(),
null, windows);
// Then we should have the messages we're expecting
mock.assertIsSatisfied();
diff --git
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
index e8b58b79eb2e..2a4ad96553ef 100644
---
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
+++
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
@@ -27,27 +27,23 @@ import org.apache.camel.builder.RouteBuilder;
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.BeforeAll;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.parallel.Isolated;
import static org.apache.camel.test.junit6.TestSupport.assertCollectionSize;
@Isolated
public class LumberjackDisconnectionTest extends CamelTestSupport {
- private static int port;
-
- @BeforeAll
- public static void beforeClass() {
- port = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
// Lumberjack configured with something that throws an
exception
- from("lumberjack:0.0.0.0:" + port).process(new
ErrorProcessor()).to("mock:output");
+ from("lumberjack:0.0.0.0:" + port.getPort()).process(new
ErrorProcessor()).to("mock:output");
}
};
}
@@ -63,7 +59,7 @@ public class LumberjackDisconnectionTest extends
CamelTestSupport {
List<Integer> windows = Arrays.asList(15, 10);
// When sending messages
- List<Integer> responses = LumberjackUtil.sendMessages(port, null,
windows, false);
+ List<Integer> responses = LumberjackUtil.sendMessages(port.getPort(),
null, windows, false);
// Then we should have the messages we're expecting
mock.assertIsSatisfied();
diff --git
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackMultiThreadIT.java
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackMultiThreadIT.java
index 9fccdfd57db4..300ccf46d17a 100644
---
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackMultiThreadIT.java
+++
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackMultiThreadIT.java
@@ -33,6 +33,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.condition.OS;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.parallel.Isolated;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -44,7 +45,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
@Isolated
public class LumberjackMultiThreadIT extends CamelTestSupport {
- private static final int PORT = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
private static final int CONCURRENCY_LEVEL =
Math.min(Runtime.getRuntime().availableProcessors(), 4);
private CountDownLatch latch = new CountDownLatch(CONCURRENCY_LEVEL);
private volatile boolean interrupted;
@@ -57,7 +59,7 @@ public class LumberjackMultiThreadIT extends CamelTestSupport
{
return new RouteBuilder() {
public void configure() {
// Lumberjack configured with a specific port
- from("lumberjack:0.0.0.0:" + PORT).to("mock:output");
+ from("lumberjack:0.0.0.0:" + port.getPort()).to("mock:output");
}
};
}
@@ -104,7 +106,7 @@ public class LumberjackMultiThreadIT extends
CamelTestSupport {
@Override
public void run() {
try {
- this.responses = LumberjackUtil.sendMessages(PORT, null,
Arrays.asList(15, 10));
+ this.responses = LumberjackUtil.sendMessages(port.getPort(),
null, Arrays.asList(15, 10));
latch.countDown();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
diff --git
a/components/camel-milo/src/test/java/org/apache/camel/component/milo/AbstractMiloServerTest.java
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/AbstractMiloServerTest.java
index 753c3521d994..e9d13236b2cb 100644
---
a/components/camel-milo/src/test/java/org/apache/camel/component/milo/AbstractMiloServerTest.java
+++
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/AbstractMiloServerTest.java
@@ -30,6 +30,7 @@ import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.opentest4j.AssertionFailedError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,15 +44,11 @@ public abstract class AbstractMiloServerTest extends
CamelTestSupport {
private static final Logger LOG =
LoggerFactory.getLogger(AbstractMiloServerTest.class);
- private int serverPort;
-
- @Override
- protected void doPreSetup() throws Exception {
- this.serverPort = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ AvailablePortFinder.Port serverPortHolder = AvailablePortFinder.find();
public int getServerPort() {
- return this.serverPort;
+ return serverPortHolder.getPort();
}
protected boolean isAddServer() {
@@ -69,7 +66,7 @@ public abstract class AbstractMiloServerTest extends
CamelTestSupport {
return uri;
}
- return uri.replace("@@port@@", Integer.toString(this.serverPort));
+ return uri.replace("@@port@@", Integer.toString(getServerPort()));
}
public static void testBody(final AssertionClause clause, final
Consumer<DataValue> valueConsumer) {
@@ -111,7 +108,7 @@ public abstract class AbstractMiloServerTest extends
CamelTestSupport {
protected void configureMiloServer(final MiloServerComponent server)
throws Exception {
server.setBindAddresses("localhost");
- server.setPort(this.serverPort);
+ server.setPort(getServerPort());
server.setUserAuthenticationCredentials("foo:bar,foo2:bar2");
server.setUsernameSecurityPolicyUri(SecurityPolicy.None);
server.setSecurityPoliciesById("None");
diff --git
a/components/camel-milo/src/test/java/org/apache/camel/component/milo/server/ServerLocalTest.java
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/server/ServerLocalTest.java
index 3651bc02ec7d..c84603e5ed3c 100644
---
a/components/camel-milo/src/test/java/org/apache/camel/component/milo/server/ServerLocalTest.java
+++
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/server/ServerLocalTest.java
@@ -29,6 +29,7 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,6 +44,9 @@ public class ServerLocalTest extends CamelTestSupport {
private static final Logger LOG =
LoggerFactory.getLogger(ConverterTest.class);
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
+
@EndpointInject(MOCK_TEST)
protected MockEndpoint testEndpoint;
@@ -53,7 +57,7 @@ public class ServerLocalTest extends CamelTestSupport {
LOG.info(displayName);
LOG.info("********************************************************************************");
final MiloServerComponent component =
context().getComponent("milo-server", MiloServerComponent.class);
- component.setPort(AvailablePortFinder.getNextAvailable());
+ component.setPort(port.getPort());
}
@Override
diff --git
a/components/camel-mina/src/test/java/org/apache/camel/component/mina/BaseMinaTest.java
b/components/camel-mina/src/test/java/org/apache/camel/component/mina/BaseMinaTest.java
index 5434e2fbcad5..189407779737 100644
---
a/components/camel-mina/src/test/java/org/apache/camel/component/mina/BaseMinaTest.java
+++
b/components/camel-mina/src/test/java/org/apache/camel/component/mina/BaseMinaTest.java
@@ -16,7 +16,9 @@
*/
package org.apache.camel.component.mina;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import org.apache.camel.BindToRegistry;
import org.apache.camel.support.jsse.ClientAuthentication;
@@ -28,25 +30,25 @@ import
org.apache.camel.support.jsse.SecureSocketProtocolsParameters;
import org.apache.camel.support.jsse.TrustManagersParameters;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
public abstract class BaseMinaTest extends CamelTestSupport {
protected static final String KEY_STORE_PASSWORD = "changeit";
- private static volatile int port;
-
- @BeforeAll
- public static void initPort() {
- port = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
+ // Keep additional Port references alive to prevent port reuse (TOCTOU
prevention)
+ private final List<AvailablePortFinder.Port> additionalPorts = new
ArrayList<>();
protected int getNextPort() {
- return AvailablePortFinder.getNextAvailable();
+ AvailablePortFinder.Port p = AvailablePortFinder.find();
+ additionalPorts.add(p);
+ return p.getPort();
}
protected int getPort() {
- return port;
+ return port.getPort();
}
protected boolean isUseSslContext() {
diff --git
a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java
b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java
index cee9b14cd36c..6b063fa83fba 100644
---
a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java
+++
b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java
@@ -47,18 +47,21 @@ public final class MockOaipmhServer {
private int httpPort;
private int httpsPort;
+ private AvailablePortFinder.Port reservedHttpPort;
+ private AvailablePortFinder.Port reservedHttpsPort;
private WireMockServer server;
- private MockOaipmhServer(int httpPort, int httpsPort) {
- this.httpPort = httpPort;
- this.httpsPort = httpsPort;
+ private MockOaipmhServer(AvailablePortFinder.Port httpPort,
AvailablePortFinder.Port httpsPort) {
+ this.reservedHttpPort = httpPort;
+ this.reservedHttpsPort = httpsPort;
+ this.httpPort = httpPort.getPort();
+ this.httpsPort = httpsPort.getPort();
}
public static MockOaipmhServer create() {
- int httpPort = AvailablePortFinder.getNextAvailable();
- int httpsPort = AvailablePortFinder.getNextAvailable();
- MockOaipmhServer server = new MockOaipmhServer(httpPort, httpsPort);
- return server;
+ AvailablePortFinder.Port p1 = AvailablePortFinder.find();
+ AvailablePortFinder.Port p2 = AvailablePortFinder.find();
+ return new MockOaipmhServer(p1, p2);
}
/**
@@ -108,6 +111,14 @@ public final class MockOaipmhServer {
server.stop();
server = null;
}
+ if (reservedHttpPort != null) {
+ reservedHttpPort.close();
+ reservedHttpPort = null;
+ }
+ if (reservedHttpsPort != null) {
+ reservedHttpsPort.close();
+ reservedHttpsPort = null;
+ }
}
public int getHttpPort() {
diff --git
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2AppAPITestSupport.java
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2AppAPITestSupport.java
index 3cea8d5a3883..e55daba32ede 100644
---
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2AppAPITestSupport.java
+++
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2AppAPITestSupport.java
@@ -34,6 +34,7 @@ import org.apache.http.entity.ContentType;
import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
import org.apache.olingo.odata2.api.ep.feed.ODataDeltaFeed;
import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,7 +45,8 @@ public class AbstractOlingo2AppAPITestSupport {
protected static final String SERVICE_NAME = "MyFormula.svc";
protected static final Logger LOG =
LoggerFactory.getLogger(AbstractOlingo2AppAPITestSupport.class);
- protected static final int PORT = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ protected static AvailablePortFinder.Port PORT =
AvailablePortFinder.find();
protected static final long TIMEOUT = 100000;
protected static final String MANUFACTURERS = "Manufacturers";
protected static final String FQN_MANUFACTURERS =
"DefaultContainer.Manufacturers";
@@ -65,7 +67,7 @@ public class AbstractOlingo2AppAPITestSupport {
protected static final String TEST_MANUFACTURER_LINKS_CARS =
"Manufacturers('1')/$links/Cars";
protected static final String TEST_CAR_LINK_MANUFACTURER =
"Cars('1')/$links/Manufacturer";
protected static final String COUNT_OPTION = "/$count";
- protected static final String TEST_SERVICE_URL = "http://localhost:" +
PORT + "/" + SERVICE_NAME;
+ protected static final String TEST_SERVICE_URL = "http://localhost:" +
PORT.getPort() + "/" + SERVICE_NAME;
protected static final ContentType TEST_FORMAT =
ContentType.APPLICATION_JSON;
protected static final String TEST_FORMAT_STRING = TEST_FORMAT.toString();
protected static final String ID_PROPERTY = "Id";
@@ -142,7 +144,7 @@ public class AbstractOlingo2AppAPITestSupport {
}
protected static JettyConfiguration createConfiguration() {
- return createConfiguration(PORT);
+ return createConfiguration(PORT.getPort());
}
protected static JettyConfiguration createConfiguration(int port) {
diff --git
a/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5ReconnectAfterFailureIT.java
b/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5ReconnectAfterFailureIT.java
index 5849361d3035..fae10b1a8fd2 100644
---
a/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5ReconnectAfterFailureIT.java
+++
b/components/camel-paho-mqtt5/src/test/java/org/apache/camel/component/paho/mqtt5/PahoMqtt5ReconnectAfterFailureIT.java
@@ -35,6 +35,7 @@ import
org.apache.camel.test.infra.mosquitto.services.MosquittoService;
import org.apache.camel.test.infra.mosquitto.services.MosquittoServiceFactory;
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;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -43,7 +44,9 @@ import static org.junit.jupiter.api.Assertions.fail;
public class PahoMqtt5ReconnectAfterFailureIT extends CamelTestSupport {
public static final String TESTING_ROUTE_ID = "testingRoute";
- private static int mqttPort = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+
+ static AvailablePortFinder.Port mqttPort = AvailablePortFinder.find();
MosquittoService service;
CountDownLatch routeStartedLatch = new CountDownLatch(1);
@@ -52,11 +55,11 @@ public class PahoMqtt5ReconnectAfterFailureIT extends
CamelTestSupport {
MockEndpoint mock;
private static MosquittoService createLocalService() {
- return new MosquittoLocalContainerService(mqttPort);
+ return new MosquittoLocalContainerService(mqttPort.getPort());
}
private static MosquittoService createRemoteService() {
- return new MosquittoRemoteService(mqttPort);
+ return new MosquittoRemoteService(mqttPort.getPort());
}
@Override
@@ -94,8 +97,9 @@ public class PahoMqtt5ReconnectAfterFailureIT extends
CamelTestSupport {
@Override
public void configure() {
-
from("direct:test").to("paho-mqtt5:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:"
+ mqttPort);
- from("paho-mqtt5:queue?brokerUrl=tcp://localhost:" + mqttPort)
+ from("direct:test")
+
.to("paho-mqtt5:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:" +
mqttPort.getPort());
+ from("paho-mqtt5:queue?brokerUrl=tcp://localhost:" +
mqttPort.getPort())
.id(TESTING_ROUTE_ID)
.routePolicy(new RoutePolicySupport() {
@Override
@@ -127,7 +131,7 @@ public class PahoMqtt5ReconnectAfterFailureIT extends
CamelTestSupport {
mock.expectedBodiesReceived(msg);
// When
-
template.sendBody("paho-mqtt5:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:"
+ mqttPort, msg);
+
template.sendBody("paho-mqtt5:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:"
+ mqttPort.getPort(), msg);
// Then
mock.assertIsSatisfied();
diff --git
a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureIT.java
b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureIT.java
index b9058d04c6c7..251952458cb4 100644
---
a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureIT.java
+++
b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureIT.java
@@ -58,7 +58,9 @@ public class PahoReconnectAfterFailureIT implements
ConfigurableRoute, Configura
ArtemisMQTTService broker;
CountDownLatch routeStartedLatch = new CountDownLatch(1);
- int port = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
@EndpointInject("mock:test")
MockEndpoint mock;
@@ -95,8 +97,8 @@ public class PahoReconnectAfterFailureIT implements
ConfigurableRoute, Configura
@Override
public void configure() {
-
from("direct:test").to("paho:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:"
+ port);
- from("paho:queue?brokerUrl=tcp://localhost:" + port)
+
from("direct:test").to("paho:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:"
+ port.getPort());
+ from("paho:queue?brokerUrl=tcp://localhost:" + port.getPort())
.id(TESTING_ROUTE_ID)
.routePolicy(new RoutePolicySupport() {
@Override
@@ -133,7 +135,7 @@ public class PahoReconnectAfterFailureIT implements
ConfigurableRoute, Configura
// When
ProducerTemplate template =
camelContextExtension.getProducerTemplate();
-
template.sendBody("paho:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:"
+ port, msg);
+
template.sendBody("paho:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:"
+ port.getPort(), msg);
// Then
mock.assertIsSatisfied();
@@ -161,7 +163,7 @@ public class PahoReconnectAfterFailureIT implements
ConfigurableRoute, Configura
}
private void startBroker() {
- broker = new ArtemisMQTTService(port);
+ broker = new ArtemisMQTTService(port.getPort());
broker.initialize();
}
diff --git
a/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubTestBase.java
b/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubTestBase.java
index 6278f23862d8..1f0158bd4be3 100644
---
a/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubTestBase.java
+++
b/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubTestBase.java
@@ -26,18 +26,20 @@ import com.pubnub.internal.java.PubNubForJavaImpl;
import org.apache.camel.BindToRegistry;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
+import org.junit.jupiter.api.extension.RegisterExtension;
import static
com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
import static com.pubnub.api.enums.PNHeartbeatNotificationOptions.NONE;
public class PubNubTestBase extends CamelTestSupport {
- private final int port = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
@BindToRegistry("pubnub")
private PubNub pubnub = createPubNubInstance();
- private WireMockServer wireMockServer = new
WireMockServer(options().port(port));
+ private WireMockServer wireMockServer = new
WireMockServer(options().port(port.getPort()));
@Override
protected void setupResources() {
@@ -61,7 +63,7 @@ public class PubNubTestBase extends CamelTestSupport {
config = PNConfiguration.builder(new UserId("myUUID"),
"mySubscribeKey")
.publishKey("myPublishKey")
.secure(false)
- .origin("localhost" + ":" + port)
+ .origin("localhost" + ":" + port.getPort())
.logVerbosity(PNLogVerbosity.NONE)
.heartbeatNotificationOptions(NONE)
.build();
diff --git
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/PubSubApiTest.java
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/PubSubApiTest.java
index dde3c07f14e5..9ca33f2d46d9 100644
---
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/PubSubApiTest.java
+++
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/PubSubApiTest.java
@@ -17,7 +17,9 @@
package org.apache.camel.component.salesforce;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Base64;
+import java.util.List;
import com.google.protobuf.ByteString;
import com.salesforce.eventbus.protobuf.ReplayPreset;
@@ -29,6 +31,7 @@ import
org.apache.camel.component.salesforce.internal.pubsub.AuthErrorPubSubServ
import
org.apache.camel.component.salesforce.internal.pubsub.SendInvalidReplayIdErrorPubSubServer;
import
org.apache.camel.component.salesforce.internal.pubsub.SendOneMessagePubSubServer;
import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.test.AvailablePortFinder;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
@@ -47,6 +50,8 @@ import static org.mockito.Mockito.when;
public class PubSubApiTest {
private static final Logger LOG =
LoggerFactory.getLogger(PubSubApiTest.class);
+ // Keep Port references alive to prevent port reuse (TOCTOU prevention)
+ private final List<AvailablePortFinder.Port> reservedPorts = new
ArrayList<>();
@Test
public void testReconnectOnErrorAfterReplayIdNonNull() throws Exception {
@@ -246,6 +251,8 @@ public class PubSubApiTest {
}
private int getPort() {
- return org.apache.camel.test.AvailablePortFinder.getNextAvailable();
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
+ reservedPorts.add(port);
+ return port.getPort();
}
}
diff --git
a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/HttpProxyMojoManualIT.java
b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/HttpProxyMojoManualIT.java
index 0cdefe1d3ca4..68941010c3f0 100644
---
a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/HttpProxyMojoManualIT.java
+++
b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/HttpProxyMojoManualIT.java
@@ -22,6 +22,7 @@ import java.util.HashMap;
import org.apache.camel.test.AvailablePortFinder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.littleshoot.proxy.HttpProxyServer;
import org.littleshoot.proxy.ProxyAuthenticator;
import org.littleshoot.proxy.impl.DefaultHttpProxyServer;
@@ -34,25 +35,26 @@ public class HttpProxyMojoManualIT extends
CamelSalesforceMojoManualIT {
private static final String HTTP_PROXY_USER_NAME = "camel-user";
- private int httpProxyPort;
+ @RegisterExtension
+ AvailablePortFinder.Port httpProxyPortHolder = AvailablePortFinder.find();
private HttpProxyServer proxy;
@BeforeEach
public void startProxy() {
- httpProxyPort = AvailablePortFinder.getNextAvailable();
-
- proxy =
DefaultHttpProxyServer.bootstrap().withPort(httpProxyPort).withProxyAuthenticator(new
ProxyAuthenticator() {
- @Override
- public String getRealm() {
- return HTTP_PROXY_REALM;
- }
-
- @Override
- public boolean authenticate(String userName, String password) {
- return HTTP_PROXY_USER_NAME.equals(userName) &&
HTTP_PROXY_PASSWORD.equals(password);
- }
- }).start();
+
+ proxy =
DefaultHttpProxyServer.bootstrap().withPort(httpProxyPortHolder.getPort())
+ .withProxyAuthenticator(new ProxyAuthenticator() {
+ @Override
+ public String getRealm() {
+ return HTTP_PROXY_REALM;
+ }
+
+ @Override
+ public boolean authenticate(String userName, String
password) {
+ return HTTP_PROXY_USER_NAME.equals(userName) &&
HTTP_PROXY_PASSWORD.equals(password);
+ }
+ }).start();
}
@AfterEach
@@ -66,12 +68,12 @@ public class HttpProxyMojoManualIT extends
CamelSalesforceMojoManualIT {
// HTTP proxy properties
mojo.httpProxyHost = "localhost";
- mojo.httpProxyPort = httpProxyPort;
+ mojo.httpProxyPort = httpProxyPortHolder.getPort();
mojo.httpProxyUsername = HTTP_PROXY_USER_NAME;
mojo.httpProxyPassword = HTTP_PROXY_PASSWORD;
mojo.httpProxyRealm = HTTP_PROXY_REALM;
mojo.isHttpProxySecure = false;
- mojo.httpProxyAuthUri = String.format("http://localhost:%s",
httpProxyPort);
+ mojo.httpProxyAuthUri = String.format("http://localhost:%s",
httpProxyPortHolder.getPort());
// HTTP client properties
mojo.httpClientProperties = new HashMap<>();
diff --git
a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/ServletCamelRouterTestSupport.java
b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/ServletCamelRouterTestSupport.java
index 60d66d1d4d89..865dd1c1fc60 100644
---
a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/ServletCamelRouterTestSupport.java
+++
b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/ServletCamelRouterTestSupport.java
@@ -40,18 +40,21 @@ import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.ObjectHelper;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class ServletCamelRouterTestSupport extends CamelTestSupport {
public static final String CONTEXT = "/mycontext";
protected String contextUrl;
+ @RegisterExtension
+ AvailablePortFinder.Port portHolder = AvailablePortFinder.find();
protected int port;
protected DeploymentManager manager;
protected Undertow server;
@Override
public void setupResources() throws Exception {
- port = AvailablePortFinder.getNextAvailable();
+ port = portHolder.getPort();
DeploymentInfo servletBuilder = getDeploymentInfo();
manager = Servlets.newContainer().addDeployment(servletBuilder);
manager.deploy();
diff --git
a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackProducerTest.java
b/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackProducerTest.java
index 6ff6acb03248..8f2b636a35ec 100644
---
a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackProducerTest.java
+++
b/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackProducerTest.java
@@ -28,10 +28,12 @@ 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;
public class SlackProducerTest extends CamelTestSupport {
- protected static final int UNDERTOW_PORT =
AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port UNDERTOW_PORT = AvailablePortFinder.find();
@EndpointInject("mock:errors")
MockEndpoint errors;
@@ -72,13 +74,14 @@ public class SlackProducerTest extends CamelTestSupport {
@Override
public void configure() {
SlackComponent slack = new SlackComponent();
- slack.setWebhookUrl("http://localhost:" + UNDERTOW_PORT +
"/slack/webhook");
+ slack.setWebhookUrl("http://localhost:" +
UNDERTOW_PORT.getPort() + "/slack/webhook");
context.addComponent("slack", slack);
onException(Exception.class).handled(true).to(errors);
final String slackUser = System.getProperty("SLACK_USER",
"CamelTest");
- from("undertow:http://localhost:" + UNDERTOW_PORT +
"/slack/webhook").setBody(constant("{\"ok\": true}"));
+ from("undertow:http://localhost:" + UNDERTOW_PORT.getPort() +
"/slack/webhook")
+ .setBody(constant("{\"ok\": true}"));
from(test).to(String.format("slack:#general?iconEmoji=:camel:&username=%s",
slackUser));
}
diff --git
a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
index 5fc529f51f8c..83458c1ab894 100644
---
a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
+++
b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
@@ -32,6 +32,7 @@ import org.jsmpp.examples.SMPPServerSimulator;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
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.assertNotNull;
@@ -40,9 +41,10 @@ import static org.junit.jupiter.api.Assertions.fail;
class SmppTRXProducerIT extends CamelTestSupport {
- private static int PORT = 8200; // use private port to avoid reusing from
previous tests
+ @RegisterExtension
+ static AvailablePortFinder.Port PORT = AvailablePortFinder.find();
private static final Thread SMPP_SERVER_SIMULATOR = new Thread(() -> {
- System.setProperty("jsmpp.simulator.port", "" + PORT);
+ System.setProperty("jsmpp.simulator.port", "" + PORT.getPort());
SMPPServerSimulator.main(null);
});
@@ -60,7 +62,6 @@ class SmppTRXProducerIT extends CamelTestSupport {
@BeforeAll
public static void runSMPPServerSimulator() {
- PORT = AvailablePortFinder.getNextAvailable(8200, 9999);
SMPP_SERVER_SIMULATOR.start();
}
@@ -100,7 +101,7 @@ class SmppTRXProducerIT extends CamelTestSupport {
@Override
public void configure() {
from("direct:start2")
- .to("smpp://j@localhost:" + PORT +
"?password=jpwd&systemType=producer" +
+ .to("smpp://j@localhost:" + PORT.getPort() +
"?password=jpwd&systemType=producer" +
"&messageReceiverRouteId=TYPO_IN_MessageReceiverRouteId");
}
});
@@ -122,7 +123,7 @@ class SmppTRXProducerIT extends CamelTestSupport {
@Override
public void configure() {
from("direct:start2")
- .to("smpp://j@localhost:" + PORT +
"?password=jpwd&systemType=producer" +
+ .to("smpp://j@localhost:" + PORT.getPort() +
"?password=jpwd&systemType=producer" +
"&messageReceiverRouteId=testMessageReceiverRouteId2");
}
});
@@ -141,7 +142,7 @@ class SmppTRXProducerIT extends CamelTestSupport {
@Override
public void configure() {
from("direct:start")
- .to("smpp://j@localhost:" + PORT +
"?password=jpwd&systemType=producer" +
+ .to("smpp://j@localhost:" + PORT.getPort() +
"?password=jpwd&systemType=producer" +
"&messageReceiverRouteId=testMessageReceiverRouteId");
from("direct:messageReceiver").id("testMessageReceiverRouteId")
diff --git
a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerSupervisingRouteControllerIT.java
b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerSupervisingRouteControllerIT.java
index 237cce240625..77c2b94a0afd 100644
---
a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerSupervisingRouteControllerIT.java
+++
b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerSupervisingRouteControllerIT.java
@@ -40,6 +40,7 @@ import org.jsmpp.examples.SMPPServerSimulator;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.parallel.Isolated;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -49,7 +50,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
@Isolated
class SmppTRXProducerSupervisingRouteControllerIT extends CamelTestSupport {
- private static int PORT = 8100; // use private port to avoid reusing from
previous tests
+ @RegisterExtension
+ static AvailablePortFinder.Port PORT = AvailablePortFinder.find();
private static final CountDownLatch LATCH = new CountDownLatch(1);
private static final Thread SMPP_SERVER_SIMULATOR = new Thread(() -> {
try {
@@ -58,7 +60,7 @@ class SmppTRXProducerSupervisingRouteControllerIT extends
CamelTestSupport {
} catch (Exception e) {
// ignore
}
- System.setProperty("jsmpp.simulator.port", "" + PORT);
+ System.setProperty("jsmpp.simulator.port", "" + PORT.getPort());
SMPPServerSimulator.main(null);
});
@@ -95,7 +97,6 @@ class SmppTRXProducerSupervisingRouteControllerIT extends
CamelTestSupport {
@BeforeAll
public static void runSMPPServerSimulator() {
- PORT = AvailablePortFinder.getNextAvailable(8100, 9999);
SMPP_SERVER_SIMULATOR.start();
}
@@ -137,7 +138,7 @@ class SmppTRXProducerSupervisingRouteControllerIT extends
CamelTestSupport {
@Override
public void configure() {
from("direct:start")
- .to("smpp://j@localhost:" + PORT +
"?password=jpwd&systemType=producer" +
+ .to("smpp://j@localhost:" + PORT.getPort() +
"?password=jpwd&systemType=producer" +
"&messageReceiverRouteId=testMessageReceiverRouteId");
from("direct:messageReceiver").id("testMessageReceiverRouteId")
diff --git
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
index 44921d6e5392..723dc468cc36 100644
---
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
+++
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
@@ -28,6 +28,7 @@ import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.AvailablePortFinder;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.slf4j.Logger;
@@ -44,6 +45,13 @@ import org.snmp4j.smi.VariableBinding;
public class TrapTest extends SnmpTestSupport {
private static final Logger LOG = LoggerFactory.getLogger(TrapTest.class);
+ @RegisterExtension
+ AvailablePortFinder.Port portV0 = AvailablePortFinder.find();
+ @RegisterExtension
+ AvailablePortFinder.Port portV1 = AvailablePortFinder.find();
+ @RegisterExtension
+ AvailablePortFinder.Port portV3 = AvailablePortFinder.find();
+
@ParameterizedTest
@MethodSource("supportedVersions")
public void testSendReceiveTraps(int version) throws Exception {
@@ -93,31 +101,27 @@ public class TrapTest extends SnmpTestSupport {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- //genrate ports for trap consumers/producers
- int portV0 = AvailablePortFinder.getNextAvailable();
- int portV1 = AvailablePortFinder.getNextAvailable();
- int portV3 = AvailablePortFinder.getNextAvailable();
-
from("direct:snmptrapV0")
.log(LoggingLevel.INFO, "Sending Trap pdu ${body}")
- .to("snmp:127.0.0.1:" + portV0 +
"?protocol=udp&type=TRAP&snmpVersion=0");
+ .to("snmp:127.0.0.1:" + portV0.getPort() +
"?protocol=udp&type=TRAP&snmpVersion=0");
- from("snmp:0.0.0.0:" + portV0 +
"?protocol=udp&type=TRAP&snmpVersion=0")
+ from("snmp:0.0.0.0:" + portV0.getPort() +
"?protocol=udp&type=TRAP&snmpVersion=0")
.to("mock:resultV0");
from("direct:snmptrapV1")
.log(LoggingLevel.INFO, "Sending Trap pdu ${body}")
- .to("snmp:127.0.0.1:" + portV1 +
"?protocol=udp&type=TRAP&snmpVersion=1");
+ .to("snmp:127.0.0.1:" + portV1.getPort() +
"?protocol=udp&type=TRAP&snmpVersion=1");
- from("snmp:0.0.0.0:" + portV1 +
"?protocol=udp&type=TRAP&snmpVersion=1")
+ from("snmp:0.0.0.0:" + portV1.getPort() +
"?protocol=udp&type=TRAP&snmpVersion=1")
.to("mock:resultV1");
from("direct:snmptrapV3")
.log(LoggingLevel.INFO, "Sending Trap pdu ${body}")
- .to("snmp:127.0.0.1:" + portV3
+ .to("snmp:127.0.0.1:" + portV3.getPort()
+
"?securityName=test&securityLevel=1&protocol=udp&type=TRAP&snmpVersion=3");
- from("snmp:0.0.0.0:" + portV3 +
"?securityName=test&securityLevel=1&protocol=udp&type=TRAP&snmpVersion=3")
+ from("snmp:0.0.0.0:" + portV3.getPort()
+ +
"?securityName=test&securityLevel=1&protocol=udp&type=TRAP&snmpVersion=3")
.to("mock:resultV3");
}
};
diff --git
a/components/camel-spring-parent/camel-undertow-spring-security/src/test/java/org/apache/camel/component/spring/security/AbstractSpringSecurityBearerTokenTest.java
b/components/camel-spring-parent/camel-undertow-spring-security/src/test/java/org/apache/camel/component/spring/security/AbstractSpringSecurityBearerTokenTest.java
index ce4199c581bb..5bac1d21e442 100644
---
a/components/camel-spring-parent/camel-undertow-spring-security/src/test/java/org/apache/camel/component/spring/security/AbstractSpringSecurityBearerTokenTest.java
+++
b/components/camel-spring-parent/camel-undertow-spring-security/src/test/java/org/apache/camel/component/spring/security/AbstractSpringSecurityBearerTokenTest.java
@@ -34,12 +34,13 @@ import
org.apache.camel.component.spring.security.keycloak.KeycloakUsernameSubCl
import org.apache.camel.component.undertow.UndertowComponent;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.security.oauth2.jwt.Jwt;
public abstract class AbstractSpringSecurityBearerTokenTest extends
CamelTestSupport {
- private static volatile int port;
+ @RegisterExtension
+ static AvailablePortFinder.Port port = AvailablePortFinder.find();
private final MockFilter mockFilter = new MockFilter();
@@ -47,13 +48,8 @@ public abstract class AbstractSpringSecurityBearerTokenTest
extends CamelTestSup
return mockFilter;
}
- @BeforeAll
- public static void initPort() {
- port = AvailablePortFinder.getNextAvailable();
- }
-
protected static int getPort() {
- return port;
+ return port.getPort();
}
@Override
diff --git
a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshAlgorithmParametersTest.java
b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshAlgorithmParametersTest.java
index a7beaf27b446..7d985493a6a5 100644
---
a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshAlgorithmParametersTest.java
+++
b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshAlgorithmParametersTest.java
@@ -39,19 +39,25 @@ import org.apache.sshd.common.signature.BuiltinSignatures;
import org.apache.sshd.common.signature.Signature;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class SshAlgorithmParametersTest extends CamelTestSupport {
- private int port = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
- private String sshEndpointURI = "ssh://smx:smx@localhost:" + port +
"?timeout=3000" +
- "&ciphers=aes192-ctr" +
-
"&[email protected],hmac-sha2-256,hmac-sha1" +
- "&kex=ecdh-sha2-nistp521" +
-
"&signatures=rsa-sha2-512,[email protected]" +
- "&compressions=zlib,none";
+ private String getSshEndpointURI() {
+ return "ssh://smx:smx@localhost:" + port.getPort() + "?timeout=3000" +
+ "&ciphers=aes192-ctr" +
+ "&[email protected],hmac-sha2-256,hmac-sha1" +
+ "&kex=ecdh-sha2-nistp521" +
+ "&signatures=rsa-sha2-512,[email protected]" +
+ "&compressions=zlib,none";
+ }
- private String customClientSshEndpointURI = "ssh://smx:smx@localhost:" +
port + "?timeout=3000&clientBuilder=#myClient";
+ private String getCustomClientSshEndpointURI() {
+ return "ssh://smx:smx@localhost:" + port.getPort() +
"?timeout=3000&clientBuilder=#myClient";
+ }
@Override
protected void bindToRegistry(Registry registry) throws Exception {
@@ -86,7 +92,7 @@ public class SshAlgorithmParametersTest extends
CamelTestSupport {
@Test
public void producerCiphersParameterTest() throws Exception {
context.getComponent("ssh", SshComponent.class);
- SshEndpoint endpoint = context.getEndpoint(sshEndpointURI,
SshEndpoint.class);
+ SshEndpoint endpoint = context.getEndpoint(getSshEndpointURI(),
SshEndpoint.class);
SshProducer producer = (SshProducer) endpoint.createProducer();
producer.start();
SshClient client = (SshClient) FieldUtils.readField(producer,
"client", true);
@@ -96,7 +102,7 @@ public class SshAlgorithmParametersTest extends
CamelTestSupport {
@Test
public void consumerCiphersParameterTest() throws Exception {
context.getComponent("ssh", SshComponent.class);
- SshEndpoint endpoint = context.getEndpoint(sshEndpointURI,
SshEndpoint.class);
+ SshEndpoint endpoint = context.getEndpoint(getSshEndpointURI(),
SshEndpoint.class);
SshConsumer consumer = (SshConsumer) endpoint.createConsumer(x -> {
});
consumer.start();
@@ -107,7 +113,7 @@ public class SshAlgorithmParametersTest extends
CamelTestSupport {
@Test
public void consumerCustomClientParameterTest() throws Exception {
context.getComponent("ssh", SshComponent.class);
- SshEndpoint endpoint = context.getEndpoint(customClientSshEndpointURI,
SshEndpoint.class);
+ SshEndpoint endpoint =
context.getEndpoint(getCustomClientSshEndpointURI(), SshEndpoint.class);
SshConsumer consumer = (SshConsumer) endpoint.createConsumer(x -> {
});
consumer.start();
@@ -118,7 +124,7 @@ public class SshAlgorithmParametersTest extends
CamelTestSupport {
@Test
public void producerCustomClientParameterTest() throws Exception {
context.getComponent("ssh", SshComponent.class);
- SshEndpoint endpoint = context.getEndpoint(customClientSshEndpointURI,
SshEndpoint.class);
+ SshEndpoint endpoint =
context.getEndpoint(getCustomClientSshEndpointURI(), SshEndpoint.class);
SshProducer producer = (SshProducer) endpoint.createProducer();
producer.start();
SshClient client = (SshClient) FieldUtils.readField(producer,
"client", true);
diff --git
a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentTestSupport.java
b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentTestSupport.java
index 29e0e604efd6..5072f0766d93 100644
---
a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentTestSupport.java
+++
b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshComponentTestSupport.java
@@ -23,14 +23,17 @@ import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
import org.apache.sshd.server.SshServer;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class SshComponentTestSupport extends CamelTestSupport {
+ @RegisterExtension
+ AvailablePortFinder.Port portHolder = AvailablePortFinder.find();
protected SshServer sshd;
protected int port;
@Override
public void doPreSetup() throws Exception {
- port = AvailablePortFinder.getNextAvailable();
+ port = portHolder.getPort();
sshd = SshServer.setUpDefaultServer();
sshd.setPort(port);
diff --git
a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshIdleTimeoutTest.java
b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshIdleTimeoutTest.java
index 2ac79edd7b08..54eb355a4b44 100644
---
a/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshIdleTimeoutTest.java
+++
b/components/camel-ssh/src/test/java/org/apache/camel/component/ssh/SshIdleTimeoutTest.java
@@ -32,10 +32,12 @@ import org.apache.sshd.server.SshServer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class SshIdleTimeoutTest extends SshComponentTestSupport {
- private int delayedPort = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ AvailablePortFinder.Port delayedPort = AvailablePortFinder.find();
private SshServer delayedSshd;
@AfterEach
@@ -102,7 +104,7 @@ public class SshIdleTimeoutTest extends
SshComponentTestSupport {
private void startDelayedServer() throws Exception {
delayedSshd = SshServer.setUpDefaultServer();
- delayedSshd.setPort(delayedPort);
+ delayedSshd.setPort(delayedPort.getPort());
delayedSshd.setKeyPairProvider(new
FileKeyPairProvider(Paths.get("src/test/resources/hostkey.pem")));
delayedSshd.setCommandFactory(new DelayedEchoCommandFactory(1000));
delayedSshd.setPasswordAuthenticator((username, password, session) ->
true);
@@ -150,9 +152,9 @@ public class SshIdleTimeoutTest extends
SshComponentTestSupport {
.to("mock:result");
from("direct:sshWithShortIdleTimeout")
- .to("ssh://smx:smx@localhost:" + delayedPort +
"?timeout=5000&idleTimeout=500");
+ .to("ssh://smx:smx@localhost:" + delayedPort.getPort()
+ "?timeout=5000&idleTimeout=500");
from("direct:sshWithLongIdleTimeout")
- .to("ssh://smx:smx@localhost:" + delayedPort +
"?timeout=5000&idleTimeout=5000");
+ .to("ssh://smx:smx@localhost:" + delayedPort.getPort()
+ "?timeout=5000&idleTimeout=5000");
}
};
}
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java
index 9cf7cadd4708..9bfdbc2b5990 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java
@@ -35,8 +35,10 @@ import org.junit.jupiter.api.extension.RegisterExtension;
public abstract class StompBaseTest extends CamelTestSupport {
protected int numberOfMessages = 100;
- static int sslServicePort = AvailablePortFinder.getNextAvailable();
- static int servicePort = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port sslServicePort =
AvailablePortFinder.find();
+ @RegisterExtension
+ static AvailablePortFinder.Port servicePort = AvailablePortFinder.find();
@RegisterExtension
public static ArtemisService service = new ArtemisEmbeddedServiceBuilder()
@@ -50,11 +52,11 @@ public abstract class StompBaseTest extends
CamelTestSupport {
"keyStorePath=jsse/server-side-keystore.jks;" +
"keyStorePassword=password;" +
"protocols=STOMP",
- sslServicePort));
+ sslServicePort.getPort()));
configuration.addAcceptorConfiguration("stomp-tcp-acceptor",
String.format("tcp://0.0.0.0:%s?protocols=STOMP",
- servicePort));
+ servicePort.getPort()));
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -84,10 +86,10 @@ public abstract class StompBaseTest extends
CamelTestSupport {
Stomp stomp;
if (isUseSsl()) {
- stomp = new Stomp("ssl://localhost:" + sslServicePort);
+ stomp = new Stomp("ssl://localhost:" + sslServicePort.getPort());
stomp.setSslContext(getClientSSLContext());
} else {
- stomp = new Stomp("tcp://localhost:" + servicePort);
+ stomp = new Stomp("tcp://localhost:" + servicePort.getPort());
}
return stomp;
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerHeaderFilterStrategyTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerHeaderFilterStrategyTest.java
index a9d7a5ab0b84..9c4b1df21ef4 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerHeaderFilterStrategyTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerHeaderFilterStrategyTest.java
@@ -72,8 +72,8 @@ public class StompConsumerHeaderFilterStrategyTest extends
StompBaseTest {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
-
fromF("stomp:test?brokerURL=tcp://localhost:%s&headerFilterStrategy=#customHeaderFilterStrategy",
- servicePort)
+
fromF("stomp:test?brokerURL=tcp://localhost:%d&headerFilterStrategy=#customHeaderFilterStrategy",
+ servicePort.getPort())
.id("headerFilterStrategyRoute")
.transform(body().convertToString())
.to("mock:result");
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerTest.java
index 931830be3cfc..ea3378cff7d8 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerTest.java
@@ -61,7 +61,7 @@ public class StompConsumerTest extends StompBaseTest {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- fromF("stomp:test?brokerURL=tcp://localhost:%s", servicePort)
+ fromF("stomp:test?brokerURL=tcp://localhost:%d",
servicePort.getPort())
.transform(body().convertToString())
.to("mock:result");
}
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerUriTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerUriTest.java
index a487c0495a47..498889f08196 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerUriTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompConsumerUriTest.java
@@ -61,7 +61,7 @@ public class StompConsumerUriTest extends StompBaseTest {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- fromF("stomp:test?brokerURL=tcp://localhost:%d", servicePort)
+ fromF("stomp:test?brokerURL=tcp://localhost:%d",
servicePort.getPort())
.transform(body().convertToString())
.to("mock:result");
}
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompGlobalSslConsumerTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompGlobalSslConsumerTest.java
index a064c5da4a08..69cda338269c 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompGlobalSslConsumerTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompGlobalSslConsumerTest.java
@@ -42,7 +42,7 @@ public class StompGlobalSslConsumerTest extends
StompConsumerTest {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- fromF("stomp:test?brokerURL=ssl://localhost:%d",
sslServicePort)
+ fromF("stomp:test?brokerURL=ssl://localhost:%d",
sslServicePort.getPort())
.transform(body().convertToString())
.to("mock:result");
}
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompProducerTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompProducerTest.java
index 8d6e00a59bb6..ecd64a680c75 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompProducerTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompProducerTest.java
@@ -94,7 +94,7 @@ public class StompProducerTest extends StompBaseTest {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
-
from("direct:foo").toF("stomp:test?brokerURL=tcp://localhost:%s", servicePort);
+
from("direct:foo").toF("stomp:test?brokerURL=tcp://localhost:%d",
servicePort.getPort());
}
};
}
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslConsumerTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslConsumerTest.java
index 14a26b48c5c4..a380601490e9 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslConsumerTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslConsumerTest.java
@@ -32,7 +32,7 @@ public class StompSslConsumerTest extends StompConsumerTest {
return new RouteBuilder() {
public void configure() {
fromF("stomp:test?brokerURL=ssl://localhost:%d&sslContextParameters=#sslContextParameters",
- sslServicePort)
+ sslServicePort.getPort())
.transform(body().convertToString())
.to("mock:result");
}
diff --git
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslProducerTest.java
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslProducerTest.java
index 801ad99e846d..e8062c3de92e 100644
---
a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslProducerTest.java
+++
b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompSslProducerTest.java
@@ -31,7 +31,7 @@ public class StompSslProducerTest extends StompProducerTest {
public void configure() {
from("direct:foo")
.toF("stomp:test?brokerURL=ssl://localhost:%d&sslContextParameters=#sslContextParameters",
- sslServicePort);
+ sslServicePort.getPort());
}
};
}
diff --git
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookBasePathTest.java
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookBasePathTest.java
index 41012916c73b..ee525c725ca6 100644
---
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookBasePathTest.java
+++
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookBasePathTest.java
@@ -87,7 +87,7 @@ public class WebhookBasePathTest extends WebhookTestBase {
restConfiguration()
.host("0.0.0.0")
- .port(port);
+ .port(port.getPort());
from("webhook:wb-delegate://xx?webhookPath=uri0")
.transform(body().prepend("msg: "));
diff --git
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookHttpBindingTest.java
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookHttpBindingTest.java
index 6ec21661f0df..e5c34c837f39 100644
---
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookHttpBindingTest.java
+++
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookHttpBindingTest.java
@@ -70,7 +70,7 @@ public class WebhookHttpBindingTest extends WebhookTestBase {
restConfiguration()
.host("0.0.0.0")
- .port(port);
+ .port(port.getPort());
from("webhook:wb-delegate://xx")
.transform(body().prepend("msg: "));
diff --git
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookMultiRouteTest.java
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookMultiRouteTest.java
index 13165caaaee1..9db0e699d217 100644
---
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookMultiRouteTest.java
+++
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookMultiRouteTest.java
@@ -57,7 +57,7 @@ public class WebhookMultiRouteTest extends WebhookTestBase {
restConfiguration()
.host("0.0.0.0")
- .port(port);
+ .port(port.getPort());
from("webhook:wb-delegate://yy")
.transform(body().prepend("uri: "));
diff --git
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookPathTest.java
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookPathTest.java
index 7d7e7f59837c..f8a249a46ea0 100644
---
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookPathTest.java
+++
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookPathTest.java
@@ -73,7 +73,7 @@ public class WebhookPathTest extends WebhookTestBase {
restConfiguration()
.host("0.0.0.0")
- .port(port);
+ .port(port.getPort());
from("webhook:wb-delegate://xx")
.transform(body().prepend("msg: "));
diff --git
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRegistrationTest.java
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRegistrationTest.java
index 97309ce187b4..ded586efbaf0 100644
---
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRegistrationTest.java
+++
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookRegistrationTest.java
@@ -47,7 +47,7 @@ public class WebhookRegistrationTest extends WebhookTestBase {
public void configure() {
restConfiguration()
.host("0.0.0.0")
- .port(port);
+ .port(port.getPort());
from("webhook:wb-delegate://xx")
.transform(body().prepend("msg: "));
diff --git
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookTestBase.java
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookTestBase.java
index f33fd4e26195..c5cc1ae561fb 100644
---
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookTestBase.java
+++
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookTestBase.java
@@ -18,15 +18,11 @@ package org.apache.camel.component.webhook;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class WebhookTestBase extends CamelTestSupport {
- protected static int port;
-
- @BeforeAll
- public static void initPort() {
- port = AvailablePortFinder.getNextAvailable();
- }
+ @RegisterExtension
+ static AvailablePortFinder.Port port = AvailablePortFinder.find();
}
diff --git
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookUriEncodingTest.java
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookUriEncodingTest.java
index 247f40136e2c..a1e60936d8e4 100644
---
a/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookUriEncodingTest.java
+++
b/components/camel-webhook/src/test/java/org/apache/camel/component/webhook/WebhookUriEncodingTest.java
@@ -59,7 +59,7 @@ public class WebhookUriEncodingTest extends WebhookTestBase {
restConfiguration()
.host("0.0.0.0")
- .port(port);
+ .port(port.getPort());
from("webhook:wb-delegate://xx?webhookBasePath=/base&webhookPath=/uri&foo=hello}
world&bar=RAW(hello} world)")
.transform(body().prepend("msg: "));
diff --git
a/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/WhatsAppWebhookTest.java
b/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/WhatsAppWebhookTest.java
index c7d03aac6a23..7b34a56d8b36 100644
---
a/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/WhatsAppWebhookTest.java
+++
b/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/WhatsAppWebhookTest.java
@@ -27,10 +27,12 @@ import org.apache.camel.component.webhook.WebhookEndpoint;
import org.apache.camel.test.AvailablePortFinder;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class WhatsAppWebhookTest extends WhatsAppTestSupport {
- private int port;
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
@Test
public void testWebhookRegistration() throws Exception {
@@ -85,13 +87,8 @@ public class WhatsAppWebhookTest extends WhatsAppTestSupport
{
Assertions.assertThat(mock.getExchanges().get(0).getIn().getBody(String.class)).contains("\"type\":
\"text\"");
}
- @Override
- protected void doPreSetup() {
- port = AvailablePortFinder.getNextAvailable();
- }
-
protected WhatsAppApiConfig getWhatsAppApiConfig() {
- return WhatsAppApiConfig.mock(port);
+ return WhatsAppApiConfig.mock(port.getPort());
}
@Override
@@ -99,7 +96,7 @@ public class WhatsAppWebhookTest extends WhatsAppTestSupport {
return new RouteBuilder() {
@Override
public void configure() {
- restConfiguration().host("localhost").port(port);
+ restConfiguration().host("localhost").port(port.getPort());
from("webhook:whatsapp:" + phoneNumberId +
"?webhookAutoRegister=false").id("webhook")
.convertBodyTo(String.class).to("mock:endpoint");
diff --git
a/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/EndpointQueryParamTest.java
b/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/EndpointQueryParamTest.java
index e19a182e123d..9bf1df5c1542 100644
---
a/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/EndpointQueryParamTest.java
+++
b/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/EndpointQueryParamTest.java
@@ -20,21 +20,25 @@ import org.apache.camel.RoutesBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.AvailablePortFinder;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
class EndpointQueryParamTest extends BaseEndpointDslTest {
+
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
+
@Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new EndpointRouteBuilder() {
@Override
public void configure() {
- int port = AvailablePortFinder.getNextAvailable();
-
restConfiguration().component("jetty").host("localhost").port(port);
+
restConfiguration().component("jetty").host("localhost").port(port.getPort());
rest().get("path/xyz")
.to("mock:result");
from(direct("test"))
-
.to(http(String.format("localhost:%d/path/xyz?param1=1¶m2=2",
port)).httpMethod("GET"));
+
.to(http(String.format("localhost:%d/path/xyz?param1=1¶m2=2",
port.getPort())).httpMethod("GET"));
from(direct("test2"))
-
.toF("http://localhost:%d/path/xyz?param1=1¶m2=2&httpMethod=GET", port);
+
.toF("http://localhost:%d/path/xyz?param1=1¶m2=2&httpMethod=GET",
port.getPort());
}
};
}
diff --git
a/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RestDslTest.java
b/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RestDslTest.java
index 72d8f8293a1a..ede52920f28a 100644
---
a/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RestDslTest.java
+++
b/dsl/camel-endpointdsl/src/test/java/org/apache/camel/builder/endpoint/RestDslTest.java
@@ -21,14 +21,17 @@ import
org.apache.camel.component.platform.http.vertx.VertxPlatformHttpServer;
import
org.apache.camel.component.platform.http.vertx.VertxPlatformHttpServerConfiguration;
import org.apache.camel.test.AvailablePortFinder;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
public class RestDslTest extends BaseEndpointDslTest {
+ @RegisterExtension
+ AvailablePortFinder.Port port = AvailablePortFinder.find();
+
@Override
protected CamelContext createCamelContext() throws Exception {
- int port = AvailablePortFinder.getNextAvailable();
VertxPlatformHttpServerConfiguration conf = new
VertxPlatformHttpServerConfiguration();
- conf.setBindPort(port);
+ conf.setBindPort(port.getPort());
CamelContext context = super.createCamelContext();
context.addService(new VertxPlatformHttpServer(conf));
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
index 26d0107f8529..c3e46d8f7ec5 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
@@ -26,17 +26,19 @@ import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.testcontainers.containers.GenericContainer;
@Tag("container-only")
public class RunCommandOnMqttITCase extends JBangTestSupport {
- private static int mqttPort = AvailablePortFinder.getNextAvailable();
+ @RegisterExtension
+ static AvailablePortFinder.Port mqttPort = AvailablePortFinder.find();
private static MosquittoLocalContainerService service;
@BeforeAll
public static void init() {
- service = new MosquittoLocalContainerService(mqttPort);
+ service = new MosquittoLocalContainerService(mqttPort.getPort());
service.initialize();
}