This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq.git


The following commit(s) were added to refs/heads/main by this push:
     new 965b3bcfda Use ephemeral ports in HTTP/WS transport tests (#1675)
965b3bcfda is described below

commit 965b3bcfdac38462a48ef30393b910353ea4404e
Author: Jean-Louis Monteiro <[email protected]>
AuthorDate: Tue Feb 17 16:33:40 2026 +0100

    Use ephemeral ports in HTTP/WS transport tests (#1675)
---
 .../transport/http/HttpTransportBrokerTest.java    |  4 +--
 .../transport/https/HttpsTransportBrokerTest.java  |  2 +-
 .../transport/ws/MQTTWSSTransportTest.java         |  2 +-
 .../activemq/transport/ws/MQTTWSTransportTest.java |  4 +++
 .../transport/ws/StompWSSTransportTest.java        |  2 +-
 .../transport/ws/WSTransportHttpTraceTest.java     |  5 ++--
 .../transport/ws/WSTransportLinkStealingTest.java  |  5 ++--
 .../activemq/transport/ws/WSTransportTest.java     |  6 ++---
 .../transport/ws/WSTransportTestSupport.java       | 30 +++++++++++-----------
 .../transport/wss/WSSTransportHttpTraceTest.java   |  5 ++--
 .../wss/WSSTransportLinkStealingTest.java          |  2 +-
 .../activemq/transport/wss/WSSTransportTest.java   |  6 ++---
 .../apache/activemq/broker/BrokerTestSupport.java  |  1 +
 .../transport/TransportBrokerTestSupport.java      |  4 ++-
 .../auto/AutoNIOSslTransportBrokerTest.java        |  2 +-
 .../transport/auto/AutoSslTransportBrokerTest.java |  2 +-
 .../transport/nio/NIOSSLTransportBrokerTest.java   |  2 +-
 .../transport/tcp/SslTransportBrokerTest.java      |  2 +-
 18 files changed, 47 insertions(+), 39 deletions(-)

diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTransportBrokerTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTransportBrokerTest.java
index 2170541525..488964ad5f 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTransportBrokerTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTransportBrokerTest.java
@@ -27,13 +27,13 @@ import 
org.apache.activemq.transport.TransportBrokerTestSupport;
 public class HttpTransportBrokerTest extends TransportBrokerTestSupport {
 
     protected String getBindLocation() {
-        return "http://localhost:8081";;
+        return "http://localhost:0";;
     }
 
     protected void setUp() throws Exception {
         maxWait = 2000;
         super.setUp();
-        WaitForJettyListener.waitForJettySocketToAccept(getBindLocation());
+        
WaitForJettyListener.waitForJettySocketToAccept(connector.getPublishableConnectURI().toString());
     }
 
     protected BrokerService createBroker() throws Exception {
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/https/HttpsTransportBrokerTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/https/HttpsTransportBrokerTest.java
index b57cf907f6..37738bcd65 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/https/HttpsTransportBrokerTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/https/HttpsTransportBrokerTest.java
@@ -25,7 +25,7 @@ public class HttpsTransportBrokerTest extends 
HttpTransportBrokerTest {
 
     @Override
     protected String getBindLocation() {
-        return "https://localhost:8161";;
+        return "https://localhost:0";;
     }
 
     @Override
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSTransportTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSTransportTest.java
index f0a9ac9acc..f519f6ecf8 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSTransportTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSTransportTest.java
@@ -40,7 +40,7 @@ public class MQTTWSSTransportTest extends MQTTWSTransportTest 
{
 
     @Override
     protected String getWSConnectorURI() {
-        return "wss://localhost:61623";
+        return "wss://localhost:0";
     }
 
 }
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java
index 671f77f64f..9c524c4d3e 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java
@@ -73,6 +73,7 @@ public class MQTTWSTransportTest extends 
WSTransportTestSupport {
 
         SslContextFactory.Client sslContextFactory = new 
SslContextFactory.Client();
         sslContextFactory.setTrustAll(true);
+        sslContextFactory.setEndpointIdentificationAlgorithm(null);
         ClientConnector clientConnector = new ClientConnector();
         clientConnector.setSslContextFactory(sslContextFactory);
 
@@ -97,6 +98,9 @@ public class MQTTWSTransportTest extends 
WSTransportTestSupport {
         if (wsMQTTConnection != null) {
             wsMQTTConnection.close();
             wsMQTTConnection = null;
+        }
+        if (wsClient != null) {
+            wsClient.stop();
             wsClient = null;
         }
 
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSTransportTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSTransportTest.java
index a00eac1a5d..89f8bfaf4a 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSTransportTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSTransportTest.java
@@ -20,7 +20,7 @@ public class StompWSSTransportTest extends 
StompWSTransportTest {
 
     @Override
     protected String getWSConnectorURI() {
-        return "wss://localhost:61623";
+        return "wss://localhost:0";
     }
 
 }
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportHttpTraceTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportHttpTraceTest.java
index 64392b15a9..7a39d6cb87 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportHttpTraceTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportHttpTraceTest.java
@@ -43,7 +43,7 @@ public class WSTransportHttpTraceTest extends 
WSTransportTestSupport {
 
     @Override
     protected String getWSConnectorURI() {
-        String uri = 
"ws://127.0.0.1:61623?websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
+        String uri = 
"ws://127.0.0.1:0?websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
         uri = enableTraceParam != null ? uri + "&" + enableTraceParam : uri;
         return uri;
     }
@@ -54,7 +54,8 @@ public class WSTransportHttpTraceTest extends 
WSTransportTestSupport {
      */
     @Test(timeout=10000)
     public void testHttpTraceEnabled() throws Exception {
-        HttpTraceTestSupport.testHttpTraceEnabled("http://127.0.0.1:61623";, 
expectedStatus, null);
+        HttpTraceTestSupport.testHttpTraceEnabled("http://127.0.0.1:"; + 
wsConnectUri.getPort(),
+                expectedStatus, null);
     }
 
 }
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportLinkStealingTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportLinkStealingTest.java
index 2ca03c86d7..096b87bea1 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportLinkStealingTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportLinkStealingTest.java
@@ -20,6 +20,7 @@ package org.apache.activemq.transport.ws;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.IOException;
 import java.net.URI;
 
 import org.apache.activemq.broker.BrokerFactory;
@@ -37,7 +38,6 @@ public class WSTransportLinkStealingTest {
     private static final Logger LOG = 
LoggerFactory.getLogger(WSTransportLinkStealingTest.class);
 
     private BrokerService broker;
-
     protected BrokerService createBroker(boolean deleteMessages) throws 
Exception {
         BrokerService broker = BrokerFactory.createBroker(
                 new URI("broker:()/localhost?persistent=false&useJmx=false"));
@@ -59,7 +59,8 @@ public class WSTransportLinkStealingTest {
     }
 
     protected String getWSConnectorURI() {
-        return 
"ws://127.0.0.1:61623?allowLinkStealing=true&websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
+        return "ws://127.0.0.1:0" +
+               
"?allowLinkStealing=true&websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
     }
 
     protected void stopBroker() {
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java
index 9ea1cbbbfb..d0e2d3bccc 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java
@@ -58,8 +58,6 @@ public class WSTransportTest extends WSTransportTestSupport {
     private String stompUri;
     private StompConnection stompConnection = new StompConnection();
 
-    protected final int port = 61623;
-
     @Override
     protected void addAdditionalConnectors(BrokerService service) throws 
Exception {
         stompUri = 
service.addConnector("stomp://localhost:0").getPublishableConnectString();
@@ -67,7 +65,7 @@ public class WSTransportTest extends WSTransportTestSupport {
 
     @Override
     protected String getWSConnectorURI() {
-        return "ws://127.0.0.1:" + port + 
"?websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
+        return 
"ws://127.0.0.1:0?websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
     }
 
     protected Server createWebServer() throws Exception {
@@ -138,7 +136,7 @@ public class WSTransportTest extends WSTransportTestSupport 
{
 
     @Test(timeout=10000)
     public void testGet() throws Exception {
-        testGet("http://127.0.0.1:"; + port, null);
+        testGet("http://127.0.0.1:"; + wsConnectUri.getPort(), null);
     }
 
 
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTestSupport.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTestSupport.java
index 8c4a2c7684..7a3c3933b9 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTestSupport.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTestSupport.java
@@ -17,14 +17,14 @@
 package org.apache.activemq.transport.ws;
 
 import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.URI;
 
 import jakarta.jms.JMSException;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
-import javax.net.ServerSocketFactory;
-
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.broker.jmx.BrokerViewMBean;
 import org.apache.activemq.broker.jmx.QueueViewMBean;
@@ -70,11 +70,14 @@ public class WSTransportTestSupport {
     }
 
     protected String getWSConnectionURI() {
+        if (wsConnectUri != null) {
+            return wsConnectUri.toString();
+        }
         return "ws://127.0.0.1:" + getProxyPort();
     }
 
     protected String getWSConnectorURI() {
-        return "ws://127.0.0.1:" + getProxyPort() +
+        return "ws://127.0.0.1:0" +
                "?allowLinkStealing=" + isAllowLinkStealing() +
                "&websocket.maxTextMessageSize=99999" +
                "&transport.idleTimeout=1001" +
@@ -101,7 +104,8 @@ public class WSTransportTestSupport {
         context.afterPropertiesSet();
         broker.setSslContext(context);
 
-        wsConnectUri = 
broker.addConnector(getWSConnectorURI()).getPublishableConnectURI();
+        org.apache.activemq.broker.TransportConnector wsConnector =
+                broker.addConnector(getWSConnectorURI());
 
         broker.setAdvisorySupport(advisorySupport);
         broker.setUseJmx(true);
@@ -113,6 +117,8 @@ public class WSTransportTestSupport {
 
         addAdditionalConnectors(broker);
 
+        wsConnectUri = wsConnector.getPublishableConnectURI();
+
         return broker;
     }
 
@@ -126,18 +132,12 @@ public class WSTransportTestSupport {
 
     protected int getProxyPort() {
         if (proxyPort == 0) {
-            ServerSocket ss = null;
-            try {
-                ss = ServerSocketFactory.getDefault().createServerSocket(0);
+            try (ServerSocket ss = new ServerSocket()) {
+                ss.setReuseAddress(true);
+                ss.bind(new 
InetSocketAddress(InetAddress.getByName("127.0.0.1"), 0));
                 proxyPort = ss.getLocalPort();
-            } catch (IOException e) { // ignore
-            } finally {
-                try {
-                    if (ss != null ) {
-                        ss.close();
-                    }
-                } catch (IOException e) { // ignore
-                }
+            } catch (IOException e) {
+                throw new IllegalStateException("Could not find a free TCP/IP 
port for WS tests", e);
             }
         }
 
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java
index c3f2599b1e..e160047790 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java
@@ -44,12 +44,13 @@ public class WSSTransportHttpTraceTest extends 
WSTransportHttpTraceTest {
         factory.setEndpointIdentificationAlgorithm(null);       // service 
cert does not contain a SAN
         factory.setSslContext(broker.getSslContext().getSSLContext());
 
-        HttpTraceTestSupport.testHttpTraceEnabled("https://127.0.0.1:61623";, 
expectedStatus, factory);
+        HttpTraceTestSupport.testHttpTraceEnabled("https://localhost:"; + 
wsConnectUri.getPort(),
+                expectedStatus, factory);
     }
 
     @Override
     protected String getWSConnectorURI() {
-        String uri = 
"wss://127.0.0.1:61623?websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
+        String uri = 
"wss://localhost:0?websocket.maxTextMessageSize=99999&transport.maxIdleTime=1001";
         uri = enableTraceParam != null ? uri + "&" + enableTraceParam : uri;
         return uri;
     }
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportLinkStealingTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportLinkStealingTest.java
index dfa9a79247..0cc532beb5 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportLinkStealingTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportLinkStealingTest.java
@@ -22,6 +22,6 @@ public class WSSTransportLinkStealingTest extends 
WSTransportLinkStealingTest {
 
     @Override
     protected String getWSConnectorURI() {
-        return "wss://localhost:61623?allowLinkStealing=true";
+        return "wss://localhost:0?allowLinkStealing=true";
     }
 }
diff --git 
a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportTest.java
 
b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportTest.java
index c93886c61e..2387802016 100644
--- 
a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportTest.java
+++ 
b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportTest.java
@@ -41,7 +41,7 @@ public class WSSTransportTest extends WSTransportTest {
 
     @Override
     protected String getWSConnectorURI() {
-        return "wss://localhost:" + port;
+        return "wss://localhost:0";
     }
 
     @Ignore
@@ -52,12 +52,12 @@ public class WSSTransportTest extends WSTransportTest {
         factory.setEndpointIdentificationAlgorithm(null);       // service 
cert does not contain a SAN
         factory.setSslContext(broker.getSslContext().getSSLContext());
 
-        testGet("https://127.0.0.1:"; + port, factory);
+        testGet("https://127.0.0.1:"; + wsConnectUri.getPort(), factory);
     }
 
     @Override
     protected String getTestURI() {
         int proxyPort = getProxyPort();
-        return "https://localhost:"; + proxyPort + 
"/websocket.html#wss://localhost:" + port;
+        return "https://localhost:"; + proxyPort + "/websocket.html#" + 
wsConnectUri;
     }
 }
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java
index b9a9ec991e..0e4242a0da 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java
@@ -86,6 +86,7 @@ public class BrokerTestSupport extends CombinationTestSupport 
{
         policyMap.setDefaultEntry(getDefaultPolicy());
         broker.setDestinationPolicy(policyMap);
         broker.start();
+        broker.waitUntilStarted();
     }
 
     protected PolicyEntry getDefaultPolicy() {
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/TransportBrokerTestSupport.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/TransportBrokerTestSupport.java
index 8c19ea88b8..59ca6a04c0 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/TransportBrokerTestSupport.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/TransportBrokerTestSupport.java
@@ -30,10 +30,12 @@ public abstract class TransportBrokerTestSupport extends 
BrokerTest {
 
     protected TransportConnector connector;
     private ArrayList<StubConnection> connections = new 
ArrayList<StubConnection>();
+    private URI bindURI;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        bindURI = connector.getPublishableConnectURI();
     }
 
     @Override
@@ -68,7 +70,7 @@ public abstract class TransportBrokerTestSupport extends 
BrokerTest {
     }
 
     protected URI getBindURI() throws URISyntaxException {
-        return new URI(getBindLocation());
+        return bindURI;
     }
 
     @Override
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoNIOSslTransportBrokerTest.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoNIOSslTransportBrokerTest.java
index cb90b415c3..1758f6501b 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoNIOSslTransportBrokerTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoNIOSslTransportBrokerTest.java
@@ -38,7 +38,7 @@ public class AutoNIOSslTransportBrokerTest extends 
TransportBrokerTestSupport {
 
     @Override
     protected URI getBindURI() throws URISyntaxException {
-        return new URI("auto+nio+ssl://localhost:0?soWriteTimeout=20000");
+        return new URI(super.getBindURI().toString() + 
"?soWriteTimeout=20000");
     }
 
     @Override
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoSslTransportBrokerTest.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoSslTransportBrokerTest.java
index 203f6ee97a..603153921e 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoSslTransportBrokerTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/auto/AutoSslTransportBrokerTest.java
@@ -36,7 +36,7 @@ public class AutoSslTransportBrokerTest extends 
TransportBrokerTestSupport {
 
     @Override
     protected URI getBindURI() throws URISyntaxException {
-        return new URI("auto+ssl://localhost:0?soWriteTimeout=20000");
+        return new URI(super.getBindURI().toString() + 
"?soWriteTimeout=20000");
     }
 
     @Override
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLTransportBrokerTest.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLTransportBrokerTest.java
index 2d6d13ef19..1d7a3a7b05 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLTransportBrokerTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLTransportBrokerTest.java
@@ -36,7 +36,7 @@ public class NIOSSLTransportBrokerTest extends 
TransportBrokerTestSupport {
 
     @Override
     protected URI getBindURI() throws URISyntaxException {
-        return new URI("nio+ssl://localhost:0?soWriteTimeout=20000");
+        return new URI(super.getBindURI().toString() + 
"?soWriteTimeout=20000");
     }
 
     @Override
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/tcp/SslTransportBrokerTest.java
 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/tcp/SslTransportBrokerTest.java
index 33f44e85e0..6913a8f952 100644
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/tcp/SslTransportBrokerTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/tcp/SslTransportBrokerTest.java
@@ -35,7 +35,7 @@ public class SslTransportBrokerTest extends 
TransportBrokerTestSupport {
 
     @Override
     protected URI getBindURI() throws URISyntaxException {
-        return new URI("ssl://localhost:0?soWriteTimeout=20000");
+        return new URI(super.getBindURI().toString() + 
"?soWriteTimeout=20000");
     }
 
     protected void setUp() throws Exception {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to