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");

Reply via email to