You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2015/01/16 15:59:10 UTC

[5/6] qpid-jms git commit: add test using receive() that recovers after recieving some of the messages and verifies order

add test using receive() that recovers after recieving some of the messages and verifies order


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

Branch: refs/heads/master
Commit: ee76de02651ea3dcee3f54ea28c22e601bdb2631
Parents: 77eb16a
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 16 13:00:42 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 16 13:02:38 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/consumer/JmsClientAckTest.java     | 51 ++++++++++++++++++++
 1 file changed, 51 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ee76de02/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsClientAckTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsClientAckTest.java b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsClientAckTest.java
index 009c88d..e93f554 100644
--- a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsClientAckTest.java
+++ b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsClientAckTest.java
@@ -21,6 +21,8 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
@@ -37,6 +39,7 @@ import javax.jms.TextMessage;
 
 import org.apache.activemq.broker.jmx.QueueViewMBean;
 import org.apache.qpid.jms.support.AmqpTestSupport;
+import org.apache.qpid.jms.support.QpidJmsTestSupport;
 import org.apache.qpid.jms.support.Wait;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -315,6 +318,54 @@ public class JmsClientAckTest extends AmqpTestSupport {
         rec4.acknowledge();
     }
 
+    @Test(timeout = 60000)
+    public void testReceiveSomeThenRecover() throws Exception {
+        connection = createAmqpConnection();
+        connection.start();
+
+        int totalCount = 5;
+        int consumeBeforeRecover = 2;
+
+        Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+        Queue queue = session.createQueue(name.getMethodName());
+
+        sendMessages(connection, queue, totalCount);
+
+        QueueViewMBean proxy = getProxyToQueue(name.getMethodName());
+        assertEquals(totalCount, proxy.getQueueSize());
+
+        MessageConsumer consumer = session.createConsumer(queue);
+
+        for(int i = 1; i <= consumeBeforeRecover; i++) {
+            Message message = consumer.receive(1000);
+            assertNotNull(message);
+            assertEquals("Unexpected message number", i, message.getIntProperty(QpidJmsTestSupport.MESSAGE_NUMBER));
+        }
+
+        session.recover();
+
+        assertEquals(totalCount, proxy.getQueueSize());
+
+        // Consume again.. the previously consumed messages should get delivered
+        // again after the recover and then the remainder should follow
+        List<Integer> messageNumbers = new ArrayList<Integer>();
+        for (int i = 1; i <= totalCount; i++) {
+            Message message = consumer.receive(1000);
+            assertNotNull("Failed to receive message: " + i, message);
+            int msgNum = message.getIntProperty(QpidJmsTestSupport.MESSAGE_NUMBER);
+            messageNumbers.add(msgNum);
+
+            if(i == totalCount) {
+                message.acknowledge();
+            }
+        }
+
+        assertEquals("Unexpected size of list", totalCount, messageNumbers.size());
+        for (int i = 0; i < messageNumbers.size(); i++) {
+            assertEquals("Unexpected order of messages: " + messageNumbers, Integer.valueOf(i + 1), messageNumbers.get(i));
+        }
+    }
+
     @Test(timeout=60000)
     public void testRecoverRedelivery() throws Exception {
         final CountDownLatch redelivery = new CountDownLatch(6);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org