You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/12/18 20:12:25 UTC

(camel) branch main updated: * CAMEL-20113: camel itests refactoring (#12480)

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 8a2207e0904 * CAMEL-20113: camel itests refactoring (#12480)
8a2207e0904 is described below

commit 8a2207e0904c0dcd879eb75fe66425a61356688d
Author: Ivan Kulaga <ku...@gmail.com>
AuthorDate: Mon Dec 18 23:12:19 2023 +0300

    * CAMEL-20113: camel itests refactoring (#12480)
    
    * delete tests because org.apache.camel.component.jms.JmsDurableTopicTest does the same check
    * module tests/camel-itest-jms2 contained only jms component tests. They are moved to jms component and tests/camel-itest-jms2 is deleted
    * test from tests/camel-typeconverterscan was moved to processor tests. Processor converter tests were then moved to a separate package to avoid scanning the whole org.apache.camel.processor for custom converter. tests/camel-typeconverterscan was deleted as no relevant tests remained there.
    * removed test as it is duplicated by org.apache.camel.management.CamelContextDisableJmxTest
    * there are many tests doing this check as part of their logic, including the type converter tests
    * async tests are duplicated by org.apache.camel.impl.DefaultProducerTemplateAsyncTest; timeout tests are duplicated by org.apache.camel.component.jetty.async.JettyAsyncContinuationTimeoutTest
    * FtpInitialConnectTimeoutTest is moved to ftp component tests
    * CustomerServicesWsAddressingTest is deleted because wsdl with empty soapAction is checked in org.apache.camel.component.cxf.CxfPayLoadSoapHeaderSpringTest
---
 .../component/file/remote/FtpSoTimeoutTest.java    |  30 +++-
 .../camel/processor/converter/ConvertBodyTest.java |   4 +
 .../processor/converter/ConvertHeaderTest.java     |   4 +
 .../apache/camel/itest/async/HttpAsyncDslTest.java | 136 -----------------
 .../apache/camel/itest/async/HttpAsyncTest.java    |  82 ----------
 .../camel/itest/async/HttpAsyncTestSupport.java    |  36 -----
 .../camel/itest/async/HttpJmsAsyncTimeoutTest.java |  75 ---------
 .../org/apache/camel/itest/async/HttpSyncTest.java |  67 --------
 .../apache/camel/itest/async/MyAsyncComponent.java |  34 -----
 .../apache/camel/itest/async/MyAsyncEndpoint.java  |  73 ---------
 .../apache/camel/itest/async/MyAsyncProducer.java  |  73 ---------
 .../customerrelations/CustomerServicesTest.java    |   1 -
 .../CustomerServicesWsAddressingTest.java          |  54 -------
 .../itest/ftp/FtpInitialConnectTimeoutTest.java    | 168 ---------------------
 14 files changed, 33 insertions(+), 804 deletions(-)

diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpSoTimeoutTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpSoTimeoutTest.java
index 2e110f47d5e..9aa8fa9318b 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpSoTimeoutTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpSoTimeoutTest.java
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.component.file.remote;
 
-import java.net.ServerSocket;
-import java.util.concurrent.TimeUnit;
-
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.apache.commons.net.ftp.FTPClient;
 import org.junit.jupiter.api.AfterEach;
@@ -30,6 +28,9 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
 
+import java.net.ServerSocket;
+import java.util.concurrent.TimeUnit;
+
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
@@ -75,11 +76,19 @@ public class FtpSoTimeoutTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
+
                 from("direct:with").to("ftp://localhost:" + serverSocket.getLocalPort()
-                                       + "?ftpClient=#myftpclient&connectTimeout=300&soTimeout=300&reconnectDelay=100");
+                        + "?ftpClient=#myftpclient&connectTimeout=300&soTimeout=300&reconnectDelay=100");
 
                 from("direct:without").to("ftp://localhost:" + serverSocket.getLocalPort()
-                                          + "?connectTimeout=300&soTimeout=300&reconnectDelay=100");
+                        + "?connectTimeout=300&soTimeout=300&reconnectDelay=100");
+
+                // using soTimeout=0 could potentially cause the ftp producer to dead-lock doing endless reconnection attempts
+                // this is a test to ensure we have fixed that; see CAMEL-8088
+                from("direct:soTimeoutZero").to("ftp://localhost:" + serverSocket.getLocalPort()
+                        + "?connectTimeout=300&soTimeout=0")
+                        .to("mock:done")
+                        .errorHandler(deadLetterChannel("mock:dead"));
             }
         };
     }
