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 b8fe7d302105 CAMEL-23431: Migrate lumberjack and SSH tests from 
AvailablePortFinder to port-0 binding
b8fe7d302105 is described below

commit b8fe7d302105bdf9896a0df3cf25f5aead5538f2
Author: Guillaume Nodet <[email protected]>
AuthorDate: Wed May 6 17:41:14 2026 +0200

    CAMEL-23431: Migrate lumberjack and SSH tests from AvailablePortFinder to 
port-0 binding
    
    - Add getLocalPort() to LumberjackServer (Netty channel) and 
LumberjackConsumer
    - Migrate 5 lumberjack tests to use port 0 in route URI and read back 
actual port from consumer
    - Migrate SshComponentTestSupport to start SshServer with port 0 and read 
back via getPort()
    - Migrate SshIdleTimeoutTest delayed server to port 0 in doPreSetup()
    - Migrate SshAlgorithmParametersTest to dummy port (no connection made)
    - Eliminates TOCTOU race condition from AvailablePortFinder in 10 test files
---
 .../component/lumberjack/LumberjackConsumer.java   |  4 ++++
 .../component/lumberjack/io/LumberjackServer.java  |  5 +++++
 .../LumberjackComponentGlobalSSLTest.java          | 14 ++++++-------
 .../lumberjack/LumberjackComponentSSLTest.java     | 13 ++++++------
 .../lumberjack/LumberjackComponentTest.java        | 13 ++++++------
 .../lumberjack/LumberjackDisconnectionTest.java    | 13 ++++++------
 .../lumberjack/LumberjackMultiThreadIT.java        | 13 ++++++------
 .../component/ssh/SshAlgorithmParametersTest.java  |  9 +++------
 .../component/ssh/SshComponentTestSupport.java     |  9 ++-------
 .../camel/component/ssh/SshIdleTimeoutTest.java    | 23 +++++++++++++---------
 10 files changed, 58 insertions(+), 58 deletions(-)

diff --git 
a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/LumberjackConsumer.java
 
b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/LumberjackConsumer.java
index d03ee84b9cec..44850b500f19 100644
--- 
a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/LumberjackConsumer.java
+++ 
b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/LumberjackConsumer.java
@@ -59,6 +59,10 @@ public class LumberjackConsumer extends DefaultConsumer {
         super.doSuspend();
     }
 
