This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 7a6655d Make camel-netty-http tests run in parallel 7a6655d is described below commit 7a6655dcac9df593cb3509df5496b17eeb884670 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Tue Mar 23 17:38:05 2021 +0100 Make camel-netty-http tests run in parallel --- components/camel-netty-http/pom.xml | 22 +++++++++++++++++----- .../camel/component/netty/http/BaseNettyTest.java | 19 +++++-------------- .../netty/http/NettyHttpBridgeEncodedPathTest.java | 18 +++++++++--------- .../NettyHttpBridgeRouteUsingHttpClientTest.java | 10 +++++----- .../netty/http/NettyHttpProducerBridgeTest.java | 14 +++++++------- .../http/NettyHttpRedirectNoLocationTest.java | 7 ++++--- .../netty/http/NettyHttpTraceDisabledTest.java | 8 ++++++-- .../netty/http/NettyRouteSimpleDynamicURITest.java | 7 +++++-- .../component/netty/http/NettyRouteSimpleTest.java | 7 +++++-- .../org/apache/camel/test/AvailablePortFinder.java | 10 ++++++++++ 10 files changed, 73 insertions(+), 49 deletions(-) diff --git a/components/camel-netty-http/pom.xml b/components/camel-netty-http/pom.xml index 92232b2..5b70470 100644 --- a/components/camel-netty-http/pom.xml +++ b/components/camel-netty-http/pom.xml @@ -31,6 +31,11 @@ <name>Camel :: Netty HTTP</name> <description>Camel Netty HTTP support</description> + <properties> + <camel.surefire.parallel>true</camel.surefire.parallel> + <io.netty.leakDetection.level>DISABLED</io.netty.leakDetection.level> + </properties> + <dependencies> <dependency> <groupId>org.apache.camel</groupId> @@ -152,15 +157,22 @@ <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> - <forkCount>1</forkCount> - <reuseForks>false</reuseForks> - <forkedProcessTimeoutInSeconds>5000</forkedProcessTimeoutInSeconds> <systemPropertyVariables> - <!-- can use PARANOID for checking every access --> - <io.netty.leakDetection.level>ADVANCED</io.netty.leakDetection.level> + <io.netty.leakDetection.level>${io.netty.leakDetection.level}</io.netty.leakDetection.level> </systemPropertyVariables> </configuration> </plugin> </plugins> </build> + + <profiles> + <profile> + <id>leaks</id> + <properties> + <camel.surefire.parallel>false</camel.surefire.parallel> + <io.netty.leakDetection.level>PARANOID</io.netty.leakDetection.level> + </properties> + </profile> + </profiles> + </project> diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/BaseNettyTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/BaseNettyTest.java index d2b41c4..5cfa8d6 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/BaseNettyTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/BaseNettyTest.java @@ -20,7 +20,6 @@ import java.util.Collection; import java.util.Properties; import io.netty.buffer.ByteBufAllocator; -import io.netty.util.ResourceLeakDetector; import org.apache.camel.BindToRegistry; import org.apache.camel.CamelContext; import org.apache.camel.test.AvailablePortFinder; @@ -28,6 +27,7 @@ import org.apache.camel.test.junit5.CamelTestSupport; import org.apache.logging.log4j.core.LogEvent; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.extension.RegisterExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,19 +37,15 @@ import org.slf4j.LoggerFactory; public class BaseNettyTest extends CamelTestSupport { protected static final Logger LOG = LoggerFactory.getLogger(BaseNettyTest.class); - private static volatile int port; - - @BeforeAll - public static void initPort() throws Exception { - port = AvailablePortFinder.getNextAvailable(); - } + @RegisterExtension + AvailablePortFinder.Port port = AvailablePortFinder.find(); @BeforeAll public static void startLeakDetection() { System.setProperty("io.netty.leakDetection.maxRecords", "100"); System.setProperty("io.netty.leakDetection.acquireAndReleaseOnly", "true"); System.setProperty("io.netty.leakDetection.targetRecords", "100"); - ResourceLeakDetector.setLevel(ResourceLeakDetector.Level.PARANOID); + LogCaptureAppender.reset(); } @AfterAll @@ -86,13 +82,8 @@ public class BaseNettyTest extends CamelTestSupport { return prop; } - protected int getNextPort() { - port = AvailablePortFinder.getNextAvailable(); - return port; - } - protected int getPort() { - return port; + return port.getPort(); } } diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeEncodedPathTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeEncodedPathTest.java index 7d612e0..e26bb7f 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeEncodedPathTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeEncodedPathTest.java @@ -22,21 +22,26 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.AvailablePortFinder; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; 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.assertTrue; public class NettyHttpBridgeEncodedPathTest extends BaseNettyTest { - private int port1; - private int port2; - private int port3; - private int port4; + AvailablePortFinder.Port port1 = port; + @RegisterExtension + AvailablePortFinder.Port port2 = AvailablePortFinder.find(); + @RegisterExtension + AvailablePortFinder.Port port3 = AvailablePortFinder.find(); + @RegisterExtension + AvailablePortFinder.Port port4 = AvailablePortFinder.find(); @Test public void testEncodedQuery() throws Exception { @@ -69,11 +74,6 @@ public class NettyHttpBridgeEncodedPathTest extends BaseNettyTest { return new RouteBuilder() { public void configure() { - port1 = getPort(); - port2 = getNextPort(); - port3 = getNextPort(); - port4 = getNextPort(); - errorHandler(noErrorHandler()); Processor serviceProc = exchange -> { diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeRouteUsingHttpClientTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeRouteUsingHttpClientTest.java index 15283a1..3020ecc 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeRouteUsingHttpClientTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpBridgeRouteUsingHttpClientTest.java @@ -23,15 +23,18 @@ import org.apache.camel.Message; import org.apache.camel.Processor; import org.apache.camel.RuntimeCamelException; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.AvailablePortFinder; 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.assertThrows; public class NettyHttpBridgeRouteUsingHttpClientTest extends BaseNettyTest { - private int port1; - private int port2; + AvailablePortFinder.Port port1 = port; + @RegisterExtension + AvailablePortFinder.Port port2 = AvailablePortFinder.find(); @Test public void testBridge() throws Exception { @@ -57,9 +60,6 @@ public class NettyHttpBridgeRouteUsingHttpClientTest extends BaseNettyTest { protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { public void configure() { - port1 = getPort(); - port2 = getNextPort(); - errorHandler(noErrorHandler()); Processor serviceProc = exchange -> { diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpProducerBridgeTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpProducerBridgeTest.java index 23695cbb..b7e00e1 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpProducerBridgeTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpProducerBridgeTest.java @@ -20,15 +20,19 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.AvailablePortFinder; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import static org.junit.jupiter.api.Assertions.assertEquals; public class NettyHttpProducerBridgeTest extends BaseNettyTest { - private int port1; - private int port2; - private int port3; + AvailablePortFinder.Port port1 = port; + @RegisterExtension + AvailablePortFinder.Port port2 = AvailablePortFinder.find(); + @RegisterExtension + AvailablePortFinder.Port port3 = AvailablePortFinder.find(); @Test public void testProxy() throws Exception { @@ -74,10 +78,6 @@ public class NettyHttpProducerBridgeTest extends BaseNettyTest { return new RouteBuilder() { @Override public void configure() throws Exception { - port1 = getPort(); - port2 = getNextPort(); - port3 = getNextPort(); - from("netty-http:http://0.0.0.0:" + port1 + "/foo") .to("netty-http:http://localhost:" + port2 + "/bar?bridgeEndpoint=true&throwExceptionOnFailure=false"); diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpRedirectNoLocationTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpRedirectNoLocationTest.java index 6ba616c..f632f42 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpRedirectNoLocationTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpRedirectNoLocationTest.java @@ -19,7 +19,9 @@ package org.apache.camel.component.netty.http; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.AvailablePortFinder; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -30,7 +32,8 @@ import static org.junit.jupiter.api.Assertions.fail; public class NettyHttpRedirectNoLocationTest extends BaseNettyTest { - private int nextPort; + @RegisterExtension + AvailablePortFinder.Port nextPort = AvailablePortFinder.find(); @Test public void testHttpRedirectNoLocation() throws Exception { @@ -51,8 +54,6 @@ public class NettyHttpRedirectNoLocationTest extends BaseNettyTest { return new RouteBuilder() { @Override public void configure() throws Exception { - nextPort = getNextPort(); - from("netty-http:http://localhost:" + nextPort + "/test") .process(exchange -> exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, 302)); } diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpTraceDisabledTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpTraceDisabledTest.java index f038a58..8f233a6 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpTraceDisabledTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpTraceDisabledTest.java @@ -17,18 +17,22 @@ package org.apache.camel.component.netty.http; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.AvailablePortFinder; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpTrace; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import static org.junit.jupiter.api.Assertions.assertEquals; public class NettyHttpTraceDisabledTest extends BaseNettyTest { - private int portTraceOn = getNextPort(); - private int portTraceOff = getNextPort(); + @RegisterExtension + AvailablePortFinder.Port portTraceOn = AvailablePortFinder.find(); + @RegisterExtension + AvailablePortFinder.Port portTraceOff = AvailablePortFinder.find(); @Test public void testTraceDisabled() throws Exception { diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleDynamicURITest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleDynamicURITest.java index d356464..12b4d93 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleDynamicURITest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleDynamicURITest.java @@ -17,12 +17,17 @@ package org.apache.camel.component.netty.http; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.AvailablePortFinder; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import static org.junit.jupiter.api.Assertions.assertEquals; public class NettyRouteSimpleDynamicURITest extends BaseNettyTest { + @RegisterExtension + AvailablePortFinder.Port port2 = AvailablePortFinder.find(); + @Test public void testHttpSimple() throws Exception { getMockEndpoint("mock:input1").expectedBodiesReceived("Hello World"); @@ -37,8 +42,6 @@ public class NettyRouteSimpleDynamicURITest extends BaseNettyTest { @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { - int port2 = getNextPort(); - @Override public void configure() throws Exception { from("netty-http:http://0.0.0.0:{{port}}/foo") diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleTest.java index ed8635a..3d7fff6 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyRouteSimpleTest.java @@ -17,12 +17,17 @@ package org.apache.camel.component.netty.http; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.AvailablePortFinder; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import static org.junit.jupiter.api.Assertions.assertEquals; public class NettyRouteSimpleTest extends BaseNettyTest { + @RegisterExtension + AvailablePortFinder.Port port2 = AvailablePortFinder.find(); + @Test public void testHttpSimple() throws Exception { getMockEndpoint("mock:input1").expectedBodiesReceived("Hello World"); @@ -37,8 +42,6 @@ public class NettyRouteSimpleTest extends BaseNettyTest { @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { - int port2 = getNextPort(); - @Override public void configure() throws Exception { from("netty-http:http://0.0.0.0:{{port}}/foo") 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 0073685..ec0d235 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 @@ -42,6 +42,8 @@ public final class AvailablePortFinder { void release(); + String toString(); + default void afterAll(ExtensionContext context) throws Exception { release(); } @@ -78,6 +80,10 @@ public final class AvailablePortFinder { public void release() { AvailablePortFinder.this.release(this); } + + public String toString() { + return Integer.toString(getPort()); + } }; Port prv = INSTANCE.portMapping.putIfAbsent(port, p); if (prv == null) { @@ -100,6 +106,10 @@ public final class AvailablePortFinder { public void release() { AvailablePortFinder.this.release(this); } + + public String toString() { + return Integer.toString(getPort()); + } }; Port prv = INSTANCE.portMapping.putIfAbsent(port, p); if (prv == null) {