From 71c4159a87bc9a2b929b4759661487d7c1468bed Mon Sep 17 00:00:00 2001 From: GaetanoPiazzolla Date: Fri, 4 Aug 2023 09:23:30 +0200 Subject: [PATCH 1/3] JAVA-22203 | Forced start and stop + sleep --- ...a => EmbeddedActiveMqIntegrationTest.java} | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) rename messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/{EmbeddedActiveMqManualTest.java => EmbeddedActiveMqIntegrationTest.java} (85%) diff --git a/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqManualTest.java b/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java similarity index 85% rename from messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqManualTest.java rename to messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java index 676dcb1dd8..0625020a06 100644 --- a/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqManualTest.java +++ b/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java @@ -8,6 +8,8 @@ import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.junit.EmbeddedActiveMQBroker; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; @@ -23,11 +25,9 @@ import org.springframework.jms.core.JmsTemplate; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.spring.jms.testing.EmbeddedActiveMqManualTest.TestConfiguration; - @RunWith(SpringRunner.class) -@ContextConfiguration(classes = { TestConfiguration.class }) -public class EmbeddedActiveMqManualTest { +@ContextConfiguration(classes = { EmbeddedActiveMqIntegrationTest.TestConfiguration.class }) +public class EmbeddedActiveMqIntegrationTest { @ClassRule public static EmbeddedActiveMQBroker embeddedBroker = new EmbeddedActiveMQBroker(); @@ -38,12 +38,23 @@ public class EmbeddedActiveMqManualTest { @SpyBean private MessageSender messageSender; + @BeforeClass + public static void start() { + embeddedBroker.start(); + } + + @AfterClass + public static void stop() { + embeddedBroker.stop(); + } + @Test - public void whenListening_thenReceivingCorrectMessage() throws JMSException { + public void whenListening_thenReceivingCorrectMessage() throws JMSException, InterruptedException { String queueName = "queue-1"; String messageText = "Test message"; embeddedBroker.pushMessage(queueName, messageText); + Thread.sleep(1000L); assertEquals(1, embeddedBroker.getMessageCount(queueName)); ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(TextMessage.class); @@ -56,12 +67,12 @@ public class EmbeddedActiveMqManualTest { } @Test - public void whenSendingMessage_thenCorrectQueueAndMessageText() throws JMSException { + public void whenSendingMessage_thenCorrectQueueAndMessageText() throws JMSException, InterruptedException { String queueName = "queue-2"; String messageText = "Test message"; messageSender.sendTextMessage(queueName, messageText); - + Thread.sleep(1000L); assertEquals(1, embeddedBroker.getMessageCount(queueName)); TextMessage sentMessage = embeddedBroker.peekTextMessage(queueName); assertEquals(messageText, sentMessage.getText()); From 51488ba32fd47fed563cc45c1530070f0df4ad1d Mon Sep 17 00:00:00 2001 From: GaetanoPiazzolla Date: Sat, 5 Aug 2023 15:57:27 +0200 Subject: [PATCH 2/3] JAVA-22203 | Fixed race condition. --- .../EmbeddedActiveMqIntegrationTest.java | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java b/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java index 0625020a06..e934b66360 100644 --- a/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java +++ b/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java @@ -8,8 +8,6 @@ import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.junit.EmbeddedActiveMQBroker; -import org.junit.AfterClass; -import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; @@ -38,41 +36,33 @@ public class EmbeddedActiveMqIntegrationTest { @SpyBean private MessageSender messageSender; - @BeforeClass - public static void start() { - embeddedBroker.start(); - } - - @AfterClass - public static void stop() { - embeddedBroker.stop(); - } - @Test public void whenListening_thenReceivingCorrectMessage() throws JMSException, InterruptedException { String queueName = "queue-1"; String messageText = "Test message"; + assertEquals(0, embeddedBroker.getDestination(queueName).getDestinationStatistics().getDispatched().getCount()); + assertEquals(0, embeddedBroker.getDestination(queueName).getDestinationStatistics().getMessages().getCount()); + embeddedBroker.pushMessage(queueName, messageText); - Thread.sleep(1000L); - assertEquals(1, embeddedBroker.getMessageCount(queueName)); ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(TextMessage.class); - Mockito.verify(messageListener, Mockito.timeout(100)) .sampleJmsListenerMethod(messageCaptor.capture()); - + TextMessage receivedMessage = messageCaptor.getValue(); assertEquals(messageText, receivedMessage.getText()); + + assertEquals(1, embeddedBroker.getDestination(queueName).getDestinationStatistics().getDispatched().getCount()); + assertEquals(0, embeddedBroker.getDestination(queueName).getDestinationStatistics().getMessages().getCount()); } @Test - public void whenSendingMessage_thenCorrectQueueAndMessageText() throws JMSException, InterruptedException { + public void whenSendingMessage_thenCorrectQueueAndMessageText() throws JMSException { String queueName = "queue-2"; String messageText = "Test message"; messageSender.sendTextMessage(queueName, messageText); - Thread.sleep(1000L); assertEquals(1, embeddedBroker.getMessageCount(queueName)); TextMessage sentMessage = embeddedBroker.peekTextMessage(queueName); assertEquals(messageText, sentMessage.getText()); From de718f09500c2d50a6eb4d21bdaf281466083431 Mon Sep 17 00:00:00 2001 From: GaetanoPiazzolla Date: Sat, 5 Aug 2023 16:00:34 +0200 Subject: [PATCH 3/3] JAVA-22203 | removed unused throws --- .../spring/jms/testing/EmbeddedActiveMqIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java b/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java index e934b66360..f88cf81cf7 100644 --- a/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java +++ b/messaging-modules/spring-jms/src/test/java/com/baeldung/spring/jms/testing/EmbeddedActiveMqIntegrationTest.java @@ -37,7 +37,7 @@ public class EmbeddedActiveMqIntegrationTest { private MessageSender messageSender; @Test - public void whenListening_thenReceivingCorrectMessage() throws JMSException, InterruptedException { + public void whenListening_thenReceivingCorrectMessage() throws JMSException { String queueName = "queue-1"; String messageText = "Test message";