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/03/29 08:03:34 UTC

[camel] branch main updated: CAMEL-18957 camel-paho: convert to use the JUnit 5 extension for the CamelContext

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 7f32bc66820 CAMEL-18957 camel-paho: convert to use the JUnit 5 extension for the CamelContext
7f32bc66820 is described below

commit 7f32bc668201eb6dab1b3e19530e5699df678047
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Mar 24 17:34:43 2023 +0100

    CAMEL-18957 camel-paho: convert to use the JUnit 5 extension for the CamelContext
---
 components/camel-paho/pom.xml                      |  7 ++++
 .../camel/component/paho/PahoComponentTest.java    | 30 +++++++++++---
 .../paho/PahoComponentVerifierExtensionTest.java   | 21 +++++-----
 .../component/paho/PahoOverrideTopicTest.java      | 30 +++++++++++---
 ...eTest.java => PahoReconnectAfterFailureIT.java} | 46 +++++++++++++++-------
 .../camel/component/paho/PahoTestSupport.java      | 22 ++++++++++-
 .../component/paho/PahoToDSendDynamicTest.java     | 31 ++++++++++++---
 .../apache/camel/component/paho/PahoToDTest.java   | 25 +++++++++---
 8 files changed, 161 insertions(+), 51 deletions(-)

diff --git a/components/camel-paho/pom.xml b/components/camel-paho/pom.xml
index be088f078bb..6d104416344 100644
--- a/components/camel-paho/pom.xml
+++ b/components/camel-paho/pom.xml
@@ -52,6 +52,13 @@
             <scope>test</scope>
         </dependency>
         <!-- test infra -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-core</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
         <dependency>
             <groupId>org.apache.activemq</groupId>
             <artifactId>artemis-mqtt-protocol</artifactId>
diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java
index d3e96c7ca5b..e27cae20c12 100644
--- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java
+++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentTest.java
@@ -18,36 +18,43 @@ package org.apache.camel.component.paho;
 
 import java.io.UnsupportedEncodingException;
 
