You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2016/09/02 10:27:28 UTC

activemq git commit: TrapMessageInJDBCStoreTest - intermittent ci failure. Avoid contention on datasource, use long lived connection for assertions

Repository: activemq
Updated Branches:
  refs/heads/master 508df5359 -> a3f1aa0bd


TrapMessageInJDBCStoreTest - intermittent ci failure. Avoid contention on datasource, use long lived connection for assertions


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/a3f1aa0b
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/a3f1aa0b
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/a3f1aa0b

Branch: refs/heads/master
Commit: a3f1aa0bdad56cd896b3fb3d5b99137a0978f215
Parents: 508df53
Author: gtully <ga...@gmail.com>
Authored: Fri Sep 2 11:27:12 2016 +0100
Committer: gtully <ga...@gmail.com>
Committed: Fri Sep 2 11:27:12 2016 +0100

----------------------------------------------------------------------
 .../bugs/TrapMessageInJDBCStoreTest.java        | 55 +++++++++++---------
 1 file changed, 29 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/a3f1aa0b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/TrapMessageInJDBCStoreTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/TrapMessageInJDBCStoreTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/TrapMessageInJDBCStoreTest.java
index 3bf4bbd..18b7c21 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/TrapMessageInJDBCStoreTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/TrapMessageInJDBCStoreTest.java
@@ -22,9 +22,6 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 import javax.jms.Connection;
 import javax.jms.DeliveryMode;
 import javax.jms.Destination;
@@ -47,7 +44,6 @@ import org.apache.derby.jdbc.EmbeddedDataSource;
 import org.apache.log4j.Level;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.slf4j.impl.Log4jLoggerAdapter;
 
 /**
  * Test to demostrate a message trapped in the JDBC store and not
@@ -69,6 +65,7 @@ public class TrapMessageInJDBCStoreTest extends TestCase {
     private BrokerService broker;
     private TestTransactionContext testTransactionContext;
     private TestJDBCPersistenceAdapter jdbc;
+    private java.sql.Connection checkOnStoreConnection;
 
     protected BrokerService createBroker(boolean withJMX) throws Exception {
         BrokerService broker = new BrokerService();
@@ -76,6 +73,8 @@ public class TrapMessageInJDBCStoreTest extends TestCase {
         broker.setUseJmx(withJMX);
 
         EmbeddedDataSource embeddedDataSource = (EmbeddedDataSource) DataSourceServiceSupport.createDataSource(IOHelper.getDefaultDataDirectory());
+        checkOnStoreConnection = embeddedDataSource.getConnection();
+
 
         //wire in a TestTransactionContext (wrapper to TransactionContext) that has an executeBatch()
         // method that can be configured to throw a SQL exception on demand
@@ -118,31 +117,37 @@ public class TrapMessageInJDBCStoreTest extends TestCase {
         broker.start();
         broker.waitUntilStarted();
 
-        LOG.info("***Broker started...");
+        try {
+            LOG.info("***Broker started...");
 
-        // failover but timeout in 5 seconds so the test does not hang
-        String failoverTransportURL = "failover:(" + transportUrl
-                + ")?timeout=5000";
+            // failover but timeout in 5 seconds so the test does not hang
+            String failoverTransportURL = "failover:(" + transportUrl
+                    + ")?timeout=5000";
 
 
-        sendMessage(MY_TEST_Q, failoverTransportURL);
+            sendMessage(MY_TEST_Q, failoverTransportURL);
 
-        //check db contents
-        ArrayList<Long> dbSeq = dbMessageCount();
-        LOG.info("*** after send: db contains message seq " +dbSeq );
+            //check db contents
+            ArrayList<Long> dbSeq = dbMessageCount(checkOnStoreConnection);
+            LOG.info("*** after send: db contains message seq " + dbSeq);
 
-        List<TextMessage> consumedMessages = consumeMessages(MY_TEST_Q,failoverTransportURL);
+            List<TextMessage> consumedMessages = consumeMessages(MY_TEST_Q, failoverTransportURL);
 
-        assertEquals("number of consumed messages",3,consumedMessages.size());
+            assertEquals("number of consumed messages", 3, consumedMessages.size());
 
-        //check db contents
-        dbSeq = dbMessageCount();
-        LOG.info("*** after consume - db contains message seq " + dbSeq);
+            //check db contents
+            dbSeq = dbMessageCount(checkOnStoreConnection);
+            LOG.info("*** after consume - db contains message seq " + dbSeq);
 
-        assertEquals("number of messages in DB after test",0,dbSeq.size());
+            assertEquals("number of messages in DB after test", 0, dbSeq.size());
 
-        broker.stop();
-        broker.waitUntilStopped();
+        } finally {
+            try {
+                checkOnStoreConnection.close();
+            } catch (Exception ignored) {}
+            broker.stop();
+            broker.waitUntilStopped();
+        }
     }
 
 
@@ -212,7 +217,7 @@ public class TrapMessageInJDBCStoreTest extends TestCase {
             producer.send(m);
 
             //check db contents
-            ArrayList<Long> dbSeq = dbMessageCount();
+            ArrayList<Long> dbSeq = dbMessageCount(checkOnStoreConnection);
             LOG.info("*** after send 2 - db contains message seq " + dbSeq);
             assertEquals("number of messages in DB after send 2",2,dbSeq.size());
 
@@ -233,10 +238,10 @@ public class TrapMessageInJDBCStoreTest extends TestCase {
      * @return
      * @throws SQLException
      * @throws IOException
+     * @param checkOnStoreConnection
      */
-    private ArrayList<Long> dbMessageCount() throws SQLException, IOException {
-        java.sql.Connection conn = ((JDBCPersistenceAdapter) broker.getPersistenceAdapter()).getDataSource().getConnection();
-        PreparedStatement statement = conn.prepareStatement("SELECT MSGID_SEQ FROM ACTIVEMQ_MSGS");
+    private ArrayList<Long> dbMessageCount(java.sql.Connection checkOnStoreConnection) throws SQLException, IOException {
+        PreparedStatement statement = checkOnStoreConnection.prepareStatement("SELECT MSGID_SEQ FROM ACTIVEMQ_MSGS");
 
         try{
 
@@ -251,8 +256,6 @@ public class TrapMessageInJDBCStoreTest extends TestCase {
 
         }finally{
             statement.close();
-            conn.close();
-
         }
 
     }