You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2023/06/08 16:50:31 UTC
[camel] branch main updated: CAMEL-18608: camel-itest - Avoid client and server resources mix-up (#10295)
This is an automated email from the ASF dual-hosted git repository.
nfilotto 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 028bea6e1f2 CAMEL-18608: camel-itest - Avoid client and server resources mix-up (#10295)
028bea6e1f2 is described below
commit 028bea6e1f2f647f5d0908410e2a55a29ca00da7
Author: Nicolas Filotto <es...@users.noreply.github.com>
AuthorDate: Thu Jun 8 18:50:24 2023 +0200
CAMEL-18608: camel-itest - Avoid client and server resources mix-up (#10295)
## Motivation
The test `FromJmsToJdbcIdempotentConsumerToJmsXaTest.testJmsToJdbcJmsRollbackAtA` is failing on Jenkins and should be fixed.
## Modifications:
* Start by checking the DLQ queue to prevent a mix-up between client and server resources being part of the same transaction
* Code cleanup
---
.../FromJmsToJdbcIdempotentConsumerToJmsTest.java | 36 ++++++++++------------
...FromJmsToJdbcIdempotentConsumerToJmsXaTest.java | 2 --
.../utils/extensions/JmsServiceExtension.java | 28 ++++-------------
.../FromJmsToJdbcIdempotentConsumerToJmsTest.xml | 4 +--
.../FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml | 4 +--
5 files changed, 25 insertions(+), 49 deletions(-)
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java
index 9ffa799cd78..cde02d59868 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java
@@ -26,9 +26,7 @@ import org.apache.camel.Processor;
import org.apache.camel.builder.NotifyBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.itest.ITestSupport;
import org.apache.camel.itest.utils.extensions.JmsServiceExtension;
-import org.apache.camel.spi.IdempotentRepository;
import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -51,7 +49,6 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
@RegisterExtension
public static JmsServiceExtension jmsServiceExtension = JmsServiceExtension.createExtension();
- // this logger is used both by this class as well as FromJmsToJdbcIdempotentConsumerToJmsXaTest, so why not static
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private JdbcTemplate jdbcTemplate;
@@ -64,7 +61,6 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
@Override
protected AbstractApplicationContext createApplicationContext() {
- ITestSupport.getPort2();
return new ClassPathXmlApplicationContext("org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml");
}
@@ -83,7 +79,7 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
}
@Test
- void testJmsToJdbcJmsCommit() throws Exception {
+ void testJmsToJdbcJmsCommit() {
checkInitialState();
mockA.expectedMessageCount(1);
@@ -104,7 +100,7 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
}
@Test
- void testJmsToJdbcJmsRollbackAtA() throws Exception {
+ void testJmsToJdbcJmsRollbackAtA() {
checkInitialState();
mockA.expectedMessageCount(7);
@@ -121,16 +117,18 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
assertTrue(notify.matchesWaitTime(), "Should complete 7 messages");
- // check that there is no message in the database and JMS queue
- assertEquals(0, jdbcTemplate.queryForObject("select count(*) from CAMEL_MESSAGEPROCESSED", int.class));
- assertNull(consumer.receiveBody("activemq2:queue:outbox", 3000));
+ // Start by checking the DLQ queue to prevent a mix-up between client and server resources being part of the same transaction
// the message should have been moved to the AMQ DLQ queue
assertEquals("A", consumer.receiveBody("activemq2:queue:DLQ", 3000));
+
+ // check that there is no message in the database and JMS queue
+ assertEquals(0, jdbcTemplate.queryForObject("select count(*) from CAMEL_MESSAGEPROCESSED", int.class));
+ assertNull(consumer.receiveBody("activemq2:queue:outbox", 3000));
}
@Test
- void testJmsToJdbcJmsRollbackAtB() throws Exception {
+ void testJmsToJdbcJmsRollbackAtB() {
checkInitialState();
mockA.expectedMessageCount(7);
@@ -147,16 +145,18 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
assertTrue(notify.matchesWaitTime(), "Should complete 7 messages");
- // check that there is no message in the database and JMS queue
- assertEquals(0, jdbcTemplate.queryForObject("select count(*) from CAMEL_MESSAGEPROCESSED", int.class));
- assertNull(consumer.receiveBody("activemq2:queue:outbox", 3000));
+ // Start by checking the DLQ queue to prevent a mix-up between client and server resources being part of the same transaction
// the message should have been moved to the AMQ DLQ queue
assertEquals("B", consumer.receiveBody("activemq2:queue:DLQ", 3000));
+
+ // check that there is no message in the database and JMS queue
+ assertEquals(0, jdbcTemplate.queryForObject("select count(*) from CAMEL_MESSAGEPROCESSED", int.class));
+ assertNull(consumer.receiveBody("activemq2:queue:outbox", 3000));
}
@Test
- void testFilterIdempotent() throws Exception {
+ void testFilterIdempotent() {
checkInitialState();
mockA.expectedMessageCount(3);
@@ -179,7 +179,7 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
}
@Test
- void testRetryAfterException() throws Exception {
+ void testRetryAfterException() {
checkInitialState();
mockA.expectedMessageCount(4);
@@ -226,13 +226,11 @@ public class FromJmsToJdbcIdempotentConsumerToJmsTest extends CamelSpringTestSup
return new RouteBuilder() {
@Override
public void configure() {
- IdempotentRepository repository
- = context.getRegistry().lookupByNameAndType("messageIdRepository", IdempotentRepository.class);
-
from("activemq2:queue:inbox")
.transacted("required")
.to(mockA)
- .idempotentConsumer(header("uid"), repository)
+ .idempotentConsumer(header("uid"))
+ .idempotentRepository("messageIdRepository")
.to(mockB)
.transform(simple("DONE-${body}"))
.to("activemq2:queue:outbox");
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java
index 1beae85a84e..aacd8e93710 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java
@@ -19,7 +19,6 @@ package org.apache.camel.itest.sql;
import java.sql.DriverManager;
import java.sql.SQLException;
-import org.apache.camel.itest.ITestSupport;
import org.apache.camel.itest.utils.extensions.JmsServiceExtension;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -69,7 +68,6 @@ public class FromJmsToJdbcIdempotentConsumerToJmsXaTest extends FromJmsToJdbcIde
@Override
protected AbstractApplicationContext createApplicationContext() {
- ITestSupport.getPort1();
return new ClassPathXmlApplicationContext("org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml");
}
}
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/JmsServiceExtension.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/JmsServiceExtension.java
index 7a02c12672d..f4b5f035002 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/JmsServiceExtension.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/utils/extensions/JmsServiceExtension.java
@@ -29,37 +29,30 @@ import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.itest.CamelJmsTestHelper;
-import org.junit.jupiter.api.extension.AfterAllCallback;
-import org.junit.jupiter.api.extension.BeforeAllCallback;
-import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.Extension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
import static org.junit.jupiter.api.Assertions.fail;
-public final class JmsServiceExtension implements BeforeAllCallback, AfterAllCallback {
+public final class JmsServiceExtension implements Extension {
private static final Logger LOG = LoggerFactory.getLogger(JmsServiceExtension.class);
private static JmsServiceExtension instance;
- private JmsComponent amq;
-
- private EmbeddedActiveMQ embeddedBrokerService;
-
- private Configuration artemisConfiguration;
- private String brokerURL;
+ private final JmsComponent amq;
private JmsServiceExtension() throws JMSException {
- embeddedBrokerService = new EmbeddedActiveMQ();
+ EmbeddedActiveMQ embeddedBrokerService = new EmbeddedActiveMQ();
- artemisConfiguration = new ConfigurationImpl();
+ Configuration artemisConfiguration = new ConfigurationImpl();
artemisConfiguration.setSecurityEnabled(false);
artemisConfiguration.setBrokerInstance(new File("target", "artemis-itest-jms"));
artemisConfiguration.setJMXManagementEnabled(false);
artemisConfiguration.setPersistenceEnabled(false);
- brokerURL = "vm://itest-jms";
+ String brokerURL = "vm://itest-jms";
try {
artemisConfiguration.addAcceptorConfiguration("in-vm", brokerURL);
} catch (Exception e) {
@@ -87,15 +80,6 @@ public final class JmsServiceExtension implements BeforeAllCallback, AfterAllCal
connectionFactory.createConnection();
}
- @Override
- public void afterAll(ExtensionContext extensionContext) throws Exception {
- }
-
- @Override
- public void beforeAll(ExtensionContext extensionContext) throws Exception {
-
- }
-
public JmsComponent getComponent() {
return amq;
}
diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml
index 63901ec9c6b..a49f0f24cb7 100644
--- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml
+++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml
@@ -19,11 +19,9 @@
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:broker="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
- http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+ http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
diff --git a/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml b/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml
index 45b915e913c..be36cdc7927 100644
--- a/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml
+++ b/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml
@@ -18,10 +18,8 @@
-->
<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:broker="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>