+    public int getLocalPort() {
+        return lumberjackServer.getLocalPort();
+    }
+
     private ThreadFactory getThreadFactory() {
         String threadNamePattern = 
getEndpoint().getCamelContext().getExecutorServiceManager().getThreadNamePattern();
         return new CamelThreadFactory(threadNamePattern, 
"LumberjackNettyExecutor", true);
diff --git 
a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
 
b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
index bdcf90a52aee..6aa80d1a0539 100644
--- 
a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
+++ 
b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.lumberjack.io;
 
+import java.net.InetSocketAddress;
 import java.util.concurrent.ThreadFactory;
 
 import javax.net.ssl.SSLContext;
@@ -90,6 +91,10 @@ public final class LumberjackServer {
         LOG.info("LUMBERJACK server is started (host={}, port={}).", host, 
port);
     }
 
+    public int getLocalPort() {
+        return channel != null ? ((InetSocketAddress) 
channel.localAddress()).getPort() : -1;
+    }
+
     /**
      * Stops the server.
      *
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 a6d9cd318b05..3b7c193f2c1a 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
@@ -27,18 +27,14 @@ import org.apache.camel.support.jsse.KeyManagersParameters;
 import org.apache.camel.support.jsse.KeyStoreParameters;
 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.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 {
-    @RegisterExtension
-    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
@@ -53,13 +49,15 @@ public class LumberjackComponentGlobalSSLTest extends 
CamelTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-
-                // Lumberjack configured with SSL
-                from("lumberjack:0.0.0.0:" + port.getPort()).to("mock:output");
+                
from("lumberjack:0.0.0.0:0").routeId("lumberjack").to("mock:output");
             }
         };
     }
 
+    private int getActualPort() {
+        return ((LumberjackConsumer) 
context.getRoute("lumberjack").getConsumer()).getLocalPort();
+    }
+
     @Test
     public void shouldListenToMessagesOverSSL() throws Exception {
 
@@ -72,7 +70,7 @@ public class LumberjackComponentGlobalSSLTest extends 
CamelTestSupport {
 
         // When sending messages
         List<Integer> responses
-                = LumberjackUtil.sendMessages(port.getPort(), 
createClientSSLContextParameters(context), windows);
+                = LumberjackUtil.sendMessages(getActualPort(), 
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 39a982409851..dc697e699d1c 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
@@ -27,18 +27,14 @@ import org.apache.camel.support.jsse.KeyManagersParameters;
 import org.apache.camel.support.jsse.KeyStoreParameters;
 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.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 {
-    @RegisterExtension
-    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Override
     protected RouteBuilder createRouteBuilder() {
@@ -47,12 +43,15 @@ public class LumberjackComponentSSLTest extends 
CamelTestSupport {
 
         return new RouteBuilder() {
             public void configure() {
-                // Lumberjack configured with SSL
-                from("lumberjack:0.0.0.0:" + port.getPort() + 
"?sslContextParameters=#ssl").to("mock:output");
+                
from("lumberjack:0.0.0.0:0?sslContextParameters=#ssl").routeId("lumberjack").to("mock:output");
             }
         };
     }
 
+    private int getActualPort() {
+        return ((LumberjackConsumer) 
context.getRoute("lumberjack").getConsumer()).getLocalPort();
+    }
+
     @Test
     public void shouldListenToMessagesOverSSL() throws Exception {
         // We're expecting 25 messages with Maps
@@ -62,7 +61,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.getPort(), 
createClientSSLContextParameters(), windows);
+        List<Integer> responses = LumberjackUtil.sendMessages(getActualPort(), 
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 f80a625d69d2..e7dd0ce1ed1a 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
@@ -22,12 +22,10 @@ import java.util.Map;
 
 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.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 +35,20 @@ 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 {
-    @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.getPort()).to("mock:output");
+                
from("lumberjack:0.0.0.0:0").routeId("lumberjack").to("mock:output");
             }
         };
     }
 
+    private int getActualPort() {
+        return ((LumberjackConsumer) 
context.getRoute("lumberjack").getConsumer()).getLocalPort();
+    }
+
     @Test
     public void shouldListenToMessages() throws Exception {
         // We're expecting 25 messages with Maps
@@ -60,7 +59,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.getPort(), 
null, windows);
+        List<Integer> responses = LumberjackUtil.sendMessages(getActualPort(), 
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 3ab7eefdfed4..ad7d046e2378 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
@@ -25,12 +25,10 @@ import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 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.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.apache.camel.test.junit6.TestSupport.assertCollectionSize;
@@ -40,19 +38,20 @@ import static 
org.apache.camel.test.junit6.TestSupport.assertCollectionSize;
               disabledReason = "This test does not run reliably on multiple 
platforms (see CAMEL-21438)")
 @Isolated
 public class LumberjackDisconnectionTest extends CamelTestSupport {
-    @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.getPort()).process(new 
ErrorProcessor()).to("mock:output");
+                from("lumberjack:0.0.0.0:0").routeId("lumberjack").process(new 
ErrorProcessor()).to("mock:output");
             }
         };
     }
 
+    private int getActualPort() {
+        return ((LumberjackConsumer) 
context.getRoute("lumberjack").getConsumer()).getLocalPort();
+    }
+
     @Test
     public void shouldDisconnectUponError() throws Exception {
         // We're expecting 3 messages with Maps
@@ -64,7 +63,7 @@ public class LumberjackDisconnectionTest extends 
CamelTestSupport {
         List<Integer> windows = Arrays.asList(15, 10);
 
         // When sending messages
-        List<Integer> responses = LumberjackUtil.sendMessages(port.getPort(), 
null, windows, false);
+        List<Integer> responses = LumberjackUtil.sendMessages(getActualPort(), 
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 300ccf46d17a..97dd9c34d6b8 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
@@ -25,7 +25,6 @@ import java.util.concurrent.TimeUnit;
 
 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.awaitility.Awaitility;
 import org.junit.jupiter.api.Assertions;
@@ -33,7 +32,6 @@ 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;
@@ -45,8 +43,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 @Isolated
 public class LumberjackMultiThreadIT extends CamelTestSupport {
 
-    @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;
@@ -58,12 +54,15 @@ public class LumberjackMultiThreadIT extends 
CamelTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                // Lumberjack configured with a specific port
-                from("lumberjack:0.0.0.0:" + port.getPort()).to("mock:output");
+                
from("lumberjack:0.0.0.0:0").routeId("lumberjack").to("mock:output");
             }
         };
     }
 
+    private int getActualPort() {
+        return ((LumberjackConsumer) 
context.getRoute("lumberjack").getConsumer()).getLocalPort();
+    }
+
     @BeforeEach
     void setupTest() {
         for (int i = 0; i < CONCURRENCY_LEVEL; i++) {
@@ -106,7 +105,7 @@ public class LumberjackMultiThreadIT extends 
CamelTestSupport {
         @Override
         public void run() {
             try {
-                this.responses = LumberjackUtil.sendMessages(port.getPort(), 
null, Arrays.asList(15, 10));
+                this.responses = LumberjackUtil.sendMessages(getActualPort(), 
null, Arrays.asList(15, 10));
                 latch.countDown();
             } catch (InterruptedException e) {
                 Thread.currentThread().interrupt();
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 7d985493a6a5..b0e9f6eb1d01 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
@@ -21,7 +21,6 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import org.apache.camel.spi.Registry;
-import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.sshd.client.ClientBuilder;
@@ -39,15 +38,13 @@ 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 {
 
-    @RegisterExtension
-    AvailablePortFinder.Port port = AvailablePortFinder.find();
+    private final int port = 0;
 
     private String getSshEndpointURI() {
-        return "ssh://smx:smx@localhost:" + port.getPort() + "?timeout=3000" +
+        return "ssh://smx:smx@localhost:" + port + "?timeout=3000" +
                "&ciphers=aes192-ctr" +
                "&[email protected],hmac-sha2-256,hmac-sha1" +
                "&kex=ecdh-sha2-nistp521" +
@@ -56,7 +53,7 @@ public class SshAlgorithmParametersTest extends 
CamelTestSupport {
     }
 
     private String getCustomClientSshEndpointURI() {
-        return "ssh://smx:smx@localhost:" + port.getPort() + 
"?timeout=3000&clientBuilder=#myClient";
+        return "ssh://smx:smx@localhost:" + port + 
"?timeout=3000&clientBuilder=#myClient";
     }
 
     @Override
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 5072f0766d93..e0260028ae43 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
@@ -19,29 +19,24 @@ package org.apache.camel.component.ssh;
 import java.io.IOException;
 import java.nio.file.Paths;
 
-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 = portHolder.getPort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
+        sshd.setPort(0);
         sshd.setKeyPairProvider(new 
FileKeyPairProvider(Paths.get(getHostKey())));
         sshd.setCommandFactory(new TestEchoCommandFactory());
         sshd.setPasswordAuthenticator((username, password, session) -> true);
         sshd.setPublickeyAuthenticator((username, key, session) -> true);
         sshd.start();
+        port = sshd.getPort();
     }
 
     protected String getHostKey() {
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 54eb355a4b44..28591519dc3e 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
@@ -23,7 +23,6 @@ import java.util.Optional;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.AvailablePortFinder;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.sshd.client.SshClient;
 import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
@@ -32,14 +31,18 @@ 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 {
 
-    @RegisterExtension
-    AvailablePortFinder.Port delayedPort = AvailablePortFinder.find();
+    private int delayedPort;
     private SshServer delayedSshd;
 
+    @Override
+    public void doPreSetup() throws Exception {
+        super.doPreSetup();
+        startDelayedServer();
+    }
+
     @AfterEach
     public void stopDelayedServer() throws Exception {
         if (delayedSshd != null) {
@@ -103,18 +106,21 @@ public class SshIdleTimeoutTest extends 
SshComponentTestSupport {
     }
 
     private void startDelayedServer() throws Exception {
+        if (delayedSshd != null) {
+            return;
+        }
         delayedSshd = SshServer.setUpDefaultServer();
-        delayedSshd.setPort(delayedPort.getPort());
+        delayedSshd.setPort(0);
         delayedSshd.setKeyPairProvider(new 
FileKeyPairProvider(Paths.get("src/test/resources/hostkey.pem")));
         delayedSshd.setCommandFactory(new DelayedEchoCommandFactory(1000));
         delayedSshd.setPasswordAuthenticator((username, password, session) -> 
true);
         delayedSshd.setPublickeyAuthenticator((username, key, session) -> 
true);
         delayedSshd.start();
+        delayedPort = delayedSshd.getPort();
     }
 
     @Test
     public void testIdleTimeoutExpiresBeforeCommandCompletes() throws 
Exception {
-        startDelayedServer();
         // Send the command using a producer with idleTimeout=500ms.
         // The client's idle timeout fires during the 3s command delay,
         // closing the session before the command completes.
@@ -130,7 +136,6 @@ public class SshIdleTimeoutTest extends 
SshComponentTestSupport {
 
     @Test
     public void testIdleTimeoutLongerThanCommandDelay() throws Exception {
-        startDelayedServer();
         // Send the command using a producer with idleTimeout=5000ms.
         // The command delay (3s) completes before the idle timeout fires.
         Exchange exchange = template.send(
@@ -152,9 +157,9 @@ public class SshIdleTimeoutTest extends 
SshComponentTestSupport {
                         .to("mock:result");
 
                 from("direct:sshWithShortIdleTimeout")
-                        .to("ssh://smx:smx@localhost:" + delayedPort.getPort() 
+ "?timeout=5000&idleTimeout=500");
+                        .to("ssh://smx:smx@localhost:" + delayedPort + 
"?timeout=5000&idleTimeout=500");
                 from("direct:sshWithLongIdleTimeout")
-                        .to("ssh://smx:smx@localhost:" + delayedPort.getPort() 
+ "?timeout=5000&idleTimeout=5000");
+                        .to("ssh://smx:smx@localhost:" + delayedPort + 
"?timeout=5000&idleTimeout=5000");
             }
         };
     }

Reply via email to