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
commit 0398b41c1b33b864a00b67122ac637093906f375 Author: Otavio Rodolfo Piske <angusyo...@gmail.com> AuthorDate: Thu Sep 8 13:57:08 2022 +0200 CAMEL-18456: converted camel-ahc-ws tests to camel-test-infra-jetty --- components/camel-ahc-ws/pom.xml | 33 ++++++------ .../component/ahc/ws/WsProducerConsumerTest.java | 62 +++++++++------------- .../camel/component/ahc/ws/WsProducerTest.java | 26 ++++++--- .../camel/component/ahc/ws/WsProducerTestBase.java | 44 ++------------- .../ahc/ws/WsProducerUsingStreamingTest.java | 27 ++++++++-- .../camel/component/ahc/ws/WssProducerTest.java | 46 +++++++++------- .../src/test/resources/log4j2.properties | 3 ++ 7 files changed, 114 insertions(+), 127 deletions(-) diff --git a/components/camel-ahc-ws/pom.xml b/components/camel-ahc-ws/pom.xml index 8863c0c6e87..fca718e9b3c 100644 --- a/components/camel-ahc-ws/pom.xml +++ b/components/camel-ahc-ws/pom.xml @@ -70,34 +70,31 @@ <scope>test</scope> </dependency> - <!-- Jetty8 for testing--> + <!-- test infra --> <dependency> - <groupId>org.eclipse.jetty.websocket</groupId> - <artifactId>websocket-api</artifactId> - <version>${jetty-version}</version> - <scope>test</scope> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test-infra-common</artifactId> + <version>${project.version}</version> + <type>test-jar</type> </dependency> + <dependency> - <groupId>org.eclipse.jetty.websocket</groupId> - <artifactId>websocket-server</artifactId> - <version>${jetty-version}</version> - <scope>test</scope> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test-infra-jetty</artifactId> + <version>${project.version}</version> + <type>test-jar</type> </dependency> + + <!-- Jetty8 for testing--> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> - <artifactId>websocket-servlet</artifactId> - <version>${jetty-version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-servlet</artifactId> + <artifactId>websocket-api</artifactId> <version>${jetty-version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> + <groupId>org.eclipse.jetty.websocket</groupId> + <artifactId>websocket-server</artifactId> <version>${jetty-version}</version> <scope>test</scope> </dependency> diff --git a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerConsumerTest.java b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerConsumerTest.java index c6e18ef4a65..b0be9ccf8bb 100644 --- a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerConsumerTest.java +++ b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerConsumerTest.java @@ -22,59 +22,44 @@ import java.util.concurrent.TimeUnit; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.AvailablePortFinder; +import org.apache.camel.test.infra.jetty.services.JettyConfiguration; +import org.apache.camel.test.infra.jetty.services.JettyConfigurationBuilder; +import org.apache.camel.test.infra.jetty.services.JettyEmbeddedService; import org.apache.camel.test.junit5.CamelTestSupport; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.servlet.ServletContextHandler; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.assertTrue; -/** - * - */ +@Timeout(30) public class WsProducerConsumerTest extends CamelTestSupport { protected static final String TEST_MESSAGE = "Hello World!"; protected static final String TEST_CONNECTED_MESSAGE = "Connected!"; - protected static final int PORT = AvailablePortFinder.getNextAvailable(); private static final Logger LOG = LoggerFactory.getLogger(WsProducerConsumerTest.class); - protected Server server; - - protected List<Object> messages; - - public void startTestServer() throws Exception { - // start a simple websocket echo service - server = new Server(PORT); - Connector connector = new ServerConnector(server); - server.addConnector(connector); - - ServletContextHandler ctx = new ServletContextHandler(); - ctx.setContextPath("/"); - ctx.addServlet(TestServletFactory.class.getName(), "/*"); + private static final JettyConfiguration JETTY_CONFIGURATION = JettyConfigurationBuilder + .emptyTemplate() + .withPort(AvailablePortFinder.getNextAvailable()) + .withContextPath(JettyConfiguration.ROOT_CONTEXT_PATH) + .addServletConfiguration(new JettyConfiguration.ServletConfiguration( + TestServletFactory.class.getName(), JettyConfiguration.ServletConfiguration.ROOT_PATH_SPEC)) + .build(); - server.setHandler(ctx); + public JettyEmbeddedService service = new JettyEmbeddedService(JETTY_CONFIGURATION); - server.start(); - assertTrue(server.isStarted()); - } - - public void stopTestServer() throws Exception { - server.stop(); - server.destroy(); - } + protected List<Object> messages; @Override @BeforeEach public void setUp() throws Exception { - startTestServer(); + service.initialize(); super.setUp(); } @@ -82,7 +67,7 @@ public class WsProducerConsumerTest extends CamelTestSupport { @AfterEach public void tearDown() throws Exception { super.tearDown(); - stopTestServer(); + service.shutdown(); } @Test @@ -144,6 +129,7 @@ public class WsProducerConsumerTest extends CamelTestSupport { mock.assertIsSatisfied(); } + @Disabled("The reconnect logic on WsEndpoint has a bug and this component is deprecated - CAMEL-17667") @Test public void testRestartServer() throws Exception { MockEndpoint mock = getMockEndpoint("mock:restart-result"); @@ -153,12 +139,12 @@ public class WsProducerConsumerTest extends CamelTestSupport { resetMocks(); LOG.info("Restarting Test Server"); - stopTestServer(); - startTestServer(); + service.shutdown(); + service.initialize(); mock.expectedBodiesReceived(TEST_CONNECTED_MESSAGE); - mock.assertIsSatisfied(); + mock.assertIsSatisfied(10000); } @Override @@ -167,18 +153,18 @@ public class WsProducerConsumerTest extends CamelTestSupport { rbs[0] = new RouteBuilder() { public void configure() { from("direct:input").routeId("foo") - .to("ahc-ws://localhost:" + PORT); + .to("ahc-ws://localhost:" + service.getPort()); } }; rbs[1] = new RouteBuilder() { public void configure() { - from("ahc-ws://localhost:" + PORT).routeId("bar") + from("ahc-ws://localhost:" + service.getPort()).routeId("bar") .to("mock:result"); } }; rbs[2] = new RouteBuilder() { public void configure() { - from("ahc-ws://localhost:" + PORT + "/restart").routeId("restart") + from("ahc-ws://localhost:" + service.getPort() + "/restart").routeId("restart") .to("mock:restart-result"); } }; diff --git a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTest.java b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTest.java index 29f81f42e3f..43d54be03b2 100644 --- a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTest.java +++ b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTest.java @@ -16,22 +16,32 @@ */ package org.apache.camel.component.ahc.ws; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.ServerConnector; +import org.apache.camel.test.AvailablePortFinder; +import org.apache.camel.test.infra.jetty.services.JettyConfiguration; +import org.apache.camel.test.infra.jetty.services.JettyConfigurationBuilder; +import org.apache.camel.test.infra.jetty.services.JettyEmbeddedService; +import org.junit.jupiter.api.Timeout; +import org.junit.jupiter.api.extension.RegisterExtension; +@Timeout(10) public class WsProducerTest extends WsProducerTestBase { - @Override - protected void setUpComponent() { - } + private final JettyConfiguration jettyConfiguration = JettyConfigurationBuilder + .emptyTemplate() + .withPort(AvailablePortFinder.getNextAvailable()) + .withContextPath(JettyConfiguration.ROOT_CONTEXT_PATH) + .addServletConfiguration(new JettyConfiguration.ServletConfiguration( + TestServletFactory.class.getName(), JettyConfiguration.ServletConfiguration.ROOT_PATH_SPEC)) + .build(); + @RegisterExtension + public JettyEmbeddedService service = new JettyEmbeddedService(jettyConfiguration); @Override - protected Connector getConnector() { - return new ServerConnector(server); + protected void setUpComponent() { } @Override protected String getTargetURL() { - return "ahc-ws://localhost:" + PORT; + return "ahc-ws://localhost:" + service.getPort(); } } diff --git a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTestBase.java b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTestBase.java index 4ef59b643cd..9bf6bf5934a 100644 --- a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTestBase.java +++ b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerTestBase.java @@ -27,59 +27,28 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.ProducerTemplate; import org.apache.camel.impl.DefaultCamelContext; -import org.apache.camel.test.AvailablePortFinder; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.servlet.ServletContextHandler; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; -/** - * - */ +@Timeout(10) public abstract class WsProducerTestBase { - protected static final String TEST_MESSAGE = "Hello World!"; - protected static final int PORT = AvailablePortFinder.getNextAvailable(); protected CamelContext camelContext; protected ProducerTemplate template; - protected Server server; - - public void startTestServer() throws Exception { - // start a simple websocket echo service - server = new Server(PORT); - Connector connector = getConnector(); - server.addConnector(connector); - - ServletContextHandler ctx = new ServletContextHandler(); - ctx.setContextPath("/"); - ctx.addServlet(TestServletFactory.class.getName(), "/*"); - - server.setHandler(ctx); - - server.start(); - assertTrue(server.isStarted()); - } - - public void stopTestServer() throws Exception { - server.stop(); - server.destroy(); - } @BeforeEach - public void setUp() throws Exception { + public void setUp() { TestMessages.getInstance().getMessages().clear(); - startTestServer(); - camelContext = new DefaultCamelContext(); camelContext.start(); @@ -88,17 +57,13 @@ public abstract class WsProducerTestBase { } @AfterEach - public void tearDown() throws Exception { + public void tearDown() { template.stop(); camelContext.stop(); - - stopTestServer(); } protected abstract void setUpComponent(); - protected abstract Connector getConnector() throws Exception; - protected abstract String getTargetURL(); protected String getTextTestMessage() { @@ -117,7 +82,6 @@ public abstract class WsProducerTestBase { verifyMessage(testMessage, TestMessages.getInstance().getMessages().get(0)); } - @Disabled @Test public void testWriteBytesToWebsocket() throws Exception { byte[] testMessageBytes = getByteTestMessage(); diff --git a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerUsingStreamingTest.java b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerUsingStreamingTest.java index f5391cff1b2..ab0ac4dabb8 100644 --- a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerUsingStreamingTest.java +++ b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WsProducerUsingStreamingTest.java @@ -16,18 +16,35 @@ */ package org.apache.camel.component.ahc.ws; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.ServerConnector; +import org.apache.camel.test.AvailablePortFinder; +import org.apache.camel.test.infra.jetty.services.JettyConfiguration; +import org.apache.camel.test.infra.jetty.services.JettyConfigurationBuilder; +import org.apache.camel.test.infra.jetty.services.JettyEmbeddedService; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Timeout; +import org.junit.jupiter.api.extension.RegisterExtension; +@Timeout(10) public class WsProducerUsingStreamingTest extends WsProducerTestBase { + private final JettyConfiguration jettyConfiguration = JettyConfigurationBuilder + .emptyTemplate() + .withPort(AvailablePortFinder.getNextAvailable()) + .withContextPath(JettyConfiguration.ROOT_CONTEXT_PATH) + .addServletConfiguration(new JettyConfiguration.ServletConfiguration( + TestServletFactory.class.getName(), JettyConfiguration.ServletConfiguration.ROOT_PATH_SPEC)) + .build(); + @RegisterExtension + public JettyEmbeddedService service = new JettyEmbeddedService(jettyConfiguration); + @Override protected void setUpComponent() { } + @Disabled("Flaky test that was previously disabled") @Override - protected Connector getConnector() { - return new ServerConnector(server); + public void testWriteBytesToWebsocket() { + // NO-OP } @Override @@ -42,6 +59,6 @@ public class WsProducerUsingStreamingTest extends WsProducerTestBase { @Override protected String getTargetURL() { - return "ahc-ws://localhost:" + PORT + "?useStreaming=true"; + return "ahc-ws://localhost:" + service.getPort() + "?useStreaming=true"; } } diff --git a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WssProducerTest.java b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WssProducerTest.java index 6dfa3aa2059..9901c9c834b 100644 --- a/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WssProducerTest.java +++ b/components/camel-ahc-ws/src/test/java/org/apache/camel/component/ahc/ws/WssProducerTest.java @@ -16,37 +16,47 @@ */ package org.apache.camel.component.ahc.ws; +import java.io.IOException; +import java.security.GeneralSecurityException; + import org.apache.camel.support.jsse.ClientAuthentication; import org.apache.camel.support.jsse.KeyManagersParameters; import org.apache.camel.support.jsse.KeyStoreParameters; import org.apache.camel.support.jsse.SSLContextParameters; import org.apache.camel.support.jsse.SSLContextServerParameters; import org.apache.camel.support.jsse.TrustManagersParameters; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; -import org.eclipse.jetty.util.ssl.SslContextFactory; +import org.apache.camel.test.AvailablePortFinder; +import org.apache.camel.test.infra.jetty.services.JettyConfiguration; +import org.apache.camel.test.infra.jetty.services.JettyConfigurationBuilder; +import org.apache.camel.test.infra.jetty.services.JettyEmbeddedService; import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.extension.RegisterExtension; -@Disabled("Not yet migrated to work with Jetty 9") +@Disabled("Not yet migrated to work with Jetty 9 - and this component is deprecated CAMEL-17667") public class WssProducerTest extends WsProducerTestBase { protected static final String PW = "changeit"; - - @Override - protected Connector getConnector() throws Exception { - - SslContextFactory sslContextFactory = new SslContextFactory(); - sslContextFactory.setSslContext(defineSSLContextServerParameters().createSSLContext(camelContext)); - - ServerConnector https = new ServerConnector( - server, - new SslConnectionFactory(sslContextFactory, null)); - return https; - } + private final JettyConfiguration jettyConfiguration = JettyConfigurationBuilder + .emptyTemplate() + .withPort(AvailablePortFinder.getNextAvailable()) + .withContextPath(JettyConfiguration.ROOT_CONTEXT_PATH) + .addServletConfiguration(new JettyConfiguration.ServletConfiguration( + TestServletFactory.class.getName(), JettyConfiguration.ServletConfiguration.ROOT_PATH_SPEC)) + .withSslContext(() -> { + try { + return WssProducerTest.defineSSLContextServerParameters().createSSLContext(null); + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + }) + .build(); + @RegisterExtension + public JettyEmbeddedService service = new JettyEmbeddedService(jettyConfiguration); @Override protected String getTargetURL() { - return "ahc-wss://localhost:" + PORT; + return "ahc-wss://localhost:" + service.getPort(); } @Override diff --git a/components/camel-ahc-ws/src/test/resources/log4j2.properties b/components/camel-ahc-ws/src/test/resources/log4j2.properties index 9d2e132ee14..c47ad18b3a6 100644 --- a/components/camel-ahc-ws/src/test/resources/log4j2.properties +++ b/components/camel-ahc-ws/src/test/resources/log4j2.properties @@ -26,3 +26,6 @@ appender.out.layout.type = PatternLayout appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n rootLogger.level = INFO rootLogger.appenderRef.file.ref = file + +logger.camelAhcWs.name=org.apache.camel.component.ahc +logger.camelAhcWs.level=INFO