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 b979c10 (chores) camel-activemq: cleaned up tests to avoid Thread.sleep calls b979c10 is described below commit b979c10cdcdd64be6f653550d1ddafc2deda9ad3 Author: Otavio Rodolfo Piske <opi...@redhat.com> AuthorDate: Mon Oct 18 15:22:33 2021 +0200 (chores) camel-activemq: cleaned up tests to avoid Thread.sleep calls --- .../camel/component/activemq/AMQ2611Test.java | 25 ++++++++++++++-- ...ample.java => AdvisoryConsumerExampleTest.java} | 8 ++---- .../component/activemq/ObjectMessageTest.java | 33 ++++++++++++++++++---- .../component/activemq/PoisonJMSPayloadTest.java | 20 +++++++++---- 4 files changed, 67 insertions(+), 19 deletions(-) diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AMQ2611Test.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AMQ2611Test.java index 9d30a40..c791826 100644 --- a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AMQ2611Test.java +++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AMQ2611Test.java @@ -16,12 +16,16 @@ */ package org.apache.camel.component.activemq; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + import org.apache.camel.Body; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.activemq.support.ActiveMQSupport; import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.support.LifecycleStrategySupport; import org.apache.camel.test.infra.activemq.services.ActiveMQEmbeddedService; import org.apache.camel.test.infra.activemq.services.ActiveMQEmbeddedServiceBuilder; import org.junit.jupiter.api.Test; @@ -42,6 +46,8 @@ public class AMQ2611Test implements ActiveMQSupport { .build(); private CamelContext camelContext; + private CountDownLatch startedLatch = new CountDownLatch(1); + private CountDownLatch stoppedLatch = new CountDownLatch(1); public static class Consumer { public void consume(@Body String message) { @@ -60,6 +66,21 @@ public class AMQ2611Test implements ActiveMQSupport { from(queueEndpointName).bean(Consumer.class, "consume"); } }); + + camelContext.addLifecycleStrategy(new LifecycleStrategySupport() { + @Override + public void onContextStarted(CamelContext context) { + super.onContextStarted(context); + startedLatch.countDown(); + } + + @Override + public void onContextStopped(CamelContext context) { + super.onContextStopped(context); + stoppedLatch.countDown(); + } + }); + camelContext.start(); final ProducerTemplate producerTemplate = camelContext.createProducerTemplate(); producerTemplate.sendBody(queueEndpointName, "message"); @@ -77,9 +98,9 @@ public class AMQ2611Test implements ActiveMQSupport { int i = 0; while (i++ < 5) { createCamelContext(); - Thread.sleep(1000); + startedLatch.await(1, TimeUnit.SECONDS); destroyCamelContext(); - Thread.sleep(1000); + stoppedLatch.await(1, TimeUnit.SECONDS); assertEquals(0, service.getConnectionCount()); } } catch (Exception e) { diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AdvisoryConsumerExample.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AdvisoryConsumerExampleTest.java similarity index 96% rename from components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AdvisoryConsumerExample.java rename to components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AdvisoryConsumerExampleTest.java index 99aa6b5..311cc42 100644 --- a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AdvisoryConsumerExample.java +++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/AdvisoryConsumerExampleTest.java @@ -35,16 +35,14 @@ import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; /** * */ -public class AdvisoryConsumerExample extends ActiveMQTestSupport { - private static final Logger LOG = LoggerFactory.getLogger(AdvisoryConsumerExample.class); +public class AdvisoryConsumerExampleTest extends ActiveMQTestSupport { + private static final Logger LOG = LoggerFactory.getLogger(AdvisoryConsumerExampleTest.class); - @Test() + @Test public void testWorks() throws Exception { // lets create a new queue assertDoesNotThrow( () -> template.sendBody("activemq:NewQueue." + System.currentTimeMillis(), "<hello>world!</hello>")); - - Thread.sleep(10000); } @Override diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ObjectMessageTest.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ObjectMessageTest.java index 3b9b2a0..6e9192a 100644 --- a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ObjectMessageTest.java +++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ObjectMessageTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.activemq; import javax.jms.Connection; +import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Session; @@ -28,17 +29,24 @@ import org.apache.camel.component.jms.JmsBinding; import org.apache.camel.component.jms.JmsMessage; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.support.ExchangeHelper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class ObjectMessageTest extends ActiveMQSpringTestSupport { - @Test - public void testUntrusted() throws Exception { - ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(vmUri()); + private ActiveMQConnectionFactory factory; + + @BeforeEach + public void setupBroker() throws JMSException { + factory = new ActiveMQConnectionFactory(vmUri()); Connection conn = factory.createConnection(); conn.start(); Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); @@ -48,27 +56,40 @@ public class ObjectMessageTest extends ActiveMQSpringTestSupport { payload.payload = "test"; msg.setObject(payload); producer.send(msg); + } - Thread.sleep(1000); - + @Order(1) + @Test + public void testUntrusted() throws Exception { MockEndpoint resultActiveMQ = resolveMandatoryEndpoint("mock:result-activemq", MockEndpoint.class); resultActiveMQ.expectedMessageCount(1); resultActiveMQ.assertIsNotSatisfied(); + } + @Order(2) + @Test + public void testTrusted() throws InterruptedException { MockEndpoint resultTrusted = resolveMandatoryEndpoint("mock:result-trusted", MockEndpoint.class); resultTrusted.expectedMessageCount(1); resultTrusted.assertIsSatisfied(); assertCorrectObjectReceived(resultTrusted); + } + @Order(3) + @Test + public void testResultCamel() throws InterruptedException { MockEndpoint resultCamel = resolveMandatoryEndpoint("mock:result-camel", MockEndpoint.class); resultCamel.expectedMessageCount(1); resultCamel.assertIsSatisfied(); assertCorrectObjectReceived(resultCamel); + } + @Order(4) + @Test + public void testResultEmpty() throws InterruptedException { MockEndpoint resultEmpty = resolveMandatoryEndpoint("mock:result-empty", MockEndpoint.class); resultEmpty.expectedMessageCount(1); resultEmpty.assertIsNotSatisfied(); - } protected void assertCorrectObjectReceived(MockEndpoint result) { diff --git a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/PoisonJMSPayloadTest.java b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/PoisonJMSPayloadTest.java index 44537c0..359ac8f 100644 --- a/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/PoisonJMSPayloadTest.java +++ b/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/PoisonJMSPayloadTest.java @@ -17,39 +17,47 @@ package org.apache.camel.component.activemq; import javax.jms.Connection; +import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Session; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.camel.component.activemq.support.ActiveMQSpringTestSupport; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; public class PoisonJMSPayloadTest extends ActiveMQSpringTestSupport { - @Test - public void testCreateBodyThrowException() throws Exception { + private ActiveMQConnectionFactory factory; + private Session sess; + + @BeforeEach + public void setupTest() throws JMSException { getMockEndpoint("mock:result-activemq").expectedMessageCount(0); getMockEndpoint("mock:dead").expectedMessageCount(1); getMockEndpoint("mock:dead").message(0).body(String.class) .startsWith( "Poison JMS message payload: Failed to extract body due to: javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker."); - ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(vmUri()); + factory = new ActiveMQConnectionFactory(vmUri()); Connection conn = factory.createConnection(); conn.start(); - Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer producer = sess.createProducer(sess.createTopic("foo")); ObjectMessage msg = sess.createObjectMessage(); + ObjectPayload payload = new ObjectPayload(); payload.payload = "test"; msg.setObject(payload); producer.send(msg); + } - Thread.sleep(1000); - + @Test + public void testCreateBodyThrowException() throws Exception { // bean should not be invoked boolean invoked = context.getRegistry().lookupByNameAndType("myBean", MyBean.class).isInvoked(); assertFalse(invoked, "Bean should not be invoked");