+import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
+import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.DefaultCamelContextExtension;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Order;
 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.assertNotNull;
 
 public class PahoComponentTest extends PahoTestSupport {
 
+    @Order(2)
+    @RegisterExtension
+    public static CamelContextExtension camelContextExtension = new DefaultCamelContextExtension();
+    protected ProducerTemplate template;
+    protected ConsumerTemplate consumer;
     @EndpointInject("mock:test")
     MockEndpoint mock;
 
     @EndpointInject("mock:testCustomizedPaho")
     MockEndpoint testCustomizedPahoMock;
 
-    @Override
-    protected boolean useJmx() {
-        return false;
-    }
-
     @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             @Override
             public void configure() {
                 PahoComponent customizedPaho = new PahoComponent();
-                context.addComponent("customizedPaho", customizedPaho);
+                getContext().addComponent("customizedPaho", customizedPaho);
 
                 from("direct:test").to("paho:queue?brokerUrl=" + service.serviceAddress());
                 from("paho:queue?brokerUrl=" + service.serviceAddress()).to("mock:test");
@@ -170,4 +177,15 @@ public class PahoComponentTest extends PahoTestSupport {
         // Then
         mock.assertIsSatisfied();
     }
+
+    @Override
+    public CamelContextExtension getCamelContextExtension() {
+        return camelContextExtension;
+    }
+
+    @BeforeEach
+    void setUpRequirements() {
+        template = getCamelContextExtension().getProducerTemplate();
+        consumer = getCamelContextExtension().getConsumerTemplate();
+    }
 }
diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentVerifierExtensionTest.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentVerifierExtensionTest.java
index 2a6b221ddf3..aa213daebbe 100644
--- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentVerifierExtensionTest.java
+++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoComponentVerifierExtensionTest.java
@@ -21,24 +21,23 @@ import java.util.Map;
 
 import org.apache.camel.Component;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.DefaultCamelContextExtension;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class PahoComponentVerifierExtensionTest extends CamelTestSupport {
+public class PahoComponentVerifierExtensionTest {
 
-    // *************************************************
-    // Tests (parameters)
-    // *************************************************
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
+    @Order(1)
+    @RegisterExtension
+    public static CamelContextExtension camelContextExtension = new DefaultCamelContextExtension();
 
     @Test
     public void testParameters() {
-        Component component = context().getComponent("paho");
+        Component component = camelContextExtension.getContext().getComponent("paho");
 
         ComponentVerifierExtension verifier
                 = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
@@ -53,7 +52,7 @@ public class PahoComponentVerifierExtensionTest extends CamelTestSupport {
 
     @Test
     public void testConnectivity() {
-        Component component = context().getComponent("paho");
+        Component component = camelContextExtension.getContext().getComponent("paho");
         ComponentVerifierExtension verifier
                 = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
 
diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoOverrideTopicTest.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoOverrideTopicTest.java
index 7520bcf2102..903a7871635 100644
--- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoOverrideTopicTest.java
+++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoOverrideTopicTest.java
@@ -16,23 +16,31 @@
  */
 package org.apache.camel.component.paho;
 
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.DefaultCamelContextExtension;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class PahoOverrideTopicTest extends PahoTestSupport {
 
-    @Override
-    protected boolean useJmx() {
-        return false;
-    }
+    @Order(2)
+    @RegisterExtension
+    public static CamelContextExtension camelContextExtension = new DefaultCamelContextExtension();
+    protected ProducerTemplate template;
+    protected ConsumerTemplate consumer;
 
     @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                PahoComponent paho = context.getComponent("paho", PahoComponent.class);
+                PahoComponent paho = getContext().getComponent("paho", PahoComponent.class);
                 paho.getConfiguration().setBrokerUrl("tcp://localhost:" + service.brokerPort());
 
                 from("direct:test").to("paho:queue").log("Message sent");
@@ -53,7 +61,17 @@ public class PahoOverrideTopicTest extends PahoTestSupport {
         template.sendBodyAndHeader("direct:test", "Hello World", PahoConstants.CAMEL_PAHO_OVERRIDE_TOPIC, "myoverride");
 
         // Then
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(getCamelContextExtension().getContext());
+    }
+
+    @Override
+    public CamelContextExtension getCamelContextExtension() {
+        return camelContextExtension;
     }
 
+    @BeforeEach
+    void setUpRequirements() {
+        template = getCamelContextExtension().getProducerTemplate();
+        consumer = getCamelContextExtension().getConsumerTemplate();
+    }
 }
diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureTest.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureIT.java
similarity index 76%
rename from components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureTest.java
rename to components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureIT.java
index 856c0d1b2ad..34751f2bd0a 100644
--- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureTest.java
+++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoReconnectAfterFailureIT.java
@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.EndpointInject;
+import org.apache.camel.ProducerTemplate;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
@@ -30,18 +31,29 @@ import org.apache.camel.spi.SupervisingRouteController;
 import org.apache.camel.support.RoutePolicySupport;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.infra.artemis.services.ArtemisMQTTService;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.TransientCamelContextExtension;
+import org.apache.camel.test.infra.core.annotations.ContextFixture;
+import org.apache.camel.test.infra.core.annotations.RouteFixture;
+import org.apache.camel.test.infra.core.api.ConfigurableContext;
+import org.apache.camel.test.infra.core.api.ConfigurableRoute;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Order;
 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.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.fail;
 
-public class PahoReconnectAfterFailureTest extends CamelTestSupport {
+public class PahoReconnectAfterFailureIT implements ConfigurableRoute, ConfigurableContext {
 
     public static final String TESTING_ROUTE_ID = "testingRoute";
 
+    @Order(1)
+    @RegisterExtension
+    public static CamelContextExtension camelContextExtension = new TransientCamelContextExtension();
+
     ArtemisMQTTService broker;
 
     CountDownLatch routeStartedLatch = new CountDownLatch(1);
@@ -50,32 +62,33 @@ public class PahoReconnectAfterFailureTest extends CamelTestSupport {
     @EndpointInject("mock:test")
     MockEndpoint mock;
 
+    @ContextFixture
     @Override
-    protected boolean useJmx() {
-        return false;
-    }
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = super.createCamelContext();
+    public void configureContext(CamelContext context) {
         // Setup supervisor to restart routes because paho consumer
         // is not able to recover automatically on startup
         SupervisingRouteController supervising = context.getRouteController().supervising();
         supervising.setBackOffDelay(500);
         supervising.setIncludeRoutes("paho:*");
-        return context;
     }
 
+    @RouteFixture
     @Override
+    public void createRouteBuilder(CamelContext context) throws Exception {
+        final RouteBuilder routeBuilder = createRouteBuilder();
+
+        if (routeBuilder != null) {
+            context.addRoutes(routeBuilder);
+        }
+    }
+
     @AfterEach
-    public void tearDown() throws Exception {
-        super.tearDown();
+    public void tearDown() {
         if (broker != null) {
             broker.shutdown();
         }
     }
 
-    @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             @Override
@@ -97,7 +110,7 @@ public class PahoReconnectAfterFailureTest extends CamelTestSupport {
 
     @Test
     public void startConsumerShouldReconnectMqttClientAfterFailures() throws Exception {
-        RouteController routeController = context.getRouteController();
+        RouteController routeController = camelContextExtension.getContext().getRouteController();
 
         assertNotEquals(ServiceStatus.Started, routeController.getRouteStatus(TESTING_ROUTE_ID),
                 "Broker down, expecting  route not to be started");
@@ -114,6 +127,7 @@ public class PahoReconnectAfterFailureTest extends CamelTestSupport {
         mock.expectedBodiesReceived(msg);
 
         // When
+        ProducerTemplate template = camelContextExtension.getProducerTemplate();
         template.sendBody("paho:queue?lazyStartProducer=true&brokerUrl=tcp://localhost:" + port, msg);
 
         // Then
@@ -125,6 +139,7 @@ public class PahoReconnectAfterFailureTest extends CamelTestSupport {
         String msg = "msg";
         mock.expectedBodiesReceived(msg);
 
+        ProducerTemplate template = camelContextExtension.getProducerTemplate();
         try {
             template.sendBody("direct:test", "notSentMessage");
             fail("Broker is down, paho producer should fail");
@@ -140,8 +155,9 @@ public class PahoReconnectAfterFailureTest extends CamelTestSupport {
         mock.assertIsSatisfied(10000);
     }
 
-    private void startBroker() throws Exception {
+    private void startBroker() {
         broker = new ArtemisMQTTService(port);
         broker.initialize();
     }
+
 }
diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoTestSupport.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoTestSupport.java
index 56f315c8fd1..5c73a107c0b 100644
--- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoTestSupport.java
+++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoTestSupport.java
@@ -16,13 +16,31 @@
  */
 package org.apache.camel.component.paho;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.artemis.services.ArtemisService;
 import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.core.annotations.RouteFixture;
+import org.apache.camel.test.infra.core.api.CamelTestSupportHelper;
+import org.apache.camel.test.infra.core.api.ConfigurableRoute;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
-public class PahoTestSupport extends CamelTestSupport {
+public abstract class PahoTestSupport implements CamelTestSupportHelper, ConfigurableRoute {
 
+    @Order(1)
     @RegisterExtension
     public static ArtemisService service = ArtemisServiceFactory.createSingletonMQTTService();
+
+    @RouteFixture
+    @Override
+    public void createRouteBuilder(CamelContext context) throws Exception {
+        final RouteBuilder routeBuilder = createRouteBuilder();
+
+        if (routeBuilder != null) {
+            context.addRoutes(routeBuilder);
+        }
+    }
+
+    protected abstract RouteBuilder createRouteBuilder();
 }
diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDSendDynamicTest.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDSendDynamicTest.java
index 48e3e4c3393..e694417e90f 100644
--- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDSendDynamicTest.java
+++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDSendDynamicTest.java
@@ -16,17 +16,25 @@
  */
 package org.apache.camel.component.paho;
 
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.DefaultCamelContextExtension;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class PahoToDSendDynamicTest extends PahoTestSupport {
 
-    @Override
-    protected boolean useJmx() {
-        return false;
-    }
+    @Order(2)
+    @RegisterExtension
+    public static CamelContextExtension camelContextExtension = new DefaultCamelContextExtension();
+    protected ProducerTemplate template;
+    protected ConsumerTemplate consumer;
 
     @Test
     public void testToD() {
@@ -34,7 +42,8 @@ public class PahoToDSendDynamicTest extends PahoTestSupport {
         template.sendBodyAndHeader("direct:start", "Hello beer", "where", "beer");
 
         // there should only be one paho endpoint
-        long count = context.getEndpoints().stream().filter(e -> e.getEndpointUri().startsWith("paho:")).count();
+        long count = getCamelContextExtension().getContext().getEndpoints().stream()
+                .filter(e -> e.getEndpointUri().startsWith("paho:")).count();
         assertEquals(1, count, "There should only be 1 paho endpoint");
 
         // and the messages should be in the queues
@@ -56,7 +65,7 @@ public class PahoToDSendDynamicTest extends PahoTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                PahoComponent paho = context.getComponent("paho", PahoComponent.class);
+                PahoComponent paho = getContext().getComponent("paho", PahoComponent.class);
                 paho.getConfiguration().setBrokerUrl("tcp://localhost:" + service.brokerPort());
 
                 // route message dynamic using toD
@@ -66,4 +75,14 @@ public class PahoToDSendDynamicTest extends PahoTestSupport {
         };
     }
 
+    @Override
+    public CamelContextExtension getCamelContextExtension() {
+        return camelContextExtension;
+    }
+
+    @BeforeEach
+    void setUpRequirements() {
+        template = getCamelContextExtension().getProducerTemplate();
+        consumer = getCamelContextExtension().getConsumerTemplate();
+    }
 }
diff --git a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDTest.java b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDTest.java
index 7ed4ba9179d..f3ad116014c 100644
--- a/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDTest.java
+++ b/components/camel-paho/src/test/java/org/apache/camel/component/paho/PahoToDTest.java
@@ -16,16 +16,22 @@
  */
 package org.apache.camel.component.paho;
 
+import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.DefaultCamelContextExtension;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class PahoToDTest extends PahoTestSupport {
 
-    @Override
-    protected boolean useJmx() {
-        return false;
-    }
+    @Order(2)
+    @RegisterExtension
+    public static CamelContextExtension camelContextExtension = new DefaultCamelContextExtension();
+    protected ProducerTemplate template;
 
     @Test
     public void testToD() throws Exception {
@@ -46,7 +52,7 @@ public class PahoToDTest extends PahoTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                PahoComponent paho = context.getComponent("paho", PahoComponent.class);
+                PahoComponent paho = getContext().getComponent("paho", PahoComponent.class);
                 paho.getConfiguration().setBrokerUrl("tcp://localhost:" + service.brokerPort());
 
                 // route message dynamic using toD
@@ -58,4 +64,13 @@ public class PahoToDTest extends PahoTestSupport {
         };
     }
 
+    @Override
+    public CamelContextExtension getCamelContextExtension() {
+        return camelContextExtension;
+    }
+
+    @BeforeEach
+    void setUpRequirements() {
+        template = getCamelContextExtension().getProducerTemplate();
+    }
 }