You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bv...@apache.org on 2012/12/08 09:17:53 UTC
svn commit: r1418620 - in /camel/branches/camel-2.9.x: ./ tests/camel-itest/
tests/camel-itest/src/test/java/org/apache/camel/itest/sql/
tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/
tests/camel-itest/src/test/resources/sql/
Author: bvahdat
Date: Sat Dec 8 08:17:52 2012
New Revision: 1418620
URL: http://svn.apache.org/viewvc?rev=1418620&view=rev
Log:
Merged revisions 1418618 via svnmerge from
https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x
................
r1418618 | bvahdat | 2012-12-08 09:05:20 +0100 (Sa, 08 Dez 2012) | 9 lines
Merged revisions 1418616 via svnmerge from
https://svn.apache.org/repos/asf/camel/trunk
........
r1418616 | bvahdat | 2012-12-08 08:53:20 +0100 (Sa, 08 Dez 2012) | 1 line
CAMEL-5856: Fix and reenable the two JMS/JDBC Integration tests.
........
................
Removed:
camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/sql/init2.sql
Modified:
camel/branches/camel-2.9.x/ (props changed)
camel/branches/camel-2.9.x/tests/camel-itest/pom.xml
camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java
camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java
camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml
camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml
Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Merged /camel/trunk:r1418616
Merged /camel/branches/camel-2.10.x:r1418618
Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.9.x/tests/camel-itest/pom.xml
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/tests/camel-itest/pom.xml?rev=1418620&r1=1418619&r2=1418620&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/tests/camel-itest/pom.xml (original)
+++ camel/branches/camel-2.9.x/tests/camel-itest/pom.xml Sat Dec 8 08:17:52 2012
@@ -335,12 +335,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
- <excludes>
- <!-- TODO FIXME ASAP -->
- <exclude>**/XXXTest.*</exclude>
- <exclude>**/FromJmsToJdbcIdempotentConsumerToJmsTest.*</exclude>
- <exclude>**/FromJmsToJdbcIdempotentConsumerToJmsXaTest.*</exclude>
- </excludes>
<systemProperties>
<property>
<name>java.util.logging.config.file</name>
@@ -350,6 +344,10 @@
<name>org.apache.activemq.default.directory.prefix</name>
<value>target/</value>
</property>
+ <property>
+ <name>derby.stream.error.file</name>
+ <value>target/derby.log</value>
+ </property>
</systemProperties>
</configuration>
</plugin>
Modified: camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java?rev=1418620&r1=1418619&r2=1418620&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java (original)
+++ camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.java Sat Dec 8 08:17:52 2012
@@ -51,11 +51,15 @@ public class FromJmsToJdbcIdempotentCons
public void setUp() throws Exception {
super.setUp();
- dataSource = context.getRegistry().lookup("myNonXADataSource", DataSource.class);
+ dataSource = context.getRegistry().lookup(getDatasourceName(), DataSource.class);
jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.afterPropertiesSet();
}
+ protected String getDatasourceName() {
+ return "myNonXADataSource";
+ }
+
@Test
public void testJmsToJdbcJmsCommit() throws Exception {
checkInitialState();
@@ -74,7 +78,7 @@ public class FromJmsToJdbcIdempotentCons
assertTrue("Should complete 1 message", notify.matchesMockWaitTime());
// check that there is a message in the database and JMS queue
- assertEquals(1, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
+ assertEquals(1, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
Object out = consumer.receiveBody("activemq:queue:outbox", 3000);
assertEquals("DONE-A", out);
}
@@ -86,6 +90,7 @@ public class FromJmsToJdbcIdempotentCons
// use a notify to know that after 1+6 (1 original + 6 redelivery) attempts from AcitveMQ
NotifyBuilder notify = new NotifyBuilder(context).whenDone(7).create();
+ // TODO: occasionally we get only 6 instead of 7 expected exchanges which's most probably an issue in AcitveMQ itself
getMockEndpoint("mock:a").expectedMessageCount(7);
// force exception to occur at mock a
getMockEndpoint("mock:a").whenAnyExchangeReceived(new Processor() {
@@ -103,7 +108,7 @@ public class FromJmsToJdbcIdempotentCons
assertTrue("Should complete 7 message", notify.matchesMockWaitTime());
// check that there is a message in the database and JMS queue
- assertEquals(0, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
+ assertEquals(0, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
assertNull(consumer.receiveBody("activemq:queue:outbox", 3000));
// the message should have been moved to the AMQ DLQ queue
@@ -134,7 +139,7 @@ public class FromJmsToJdbcIdempotentCons
assertTrue("Should complete 7 messages", notify.matchesMockWaitTime());
// check that there is a message in the database and JMS queue
- assertEquals(0, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
+ assertEquals(0, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
assertNull(consumer.receiveBody("activemq:queue:outbox", 3000));
// the message should have been moved to the AMQ DLQ queue
@@ -162,17 +167,17 @@ public class FromJmsToJdbcIdempotentCons
assertTrue("Should complete 3 messages", notify.matchesMockWaitTime());
// check that there is two messages in the database and JMS queue
- assertEquals(2, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
+ assertEquals(2, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
assertEquals("DONE-D", consumer.receiveBody("activemq:queue:outbox", 3000));
assertEquals("DONE-E", consumer.receiveBody("activemq:queue:outbox", 3000));
}
-
+
@Test
public void testRetryAfterException() throws Exception {
checkInitialState();
-
+
final AtomicInteger counter = new AtomicInteger();
-
+
// use a notify to know when the message is done
NotifyBuilder notify = new NotifyBuilder(context).whenDone(4).create();
@@ -198,25 +203,24 @@ public class FromJmsToJdbcIdempotentCons
assertTrue("Should complete 4 messages", notify.matchesMockWaitTime());
// check that there is two messages in the database and JMS queue
- assertEquals(3, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
+ assertEquals(3, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
assertEquals("DONE-D", consumer.receiveBody("activemq:queue:outbox", 3000));
assertEquals("DONE-E", consumer.receiveBody("activemq:queue:outbox", 3000));
assertEquals("DONE-F", consumer.receiveBody("activemq:queue:outbox", 3000));
}
-
+
protected void checkInitialState() {
// check there are no messages in the database and JMS queue
- assertEquals(0, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
+ assertEquals(0, jdbcTemplate.queryForInt("select count(*) from CAMEL_MESSAGEPROCESSED"));
assertNull(consumer.receiveBody("activemq:queue:outbox", 2000));
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
- @SuppressWarnings("unchecked")
@Override
public void configure() throws Exception {
- IdempotentRepository<String> repository = context.getRegistry().lookup("messageIdRepository", IdempotentRepository.class);
+ IdempotentRepository<?> repository = context.getRegistry().lookup("messageIdRepository", IdempotentRepository.class);
from("activemq:queue:inbox")
.transacted("required")
Modified: camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java?rev=1418620&r1=1418619&r2=1418620&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java (original)
+++ camel/branches/camel-2.9.x/tests/camel-itest/src/test/java/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.java Sat Dec 8 08:17:52 2012
@@ -16,15 +16,47 @@
*/
package org.apache.camel.itest.sql;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import org.junit.After;
+import org.junit.Before;
+
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
- * Jms with JDBC idempotent consumer using XA test.
+ * Jms with JDBC idempotent consumer test using XA.
*/
public class FromJmsToJdbcIdempotentConsumerToJmsXaTest extends FromJmsToJdbcIdempotentConsumerToJmsTest {
@Override
+ @Before
+ public void setUp() throws Exception {
+ deleteDirectory("target/testdb");
+
+ super.setUp();
+ }
+
+ @Override
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+
+ // shutdown the embedded Derby database so that the next test becomes a clean initial state
+ try {
+ DriverManager.getConnection("jdbc:derby:target/testdb;shutdown=true");
+ } catch (SQLException e) {
+ // a successful shutdown always results in an SQLException to indicate that Derby has shut down and that there is no other exception.
+ }
+ }
+
+ @Override
+ protected String getDatasourceName() {
+ return "myXADataSource";
+ }
+
+ @Override
protected AbstractApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext("org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml");
}
Modified: camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml?rev=1418620&r1=1418619&r2=1418620&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml (original)
+++ camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsTest.xml Sat Dec 8 08:17:52 2012
@@ -24,9 +24,9 @@
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.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-5.5.0.xsd">
+ http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
- <!-- jdbc idempotent repository -->
+ <!-- jdbc idempotent repository, per default creates the table CAMEL_MESSAGEPROCESSED if not already existing -->
<bean id="messageIdRepository" class="org.apache.camel.processor.idempotent.jdbc.JdbcMessageIdRepository">
<constructor-arg index="0" ref="myNonXADataSource"/>
<constructor-arg index="1" value="myProcessor"/>
@@ -67,7 +67,5 @@
</broker:broker>
<!-- datasource used to create the database tables -->
- <jdbc:embedded-database id="myNonXADataSource" type="DERBY">
- <jdbc:script location="classpath:sql/init2.sql" />
- </jdbc:embedded-database>
+ <jdbc:embedded-database id="myNonXADataSource" type="DERBY"/>
</beans>
\ No newline at end of file
Modified: camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml?rev=1418620&r1=1418619&r2=1418620&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml (original)
+++ camel/branches/camel-2.9.x/tests/camel-itest/src/test/resources/org/apache/camel/itest/sql/FromJmsToJdbcIdempotentConsumerToJmsXaTest.xml Sat Dec 8 08:17:52 2012
@@ -24,11 +24,11 @@
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.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-5.5.0.xsd">
+ http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
- <!-- jdbc idempotent repository -->
+ <!-- jdbc idempotent repository, per default creates the table CAMEL_MESSAGEPROCESSED if not already existing -->
<bean id="messageIdRepository" class="org.apache.camel.processor.idempotent.jdbc.JdbcMessageIdRepository">
- <constructor-arg index="0" ref="myDataSource"/>
+ <constructor-arg index="0" ref="myXADataSource"/>
<constructor-arg index="1" ref="requiredTemplate"/>
<constructor-arg index="2" value="myProcessor"/>
</bean>
@@ -89,17 +89,10 @@
<broker:transportConnector uri="tcp://localhost:61616"/>
</broker:transportConnectors>
</broker:broker>
-
- <!-- datasource used to create the database tables -->
- <jdbc:embedded-database id="myNonXADataSource" type="DERBY">
- <jdbc:script location="classpath:sql/init.sql" />
- </jdbc:embedded-database>
-
- <!-- define the datasource to the database - in this example we use an in memory database using Derby -->
- <bean id="myDataSource" class="org.apache.derby.jdbc.EmbeddedXADataSource" depends-on="myNonXADataSource">
- <property name="databaseName" value="testdb"/>
- <property name="createDatabase" value="true"/>
- <property name="shutdownDatabase" value="true"/>
+
+ <!-- XA datasource used to create the database tables -->
+ <bean id="myXADataSource" class="org.apache.derby.jdbc.EmbeddedXADataSource">
+ <property name="databaseName" value="target/testdb;create=true"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
</bean>