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

orpiske 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 fbadfa58d37 (chores) tests: check port availability before running CXF 
tests
fbadfa58d37 is described below

commit fbadfa58d3746ce0e900de54ffb732fe316f69a3
Author: Otavio Rodolfo Piske <angusyo...@gmail.com>
AuthorDate: Wed Sep 14 14:11:30 2022 +0200

    (chores) tests: check port availability before running CXF tests
    
    Should prevent false negatives on hosts where the required port is not 
available
---
 .../org/apache/camel/test/AvailablePortFinder.java     | 18 ++++++++++++++++--
 .../itest/security/GreeterClientCxfMessageTest.java    |  3 +++
 .../apache/camel/itest/security/GreeterClientTest.java | 15 +++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)

diff --git 
a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
 
b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
index fe11bc15d37..d1d5a106c79 100644
--- 
a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
+++ 
b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
@@ -181,10 +181,24 @@ public final class AvailablePortFinder {
      * @return                       the port number itself if the port is 
free or, in case of port 0, the first
      *                               available port number.
      */
-    private static int probePort(int port) {
+    public static int probePort(int port) {
+        return probePort(null, port);
+    }
+
+    /**
+     * Probe a port to see if it is free
+     *
+     * @param  port                  an integer port number to be tested. If 
port is 0, then the next available port is
+     *                               returned.
+     * @throws IllegalStateException if the port is not free or, in case of 
port 0, if there are no ports available at
+     *                               all.
+     * @return                       the port number itself if the port is 
free or, in case of port 0, the first
+     *                               available port number.
+     */
+    public static int probePort(InetAddress address, int port) {
         try (ServerSocket ss = new ServerSocket()) {
             ss.setReuseAddress(true);
-            ss.bind(new InetSocketAddress((InetAddress) null, port), 1);
+            ss.bind(new InetSocketAddress(address, port), 1);
             int probedPort = ss.getLocalPort();
             LOG.info("Available port is -> {}", probedPort);
             return probedPort;
diff --git 
a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientCxfMessageTest.java
 
b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientCxfMessageTest.java
index 43d16dabd5b..d48fdd3c3f5 100644
--- 
a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientCxfMessageTest.java
+++ 
b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientCxfMessageTest.java
@@ -17,10 +17,13 @@
 package org.apache.camel.itest.security;
 
 import org.apache.camel.test.spring.junit5.CamelSpringTest;
+import org.junit.jupiter.api.condition.EnabledIf;
 import org.springframework.test.context.ContextConfiguration;
 
 @CamelSpringTest
 @ContextConfiguration(locations = { "CxfMessageCamelContext.xml" })
+@EnabledIf(value = 
"org.apache.camel.itest.security.GreeterClientTest#isPortAvailable",
+           disabledReason = "This test uses a fixed port that may not be 
available on certain hosts")
 public class GreeterClientCxfMessageTest extends GreeterClientTest {
 
 }
diff --git 
a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
 
b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
index 0ca6315a602..9da5c380f4e 100644
--- 
a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
+++ 
b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.itest.security;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -24,6 +26,7 @@ import javax.xml.ws.BindingProvider;
 import javax.xml.ws.soap.SOAPFaultException;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.spring.junit5.CamelSpringTest;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.frontend.ClientProxy;
@@ -32,6 +35,7 @@ import org.apache.hello_world_soap_http.Greeter;
 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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 
@@ -41,6 +45,8 @@ import static org.junit.jupiter.api.Assertions.fail;
 
 @CamelSpringTest
 @ContextConfiguration(locations = { "camel-context.xml" })
+@EnabledIf(value = 
"org.apache.camel.itest.security.GreeterClientTest#isPortAvailable",
+           disabledReason = "This test uses a fixed port that may not be 
available on certain hosts")
 public class GreeterClientTest {
     private static final java.net.URL WSDL_LOC;
     static {
@@ -120,4 +126,13 @@ public class GreeterClientTest {
         }
     }
 
+    public static boolean isPortAvailable() {
+        try {
+            AvailablePortFinder.probePort(InetAddress.getByName("localhost"), 
9000);
+        } catch (IllegalStateException | UnknownHostException e) {
+            return false;
+        }
+
+        return true;
+    }
 }

Reply via email to