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();
+ }
}