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

Reply via email to