You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2016/06/22 17:02:30 UTC

activemq git commit: Add a rollback test that rolls back repeatedly using new connections.

Repository: activemq
Updated Branches:
  refs/heads/master a95d6fd4e -> 94ca7039b


Add a rollback test that rolls back repeatedly using new connections.  

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

Branch: refs/heads/master
Commit: 94ca7039b1a18d6a7b4f4626b410d0bf826c4275
Parents: a95d6fd
Author: Timothy Bish <ta...@gmail.com>
Authored: Wed Jun 22 13:02:14 2016 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Wed Jun 22 13:02:14 2016 -0400

----------------------------------------------------------------------
 .../amqp/JMSClientTransactionTest.java          | 60 +++++++++++++++++++-
 1 file changed, 57 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/94ca7039/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTransactionTest.java
----------------------------------------------------------------------
diff --git a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTransactionTest.java b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTransactionTest.java
index e979714..1251410 100644
--- a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTransactionTest.java
+++ b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTransactionTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
+import javax.jms.Connection;
 import javax.jms.DeliveryMode;
 import javax.jms.Destination;
 import javax.jms.JMSException;
@@ -107,7 +108,7 @@ public class JMSClientTransactionTest extends JMSClientTestSupport {
             TextMessage message = (TextMessage) messageConsumer.receive(1000);
             if (message != null) {
                 counter++;
-                LOG.info("Message n. {} with content '{}' has been recieved.", counter,message.getText());
+                LOG.info("Message n. {} with content '{}' has been recieved.", counter, message.getText());
                 session.commit();
                 LOG.info("Transaction has been committed.");
             }
@@ -144,7 +145,7 @@ public class JMSClientTransactionTest extends JMSClientTestSupport {
             TextMessage message = (TextMessage) messageConsumer.receive(1000);
             if (message != null) {
                 counter++;
-                LOG.info("Message n. {} with content '{}' has been recieved.", counter,message.getText());
+                LOG.info("Message n. {} with content '{}' has been recieved.", counter, message.getText());
             }
         } while (counter < MSG_COUNT);
 
@@ -199,7 +200,7 @@ public class JMSClientTransactionTest extends JMSClientTestSupport {
             LOG.info("Trying to receive message: {}", i);
             TextMessage message = (TextMessage) consumer.receive(1000);
             assertNotNull("Message " + i + " should be available", message);
-            assertEquals("Should get message: " + i, i , message.getIntProperty("MessageSequence"));
+            assertEquals("Should get message: " + i, i, message.getIntProperty("MessageSequence"));
         }
 
         session.commit();
@@ -295,4 +296,57 @@ public class JMSClientTransactionTest extends JMSClientTestSupport {
             }
         }));
     }
+
+    @Test
+    public void testMessageOrderAfterRollback() throws Exception {
+        sendMessages(5);
+
+        int counter = 0;
+        while (counter++ < 10) {
+            connection = createConnection();
+            connection.start();
+
+            Session session = connection.createSession(true, -1);
+            Queue queue = session.createQueue(getDestinationName());
+            MessageConsumer consumer = session.createConsumer(queue);
+
+            Message message = consumer.receive(5000);
+            assertNotNull(message);
+            assertTrue(message instanceof TextMessage);
+
+            int sequenceID = message.getIntProperty("sequenceID");
+            assertEquals(0, sequenceID);
+
+            LOG.info("Read message = {}", ((TextMessage) message).getText());
+            session.rollback();
+            session.close();
+            connection.close();
+        }
+    }
+
+    public void sendMessages(int messageCount) throws JMSException {
+        Connection connection = null;
+        try {
+            connection = createConnection();
+            connection.start();
+
+            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            Queue queue = session.createQueue(getDestinationName());
+
+            for (int i = 0; i < messageCount; ++i) {
+                MessageProducer messageProducer = session.createProducer(queue);
+                TextMessage message = session.createTextMessage("(" + i + ")");
+                message.setIntProperty("sequenceID", i);
+                messageProducer.send(message);
+                LOG.info("Sent message = {}", message.getText());
+            }
+
+        } catch (Exception exp) {
+            exp.printStackTrace(System.out);
+        } finally {
+            if (connection != null) {
+                connection.close();
+            }
+        }
+    }
 }