From 50a8f64b58646678c8b91adc424b9fd762747f05 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Wed, 6 May 2026 07:26:21 +0200 Subject: [PATCH 1/2] CAMEL-22525: Fix flaky AS2 tests by eliminating port allocation race condition Eliminate the TOCTOU race between AvailablePortFinder probing a port (open/close ServerSocket) and AS2ServerConnection binding to it. Instead, bind to port 0 so the OS assigns a free port atomically, then read the actual port via the new getLocalPort() method. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../as2/api/AS2AsyncMDNServerConnection.java | 4 ++++ .../component/as2/api/AS2ServerConnection.java | 4 ++++ .../as2/api/AS2AsyncMDNServerConnectionTest.java | 10 ++++------ .../camel/component/as2/api/AS2MessageTest.java | 4 +++- .../camel/component/as2/api/AS2MessageTestBase.java | 13 +++++-------- .../as2/api/AS2UnencryptedMessageTest.java | 4 +++- .../as2/AS2AsyncMdnBasicAuthHeaderTest.java | 8 ++++---- .../as2/AS2AsyncMdnTokenAuthHeaderTest.java | 8 ++++---- .../camel/component/as2/AS2BasicAuthHeaderTest.java | 10 ++++------ .../camel/component/as2/AS2TokenAuthHeaderTest.java | 10 ++++------ 10 files changed, 39 insertions(+), 36 deletions(-) diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java index fdb5c2d4d3a24..731ca3d4d1c0d 100644 --- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java +++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java @@ -72,6 +72,10 @@ public AS2AsyncMDNServerConnection(Integer portNumber, SSLContext sslContext) listenerThread.start(); } + public int getLocalPort() { + return listenerThread != null ? listenerThread.serverSocket.getLocalPort() : -1; + } + public void close() { if (listenerThread != null) { lock.lock(); diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java index 3093ca39a6746..ac0d565f329d3 100644 --- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java +++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java @@ -639,6 +639,10 @@ public void registerConsumerConfiguration(String path, AS2ConsumerConfiguration consumerConfigurations.put(path, config); } + public int getLocalPort() { + return serversocket != null ? serversocket.getLocalPort() : -1; + } + public void close() { if (acceptorThread != null) { lock.lock(); diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java index b8b7bbd1b9b43..f8c7eb5dddddb 100644 --- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java +++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java @@ -19,7 +19,6 @@ import java.net.HttpURLConnection; import java.net.URL; -import org.apache.camel.test.AvailablePortFinder; import org.apache.hc.core5.http.ClassicHttpRequest; import org.apache.hc.core5.http.ClassicHttpResponse; import org.apache.hc.core5.http.HttpException; @@ -28,19 +27,18 @@ 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.*; class AS2AsyncMDNServerConnectionTest { - @RegisterExtension - AvailablePortFinder.Port port = AvailablePortFinder.find(); private AS2AsyncMDNServerConnection connection; + private int port; @BeforeEach void setUp() throws Exception { - connection = new AS2AsyncMDNServerConnection(port.getPort(), null); + connection = new AS2AsyncMDNServerConnection(0, null); + port = connection.getLocalPort(); } @AfterEach @@ -69,7 +67,7 @@ public void handle(ClassicHttpRequest request, ClassicHttpResponse response, Htt // Send a request with a Host header that doesn't match the server's hostname // This previously caused HTTP 421 due to RequestValidateHost HttpURLConnection conn - = (HttpURLConnection) new URL("http://localhost:" + port.getPort() + "/test-mdn").openConnection(); + = (HttpURLConnection) new URL("http://localhost:" + port + "/test-mdn").openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Host", "different-host.example.com"); conn.setDoOutput(true); diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java index 4d4d80c56f335..46a4d7fe3fe88 100644 --- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java +++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java @@ -85,9 +85,11 @@ public static void setUpOnce() throws Exception { setupKeysAndCertificates(); testServer = new AS2ServerConnection( - AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, TARGET_PORT.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA, + AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, 0, AS2SignatureAlgorithm.SHA256WITHRSA, certList.toArray(new Certificate[0]), signingKP.getPrivate(), decryptingKP.getPrivate(), MDN_MESSAGE_TEMPLATE, VALIDATE_SIGNING_CERTIFICATE_CHAIN, null, null, null, null); + TARGET_PORT = testServer.getLocalPort(); + RECIPIENT_DELIVERY_ADDRESS = "http://localhost:" + TARGET_PORT + "/handle-receipts"; testServer.listen("*", new HttpRequestHandler() { @Override public void handle(ClassicHttpRequest request, ClassicHttpResponse response, HttpContext context) diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java index c61beded20bc3..4bd2b4d595cd0 100644 --- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java +++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java @@ -43,12 +43,10 @@ import com.helger.mail.cte.EContentTransferEncoding; import com.helger.security.keystore.EKeyStoreType; import org.apache.camel.component.as2.api.entity.ApplicationEntity; -import org.apache.camel.test.AvailablePortFinder; import org.apache.hc.core5.http.protocol.HttpDateGenerator; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.extension.RegisterExtension; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -86,14 +84,13 @@ public class AS2MessageTestBase { protected static final String METHOD = "POST"; protected static final String TARGET_HOST = "localhost"; - @RegisterExtension - protected static AvailablePortFinder.Port TARGET_PORT = AvailablePortFinder.find(); + protected static int TARGET_PORT; protected static final Duration HTTP_SOCKET_TIMEOUT = Duration.ofSeconds(5); protected static final Duration HTTP_CONNECTION_TIMEOUT = Duration.ofSeconds(5); protected static final Integer HTTP_CONNECTION_POOL_SIZE = 5; protected static final Duration HTTP_CONNECTION_POOL_TTL = Duration.ofMinutes(15); protected static final Certificate[] VALIDATE_SIGNING_CERTIFICATE_CHAIN = null; - protected static final String RECIPIENT_DELIVERY_ADDRESS = "http://localhost:" + TARGET_PORT.getPort() + "/handle-receipts"; + protected static String RECIPIENT_DELIVERY_ADDRESS; protected static final String AS2_VERSION = "1.1"; protected static final String USER_AGENT = "Camel AS2 Endpoint"; protected static final String REQUEST_URI = "/"; @@ -174,7 +171,7 @@ protected void binaryContentTransferEncodingTest(boolean encrypt, boolean sign, aSettings.setSenderData(AS2_NAME, FROM, "openas2a_alias"); // Fixed receiver - aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + TARGET_PORT.getPort() + "/"); + aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + TARGET_PORT + "/"); aSettings.setReceiverCertificate(issueCert); // AS2 stuff @@ -220,7 +217,7 @@ protected void compressionSignatureOrderTest(boolean encrypt, boolean compressBe aSettings.setSenderData(AS2_NAME, FROM, "openas2a_alias"); // Fixed receiver - aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + TARGET_PORT.getPort() + "/"); + aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + TARGET_PORT + "/"); aSettings.setReceiverCertificate(issueCert); // AS2 stuff @@ -255,7 +252,7 @@ protected void compressionSignatureOrderTest(boolean encrypt, boolean compressBe protected AS2ClientManager createDefaultClientManager() throws IOException { AS2ClientConnection clientConnection = new AS2ClientConnection( AS2_VERSION, USER_AGENT, CLIENT_FQDN, - TARGET_HOST, TARGET_PORT.getPort(), HTTP_SOCKET_TIMEOUT, HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, + TARGET_HOST, TARGET_PORT, HTTP_SOCKET_TIMEOUT, HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, HTTP_CONNECTION_POOL_TTL, null, null); return new AS2ClientManager(clientConnection); } diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java index 544d8cea97c5c..726664843bc30 100644 --- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java +++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java @@ -60,9 +60,11 @@ public static void setUpOnce() throws Exception { setupKeysAndCertificates(); testServer = new AS2ServerConnection( - AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, TARGET_PORT.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA, + AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, 0, AS2SignatureAlgorithm.SHA256WITHRSA, certList.toArray(new Certificate[0]), signingKP.getPrivate(), null, MDN_MESSAGE_TEMPLATE, null, null, null, null, null); + TARGET_PORT = testServer.getLocalPort(); + RECIPIENT_DELIVERY_ADDRESS = "http://localhost:" + TARGET_PORT + "/handle-receipts"; testServer.listen("*", new HttpRequestHandler() { @Override public void handle(ClassicHttpRequest request, ClassicHttpResponse response, HttpContext context) diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java index 65039ae96552a..69faa09e695b1 100644 --- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java +++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java @@ -53,8 +53,6 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends AbstractAS2ITSupport { private static final String MDN_PASSWORD = "rider"; private static final String MDN_ACCESS_TOKEN = "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"; @RegisterExtension - AvailablePortFinder.Port targetPort = AvailablePortFinder.find(); - @RegisterExtension AvailablePortFinder.Port receiptServerPort = AvailablePortFinder.find(); @RegisterExtension AvailablePortFinder.Port jettyPort = AvailablePortFinder.find(); @@ -88,6 +86,7 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends AbstractAS2ITSupport { """; private AS2ServerConnection serverConnection; + private int targetPort; @Override public void setupResources() throws Exception { @@ -186,18 +185,19 @@ public void configure() { @Override protected void customizeConfiguration(AS2Configuration configuration) { - configuration.setTargetPortNumber(targetPort.getPort()); + configuration.setTargetPortNumber(targetPort); } // AS2 server adds Authorization header to MDN returned asynchronously private void receiveTestMessages() throws IOException { serverConnection = new AS2ServerConnection( "1.1", "AS2ClientManagerIntegrationTest Server", - "server.example.com", targetPort.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA, + "server.example.com", 0, AS2SignatureAlgorithm.SHA256WITHRSA, null, null, null, "TBD", null, null, // server authorization config MDN_USER_NAME, MDN_PASSWORD, MDN_ACCESS_TOKEN); + targetPort = serverConnection.getLocalPort(); serverConnection.listen("/", new AS2AsyncMDNServerManagerIT.RequestHandler()); } } diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java index 09a6971972dc6..9c8c6da0017ef 100644 --- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java +++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java @@ -43,8 +43,6 @@ public class AS2AsyncMdnTokenAuthHeaderTest extends AbstractAS2ITSupport { private static final String MDN_ACCESS_TOKEN = "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"; @RegisterExtension - AvailablePortFinder.Port targetPort = AvailablePortFinder.find(); - @RegisterExtension AvailablePortFinder.Port receiptServerPort = AvailablePortFinder.find(); private static final String EDI_MESSAGE = """ UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778' @@ -76,6 +74,7 @@ public class AS2AsyncMdnTokenAuthHeaderTest extends AbstractAS2ITSupport { """; private AS2ServerConnection serverConnection; + private int targetPort; @Override public void setupResources() throws Exception { @@ -137,18 +136,19 @@ public void configure() { @Override protected void customizeConfiguration(AS2Configuration configuration) { - configuration.setTargetPortNumber(targetPort.getPort()); + configuration.setTargetPortNumber(targetPort); } // AS2 server adds Authorization header to MDN returned asynchronously private void receiveTestMessages() throws IOException { serverConnection = new AS2ServerConnection( "1.1", "AS2ClientManagerIntegrationTest Server", - "server.example.com", targetPort.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA, + "server.example.com", 0, AS2SignatureAlgorithm.SHA256WITHRSA, null, null, null, "TBD", null, null, // server authorization config null, null, MDN_ACCESS_TOKEN); + targetPort = serverConnection.getLocalPort(); serverConnection.listen("/", new AS2AsyncMDNServerManagerIT.RequestHandler()); } } diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java index 05ebf3b219544..1082a118306b3 100644 --- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java +++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java @@ -27,13 +27,11 @@ import org.apache.camel.component.as2.api.entity.ApplicationEntity; import org.apache.camel.component.as2.api.entity.DispositionNotificationMultipartReportEntity; import org.apache.camel.component.as2.api.entity.MimeEntity; -import org.apache.camel.test.AvailablePortFinder; import org.apache.hc.core5.http.ClassicHttpRequest; import org.apache.hc.core5.http.ContentType; import org.apache.hc.core5.http.HttpEntity; import org.apache.hc.core5.http.HttpRequest; 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.assertInstanceOf; @@ -44,8 +42,6 @@ */ public class AS2BasicAuthHeaderTest extends AbstractAS2ITSupport { - @RegisterExtension - AvailablePortFinder.Port targetPort = AvailablePortFinder.find(); // Basic Auth takes precedence when auth token also provided private static final String USER_NAME = "camel"; private static final String PASSWORD = "rider"; @@ -80,6 +76,7 @@ public class AS2BasicAuthHeaderTest extends AbstractAS2ITSupport { """; private AS2ServerConnection serverConnection; + private int targetPort; private AS2ClientManagerIT.RequestHandler requestHandler; @Override @@ -193,15 +190,16 @@ public void configure() { @Override protected void customizeConfiguration(AS2Configuration configuration) { - configuration.setTargetPortNumber(targetPort.getPort()); + configuration.setTargetPortNumber(targetPort); } private void receiveTestMessages() throws IOException { serverConnection = new AS2ServerConnection( "1.1", "AS2ClientManagerIntegrationTest Server", - "server.example.com", targetPort.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA, + "server.example.com", 0, AS2SignatureAlgorithm.SHA256WITHRSA, null, null, null, "TBD", null, null, null, null, null); + targetPort = serverConnection.getLocalPort(); requestHandler = new AS2ClientManagerIT.RequestHandler(); serverConnection.listen("/", requestHandler); } diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java index 4a599ba40faca..6ee9ca062ce14 100644 --- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java +++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java @@ -25,10 +25,8 @@ import org.apache.camel.component.as2.api.AS2MessageStructure; import org.apache.camel.component.as2.api.AS2ServerConnection; import org.apache.camel.component.as2.api.AS2SignatureAlgorithm; -import org.apache.camel.test.AvailablePortFinder; import org.apache.hc.core5.http.HttpRequest; 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; @@ -38,8 +36,6 @@ */ public class AS2TokenAuthHeaderTest extends AbstractAS2ITSupport { - @RegisterExtension - AvailablePortFinder.Port targetPort = AvailablePortFinder.find(); private static final String ACCESS_TOKEN = "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"; private static final String EDI_MESSAGE = """ UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778' @@ -71,6 +67,7 @@ public class AS2TokenAuthHeaderTest extends AbstractAS2ITSupport { """; private AS2ServerConnection serverConnection; + private int targetPort; private AS2ClientManagerIT.RequestHandler requestHandler; @Override @@ -139,15 +136,16 @@ public void configure() { @Override protected void customizeConfiguration(AS2Configuration configuration) { - configuration.setTargetPortNumber(targetPort.getPort()); + configuration.setTargetPortNumber(targetPort); } private void receiveTestMessages() throws IOException { serverConnection = new AS2ServerConnection( "1.1", "AS2ClientManagerIntegrationTest Server", - "server.example.com", targetPort.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA, + "server.example.com", 0, AS2SignatureAlgorithm.SHA256WITHRSA, null, null, null, "TBD", null, null, null, null, null); + targetPort = serverConnection.getLocalPort(); requestHandler = new AS2ClientManagerIT.RequestHandler(); serverConnection.listen("/", requestHandler); } From 7413a4ae0e6a6ec0895866df160371c98b5e6c1d Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Wed, 6 May 2026 10:32:06 +0200 Subject: [PATCH 2/2] CAMEL-22525: Rename non-final static fields to camelCase Rename TARGET_PORT and RECIPIENT_DELIVERY_ADDRESS to camelCase since they are no longer final constants. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../component/as2/api/AS2MessageTest.java | 20 +++++++++---------- .../component/as2/api/AS2MessageTestBase.java | 10 +++++----- .../as2/api/AS2UnencryptedMessageTest.java | 8 ++++---- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java index 46a4d7fe3fe88..b1b665cae0739 100644 --- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java +++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java @@ -88,8 +88,8 @@ public static void setUpOnce() throws Exception { AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, 0, AS2SignatureAlgorithm.SHA256WITHRSA, certList.toArray(new Certificate[0]), signingKP.getPrivate(), decryptingKP.getPrivate(), MDN_MESSAGE_TEMPLATE, VALIDATE_SIGNING_CERTIFICATE_CHAIN, null, null, null, null); - TARGET_PORT = testServer.getLocalPort(); - RECIPIENT_DELIVERY_ADDRESS = "http://localhost:" + TARGET_PORT + "/handle-receipts"; + targetPort = testServer.getLocalPort(); + recipientDeliveryAddress = "http://localhost:" + targetPort + "/handle-receipts"; testServer.listen("*", new HttpRequestHandler() { @Override public void handle(ClassicHttpRequest request, ClassicHttpResponse response, HttpContext context) @@ -137,7 +137,7 @@ public void multipartSignedMessageRequestTest() throws Exception { assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing"); @@ -206,7 +206,7 @@ public void envelopedMessageTest(AS2EncryptionAlgorithm encryptionAlgorithm) thr assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing"); @@ -264,7 +264,7 @@ public void envelopedAndSignedMessageTest(AS2EncryptionAlgorithm encryptionAlgor assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); @@ -377,7 +377,7 @@ public void asynchronousMdnMessageTest() throws Exception { null, "Got ya message!", null); // Send MDN - HttpCoreContext httpContext = mdnManager.send(mdn, mdn.getMainMessageContentType(), RECIPIENT_DELIVERY_ADDRESS); + HttpCoreContext httpContext = mdnManager.send(mdn, mdn.getMainMessageContentType(), recipientDeliveryAddress); HttpRequest mndRequest = httpContext.getRequest(); Arrays.stream(request.getHeaders(AS2Header.CONTENT_DISPOSITION)).forEach(h -> LOG.debug("{}", h)); DispositionNotificationMultipartReportEntity reportEntity @@ -442,7 +442,7 @@ private void signedAndCompressedMessage(Object msg) throws Exception { assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing"); @@ -516,7 +516,7 @@ private void envelopedAndCompressedMessage(Object msg) throws Exception { assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing"); @@ -670,7 +670,7 @@ private void envelopedCompressedAndSignedMessage(Object msg) throws Exception { assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing"); @@ -737,7 +737,7 @@ private void verifyRequest(HttpRequest request) throws URISyntaxException { assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing"); diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java index 4bd2b4d595cd0..493488aa0d549 100644 --- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java +++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java @@ -84,13 +84,13 @@ public class AS2MessageTestBase { protected static final String METHOD = "POST"; protected static final String TARGET_HOST = "localhost"; - protected static int TARGET_PORT; + protected static int targetPort; protected static final Duration HTTP_SOCKET_TIMEOUT = Duration.ofSeconds(5); protected static final Duration HTTP_CONNECTION_TIMEOUT = Duration.ofSeconds(5); protected static final Integer HTTP_CONNECTION_POOL_SIZE = 5; protected static final Duration HTTP_CONNECTION_POOL_TTL = Duration.ofMinutes(15); protected static final Certificate[] VALIDATE_SIGNING_CERTIFICATE_CHAIN = null; - protected static String RECIPIENT_DELIVERY_ADDRESS; + protected static String recipientDeliveryAddress; protected static final String AS2_VERSION = "1.1"; protected static final String USER_AGENT = "Camel AS2 Endpoint"; protected static final String REQUEST_URI = "/"; @@ -171,7 +171,7 @@ protected void binaryContentTransferEncodingTest(boolean encrypt, boolean sign, aSettings.setSenderData(AS2_NAME, FROM, "openas2a_alias"); // Fixed receiver - aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + TARGET_PORT + "/"); + aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + targetPort + "/"); aSettings.setReceiverCertificate(issueCert); // AS2 stuff @@ -217,7 +217,7 @@ protected void compressionSignatureOrderTest(boolean encrypt, boolean compressBe aSettings.setSenderData(AS2_NAME, FROM, "openas2a_alias"); // Fixed receiver - aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + TARGET_PORT + "/"); + aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://" + TARGET_HOST + ":" + targetPort + "/"); aSettings.setReceiverCertificate(issueCert); // AS2 stuff @@ -252,7 +252,7 @@ protected void compressionSignatureOrderTest(boolean encrypt, boolean compressBe protected AS2ClientManager createDefaultClientManager() throws IOException { AS2ClientConnection clientConnection = new AS2ClientConnection( AS2_VERSION, USER_AGENT, CLIENT_FQDN, - TARGET_HOST, TARGET_PORT, HTTP_SOCKET_TIMEOUT, HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, + TARGET_HOST, targetPort, HTTP_SOCKET_TIMEOUT, HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, HTTP_CONNECTION_POOL_TTL, null, null); return new AS2ClientManager(clientConnection); } diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java index 726664843bc30..5dcaf3192c66a 100644 --- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java +++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java @@ -63,8 +63,8 @@ public static void setUpOnce() throws Exception { AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, 0, AS2SignatureAlgorithm.SHA256WITHRSA, certList.toArray(new Certificate[0]), signingKP.getPrivate(), null, MDN_MESSAGE_TEMPLATE, null, null, null, null, null); - TARGET_PORT = testServer.getLocalPort(); - RECIPIENT_DELIVERY_ADDRESS = "http://localhost:" + TARGET_PORT + "/handle-receipts"; + targetPort = testServer.getLocalPort(); + recipientDeliveryAddress = "http://localhost:" + targetPort + "/handle-receipts"; testServer.listen("*", new HttpRequestHandler() { @Override public void handle(ClassicHttpRequest request, ClassicHttpResponse response, HttpContext context) @@ -104,7 +104,7 @@ public void plainEDIMessageRequestTest() throws Exception { assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing"); @@ -146,7 +146,7 @@ public void compressedMessageRequestTest() throws Exception { assertEquals(AS2_NAME, request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value"); assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN + ">"), "Unexpected message id value"); - assertEquals(TARGET_HOST + ":" + TARGET_PORT, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), + assertEquals(TARGET_HOST + ":" + targetPort, request.getFirstHeader(AS2Header.TARGET_HOST).getValue(), "Unexpected target host value"); assertEquals(USER_AGENT, request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent value"); assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value missing");