@@ -114,4 +123,15 @@ public class FtpSoTimeoutTest extends CamelTestSupport {
             template.sendBody("direct:without", "");
         });
     }
+
+    @Test
+    void testReConnectDeadlock() throws Exception {
+        // we should fail, but we are testing that we are not in a deadlock which could potentially happen
+        getMockEndpoint("mock:done").expectedMessageCount(0);
+        getMockEndpoint("mock:dead").expectedMessageCount(1);
+
+        template.sendBody("direct:soTimeoutZero", "test");
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
 }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertBodyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertBodyTest.java
index af5f8745510..c7af7ffbd0c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertBodyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertBodyTest.java
@@ -33,6 +33,10 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 import org.junit.jupiter.api.condition.OS;
 
+import java.io.ByteArrayInputStream;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.Date;
+
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertHeaderTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertHeaderTest.java
index c3a5be38fcc..799547701e3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertHeaderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/converter/ConvertHeaderTest.java
@@ -31,6 +31,10 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 import org.junit.jupiter.api.condition.OS;
 
+import java.io.ByteArrayInputStream;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.Date;
+
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncDslTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncDslTest.java
deleted file mode 100644
index 44d8e8a1c19..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncDslTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.jms.JmsComponent;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.itest.utils.extensions.JmsServiceExtension;
-import org.apache.camel.spi.Registry;
-import org.apache.camel.support.SimpleRegistry;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.BeforeEach;
-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 HttpAsyncDslTest extends CamelTestSupport {
-    @RegisterExtension
-    public static JmsServiceExtension jmsServiceExtension = JmsServiceExtension.createExtension();
-
-    private static volatile String order = "";
-
-    @Test
-    void testRequestOnly() throws Exception {
-        getMockEndpoint("mock:validate").expectedMessageCount(1);
-        // even though its request only the message is still continued being processed
-        getMockEndpoint("mock:order").expectedMessageCount(1);
-
-        template.sendBody("jms:queue:order", "Order: Camel in Action");
-        order += "C";
-
-        MockEndpoint.assertIsSatisfied(context);
-
-        // B should be last (either ABC or BAC depending on threading)
-        assertEquals(3, order.length());
-        assertTrue(order.endsWith("B"));
-    }
-
-    @Test
-    void testRequestReply() throws Exception {
-        getMockEndpoint("mock:validate").expectedMessageCount(1);
-        // even though its request only the message is still continued being processed
-        getMockEndpoint("mock:order").expectedMessageCount(1);
-
-        String response = template.requestBody("jms:queue:order", "Order: Camel in Action", String.class);
-        order += "C";
-
-        MockEndpoint.assertIsSatisfied(context);
-
-        // should be in strict ABC order as we do request/reply
-        assertEquals("ABC", order);
-        assertEquals("Order OK", response);
-    }
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        order = "";
-        super.setUp();
-    }
-
-    @Override
-    protected Registry createCamelRegistry() throws Exception {
-        Registry registry = new SimpleRegistry();
-        registry.bind("validateOrder", new MyValidateOrderBean());
-        registry.bind("handleOrder", new MyHandleOrderBean());
-        return registry;
-    }
-
-    @Override
-    protected void bindToRegistry(Registry registry) throws Exception {
-        // add ActiveMQ with embedded broker
-        JmsComponent amq = jmsServiceExtension.getComponent();
-
-        amq.setCamelContext(context);
-        registry.bind("jms", amq);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                // START SNIPPET: e1
-
-                // list on the JMS queue for new orders
-                from("jms:queue:order")
-                        // do some sanity check validation
-                        .to("bean:validateOrder")
-                        .to("mock:validate")
-                        // use multi threading with a pool size of 20
-                        // turn the route async as some others do not expect a reply
-                        // and a few does then we can use the threads DSL as a turning point
-                        // if the JMS ReplyTo was set then we expect a reply, otherwise not
-                        // use a pool of 20 threads for the point forward
-                        .threads(20)
-                        // do some CPU heavy processing of the message (we simulate and delay just 500 ms)
-                        .delay(500).to("bean:handleOrder").to("mock:order");
-                // END SNIPPET: e1
-            }
-        };
-    }
-
-    public static class MyValidateOrderBean {
-
-        public void validateOrder(byte[] payload) {
-            order += "A";
-            // noop
-        }
-    }
-
-    public static class MyHandleOrderBean {
-
-        public String handleOrder(String message) {
-            order += "B";
-            return "Order OK";
-            // noop
-        }
-    }
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncTest.java
deleted file mode 100644
index 17ca82499bb..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import java.util.concurrent.Future;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class HttpAsyncTest extends HttpAsyncTestSupport {
-
-    @Test
-    void testAsyncAndSyncAtSameTimeWithHttp() throws Exception {
-        // START SNIPPET: e2
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        // We expect the name job to be faster than the async job even though the async job
-        // was started first
-        mock.expectedBodiesReceived("Claus", "Bye World");
-
-        // Send a async request/reply message to the http endpoint
-        Future<Object> future = template.asyncRequestBody("http://0.0.0.0:" + getPort() + "/myservice", "Hello World");
-
-        // We got the future so in the meantime we can do other stuff, as this is Camel
-        // so lets invoke another request/reply route but this time is synchronous
-        String name = template.requestBody("direct:name", "Give me a name", String.class);
-        assertEquals("Claus", name);
-
-        // Okay we got a name and we have done some other work at the same time
-        // the async route is running, but now its about time to wait and get
-        // get the response from the async task
-
-        // We use the extract future body to get the response from the future
-        // (waiting if needed) and then return a string body response.
-        // This allows us to do this in a single code line instead of using the
-        // JDK Future API to get hold of it, but you can also use that if you want
-        // Adding the (String) To make the CS happy
-        String response = template.extractFutureBody(future, String.class);
-        assertEquals("Bye World", response);
-
-        MockEndpoint.assertIsSatisfied(context);
-        // END SNIPPET: e2
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                // START SNIPPET: e1
-                // The mocks are here for unit test
-
-                // Some other service to return a name, this is invoked synchronously
-                from("direct:name").transform(constant("Claus")).to("mock:result");
-
-                // Simulate a slow http service (delaying 1 sec) we want to invoke async
-                fromF("jetty:http://0.0.0.0:%s/myservice", getPort())
-                        .delay(1000)
-                        .transform(constant("Bye World"))
-                        .to("mock:result");
-                // END SNIPPET: e1
-            }
-        };
-    }
-
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncTestSupport.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncTestSupport.java
deleted file mode 100644
index 89ddd43a0ed..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpAsyncTestSupport.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
-
-public class HttpAsyncTestSupport extends CamelTestSupport {
-
-    protected static int port;
-
-    @BeforeAll
-    public static void initPort() {
-        port = AvailablePortFinder.getNextAvailable();
-    }
-
-    protected int getPort() {
-        return port;
-    }
-
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpJmsAsyncTimeoutTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpJmsAsyncTimeoutTest.java
deleted file mode 100644
index 1be83a5a305..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpJmsAsyncTimeoutTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.jms.JmsComponent;
-import org.apache.camel.http.base.HttpOperationFailedException;
-import org.apache.camel.itest.utils.extensions.JmsServiceExtension;
-import org.apache.camel.spi.Registry;
-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;
-import static org.junit.jupiter.api.Assertions.fail;
-
-public class HttpJmsAsyncTimeoutTest extends HttpAsyncTestSupport {
-    @RegisterExtension
-    public static JmsServiceExtension jmsServiceExtension = JmsServiceExtension.createExtension();
-
-    @Test
-    void testHttpJmsAsync() {
-        try {
-            template.requestBody("http://0.0.0.0:" + getPort() + "/myservice", "Hello World", String.class);
-            fail("Should have thrown exception");
-        } catch (CamelExecutionException e) {
-            HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, e.getCause());
-            assertEquals(504, cause.getStatusCode());
-        }
-    }
-
-    @Override
-    protected void bindToRegistry(Registry registry) {
-        // add ActiveMQ with embedded broker
-        JmsComponent amq = jmsServiceExtension.getComponent();
-
-        amq.setCamelContext(context);
-        registry.bind("jms", amq);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                // a lot of timeouts in the play :)
-
-                // jetty will timeout after 2 seconds
-                fromF("jetty:http://0.0.0.0:%s/myservice?continuationTimeout=2000", getPort())
-                        // jms request/reply will timeout after 5 seconds
-                        .to("jms:queue:foo?requestTimeout=5000");
-
-                from("jms:queue:foo")
-                        // and this one is slow and will reply after 10 seconds
-                        .delayer(10000)
-                        .transform(constant("Bye World"));
-            }
-        };
-    }
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpSyncTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpSyncTest.java
deleted file mode 100644
index 74a7fcd1fbb..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/HttpSyncTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class HttpSyncTest extends HttpAsyncTestSupport {
-
-    @Test
-    void testSyncAndSyncAtSameTimeWithHttp() throws Exception {
-        // START SNIPPET: e2
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        // We expect the http job to complete before the name job
-        mock.expectedBodiesReceived("Bye World", "Claus");
-
-        // Send a sync request/reply message to the http endpoint
-        String response = template.requestBody("http://0.0.0.0:" + getPort() + "/myservice", "Hello World", String.class);
-        assertEquals("Bye World", response);
-
-        // Send a sync request/reply message to the direct endpoint
-        String name = template.requestBody("direct:name", "Give me a name", String.class);
-        assertEquals("Claus", name);
-
-        MockEndpoint.assertIsSatisfied(context);
-        // END SNIPPET: e2
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                // START SNIPPET: e1
-                // The mocks are here for unit test
-
-                // Some other service to return a name, this is invoked synhronously
-                from("direct:name").transform(constant("Claus")).to("mock:result");
-
-                // Simulate a slow http service (delaying 1 sec) we want to invoke async
-                fromF("jetty:http://0.0.0.0:%s/myservice", getPort())
-                        .delay(1000)
-                        .transform(constant("Bye World"))
-                        .to("mock:result");
-                // END SNIPPET: e1
-            }
-        };
-    }
-
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncComponent.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncComponent.java
deleted file mode 100644
index 1e9f1dcbe69..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncComponent.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.support.DefaultComponent;
-
-public class MyAsyncComponent extends DefaultComponent {
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        MyAsyncEndpoint answer = new MyAsyncEndpoint(uri, this);
-        answer.setReply(remaining);
-        setProperties(answer, parameters);
-        return answer;
-    }
-
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncEndpoint.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncEndpoint.java
deleted file mode 100644
index d64e1143853..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncEndpoint.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.support.DefaultEndpoint;
-
-public class MyAsyncEndpoint extends DefaultEndpoint {
-
-    private String reply;
-    private long delay = 1000;
-    private int failFirstAttempts;
-
-    public MyAsyncEndpoint(String endpointUri, Component component) {
-        super(endpointUri, component);
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return new MyAsyncProducer(this);
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        throw new UnsupportedOperationException("Consumer not supported");
-    }
-
-    @Override
-    public boolean isSingleton() {
-        return false;
-    }
-
-    public String getReply() {
-        return reply;
-    }
-
-    public void setReply(String reply) {
-        this.reply = reply;
-    }
-
-    public long getDelay() {
-        return delay;
-    }
-
-    public void setDelay(long delay) {
-        this.delay = delay;
-    }
-
-    public int getFailFirstAttempts() {
-        return failFirstAttempts;
-    }
-
-    public void setFailFirstAttempts(int failFirstAttempts) {
-        this.failFirstAttempts = failFirstAttempts;
-    }
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncProducer.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncProducer.java
deleted file mode 100644
index d0073964beb..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/async/MyAsyncProducer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.async;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.CamelExchangeException;
-import org.apache.camel.Exchange;
-import org.apache.camel.support.DefaultAsyncProducer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MyAsyncProducer extends DefaultAsyncProducer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(MyAsyncProducer.class);
-    private final ExecutorService executor = Executors.newCachedThreadPool();
-    private final AtomicInteger counter = new AtomicInteger();
-
-    public MyAsyncProducer(MyAsyncEndpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public MyAsyncEndpoint getEndpoint() {
-        return (MyAsyncEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    public boolean process(final Exchange exchange, final AsyncCallback callback) {
-        executor.submit(() -> {
-            LOG.info("Simulating a task which takes " + getEndpoint().getDelay() + " millis to reply");
-            Thread.sleep(getEndpoint().getDelay());
-
-            int count = counter.incrementAndGet();
-            if (getEndpoint().getFailFirstAttempts() >= count) {
-                LOG.info("Simulating a failure at attempt " + count);
-                exchange.setException(new CamelExchangeException("Simulated error at attempt " + count, exchange));
-            } else {
-                String reply = getEndpoint().getReply();
-                exchange.getMessage().setBody(reply);
-                // propagate headers
-                exchange.getMessage().setHeaders(exchange.getIn().getHeaders());
-                LOG.info("Setting reply " + reply);
-            }
-
-            LOG.info("Callback done(false)");
-            callback.done(false);
-            return null;
-        });
-
-        // indicate from this point forward its being routed asynchronously
-        LOG.info("Task submitted, now tell Camel routing engine to that this Exchange is being continued asynchronously");
-        return false;
-    }
-
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesTest.java
index 5f6d9d8758d..accc49f7a1c 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesTest.java
@@ -66,7 +66,6 @@ public class CustomerServicesTest {
             Customer customer = customerService.getCustomer("12345");
             assertNotNull(customer, "We should get Customer here");
         } finally {
-            // we're done so let's properly close the application contexts
             IOHelper.close(clientContext, serverContext);
         }
     }
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesWsAddressingTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesWsAddressingTest.java
deleted file mode 100644
index cdadb5af328..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesWsAddressingTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.customerrelations;
-
-import org.apache.camel.itest.utils.extensions.JmsServiceExtension;
-import org.apache.camel.util.IOHelper;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class CustomerServicesWsAddressingTest {
-    @RegisterExtension
-    public static JmsServiceExtension jmsServiceExtension = JmsServiceExtension.createExtension();
-
-    @Test
-    void testCustomerService() throws Exception {
-        ClassPathXmlApplicationContext serverContext = null;
-        ClassPathXmlApplicationContext clientContext = null;
-        try {
-            serverContext = new ClassPathXmlApplicationContext(
-                    new String[] { "spring-config/server-WsAddressingContext.xml" });
-            Object server = serverContext.getBean("org.apache.camel.itest.customerrelations.CustomerServiceV1");
-            assertNotNull(server, "We should get server here");
-
-            clientContext = new ClassPathXmlApplicationContext(
-                    new String[] { "spring-config/client-WsAddressingContext.xml" });
-            CustomerServiceV1 customerService = clientContext
-                    .getBean("org.apache.camel.itest.customerrelations.CustomerServiceV1", CustomerServiceV1.class);
-
-            Customer customer = customerService.getCustomer("12345");
-            assertNotNull(customer, "We should get Customer here");
-        } finally {
-            // we're done so let's properly close the application context
-            IOHelper.close(clientContext, serverContext);
-        }
-    }
-
-}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/ftp/FtpInitialConnectTimeoutTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/ftp/FtpInitialConnectTimeoutTest.java
deleted file mode 100644
index 122e284b639..00000000000
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/ftp/FtpInitialConnectTimeoutTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.itest.ftp;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.SocketTimeoutException;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import javax.net.SocketFactory;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.spi.Registry;
-import org.apache.camel.support.SimpleRegistry;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.apache.commons.net.ftp.FTPClient;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockftpserver.fake.FakeFtpServer;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-public class FtpInitialConnectTimeoutTest extends CamelTestSupport {
-
-    private static final int CONNECT_TIMEOUT = 11223;
-
-    /**
-     * Create the answer for the socket factory that causes a SocketTimeoutException to occur in connect.
-     */
-    private static class SocketAnswer implements Answer<Socket> {
-
-        @Override
-        public Socket answer(InvocationOnMock invocation) throws Throwable {
-            final Socket socket = spy(new Socket());
-            final AtomicBoolean timeout = new AtomicBoolean();
-
-            try {
-                doAnswer((Answer<InputStream>) invocation12 -> {
-                    final InputStream stream = (InputStream) invocation12.callRealMethod();
-
-                    InputStream inputStream = new InputStream() {
-                        @Override
-                        public int read() throws IOException {
-                            if (timeout.get()) {
-                                // emulate a timeout occurring in _getReply()
-                                throw new SocketTimeoutException();
-                            }
-                            return stream.read();
-                        }
-                    };
-
-                    return inputStream;
-                }).when(socket).getInputStream();
-            } catch (IOException ignored) {
-            }
-
-            try {
-                doAnswer((Answer<Object>) invocation1 -> {
-                    if ((Integer) invocation1.getArguments()[0] == CONNECT_TIMEOUT) {
-                        // setting of connect timeout
-                        timeout.set(true);
-                    } else {
-                        // non-connect timeout
-                        timeout.set(false);
-                    }
-                    return invocation1.callRealMethod();
-                }).when(socket).setSoTimeout(anyInt());
-            } catch (SocketException e) {
-                throw new RuntimeException(e);
-            }
-            return socket;
-        }
-    }
-
-    private FakeFtpServer fakeFtpServer;
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        fakeFtpServer = new FakeFtpServer();
-        fakeFtpServer.setServerControlPort(0);
-        fakeFtpServer.start();
-
-        super.setUp();
-    }
-
-    @Override
-    @AfterEach
-    public void tearDown() throws Exception {
-        super.tearDown();
-        if (fakeFtpServer != null) {
-            fakeFtpServer.stop();
-        }
-    }
-
-    private FTPClient mockedClient() throws IOException {
-        FTPClient client = new FTPClient();
-        client.setSocketFactory(createSocketFactory());
-        return client;
-    }
-
-    private SocketFactory createSocketFactory() throws IOException {
-        SocketFactory socketFactory = mock(SocketFactory.class);
-        when(socketFactory.createSocket()).thenAnswer(new SocketAnswer());
-        return socketFactory;
-    }
-
-    @Override
-    protected Registry createCamelRegistry() throws Exception {
-        Registry registry = new SimpleRegistry();
-        registry.bind("mocked", mockedClient());
-        return registry;
-    }
-
-    @Test
-    void testReConnect() throws Exception {
-        // we should fail, but we are testing that we are not in a deadlock which could potentially happen
-        getMockEndpoint("mock:done").expectedMessageCount(0);
-        getMockEndpoint("mock:dead").expectedMessageCount(1);
-
-        sendBody("direct:start", "test");
-
-        MockEndpoint.assertIsSatisfied(context);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                errorHandler(deadLetterChannel("mock:dead"));
-
-                // using soTimeout=0 could potentially cause the ftp producer to dead-lock doing endless reconnection attempts
-                // this is a test to ensure we have fixed that
-                from("direct:start")
-                        .to("ftp://localhost:" + fakeFtpServer.getServerControlPort()
-                            + "?ftpClient=#mocked"
-                            + "&soTimeout=0&"
-                            + "connectTimeout=" + CONNECT_TIMEOUT)
-                        .to("mock:done");
-            }
-        };
-    }
-}