This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch CAMEL-22527 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4a9d84e10b883ff6b76e9b537e0063ac580583e6 Author: Guillaume Nodet <[email protected]> AuthorDate: Thu Mar 19 09:45:11 2026 +0100 CAMEL-22527: Fix flaky JettyFailoverRoundRobinTest Replace static port allocation with @RegisterExtension AvailablePortFinder.Port and add proper port cleanup via @AfterEach to prevent port conflicts in CI. Co-Authored-By: Claude Opus 4.6 <[email protected]> --- .../jetty/JettyFailoverRoundRobinTest.java | 45 +++++++++++++--------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java index b668b8e57f06..9feaef9d3e69 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java @@ -21,24 +21,30 @@ 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.AfterEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import static org.junit.jupiter.api.Assertions.assertEquals; public class JettyFailoverRoundRobinTest extends CamelTestSupport { - private static int port1 = AvailablePortFinder.getNextAvailable(); - private static int port2 = AvailablePortFinder.getNextAvailable(); - private static int port3 = AvailablePortFinder.getNextAvailable(); - private static int port4 = AvailablePortFinder.getNextAvailable(); - - private String bad = "jetty:http://localhost:" + port1 + "/bad"; - private String bad2 = "jetty:http://localhost:" + port2 + "/bad2"; - private String good = "jetty:http://localhost:" + port3 + "/good"; - private String good2 = "jetty:http://localhost:" + port4 + "/good2"; - private String hbad = "http://localhost:" + port1 + "/bad"; - private String hbad2 = "http://localhost:" + port2 + "/bad2"; - private String hgood = "http://localhost:" + port3 + "/good"; - private String hgood2 = "http://localhost:" + port4 + "/good2"; + + @RegisterExtension + AvailablePortFinder.Port port1 = AvailablePortFinder.find(); + @RegisterExtension + AvailablePortFinder.Port port2 = AvailablePortFinder.find(); + @RegisterExtension + AvailablePortFinder.Port port3 = AvailablePortFinder.find(); + @RegisterExtension + AvailablePortFinder.Port port4 = AvailablePortFinder.find(); + + @AfterEach + void cleanupPorts() { + port1.release(); + port2.release(); + port3.release(); + port4.release(); + } @Test void testJettyFailoverRoundRobin() throws Exception { @@ -78,28 +84,31 @@ public class JettyFailoverRoundRobinTest extends CamelTestSupport { // -1 is to indicate that failover LB should newer exhaust and keep trying .loadBalance().failover(-1, false, true) // this is the four endpoints we will load balance with failover - .to(hbad, hbad2, hgood, hgood2); + .to("http://localhost:" + port1.getPort() + "/bad", + "http://localhost:" + port2.getPort() + "/bad2", + "http://localhost:" + port3.getPort() + "/good", + "http://localhost:" + port4.getPort() + "/good2"); // END SNIPPET: e1 - from(bad) + from("jetty:http://localhost:" + port1.getPort() + "/bad") .to("mock:bad") .process(exchange -> { exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 500); exchange.getIn().setBody("Something bad happened"); }); - from(bad2) + from("jetty:http://localhost:" + port2.getPort() + "/bad2") .to("mock:bad2") .process(exchange -> { exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 404); exchange.getIn().setBody("Not found"); }); - from(good) + from("jetty:http://localhost:" + port3.getPort() + "/good") .to("mock:good") .process(exchange -> exchange.getIn().setBody("Good")); - from(good2) + from("jetty:http://localhost:" + port4.getPort() + "/good2") .to("mock:good2") .process(exchange -> exchange.getIn().setBody("Also good")); }
