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:07 UTC

[2/6] qpid-jms git commit: make test more stringent, expose issue with order after session.recover()

make test more stringent, expose issue with order after session.recover()


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

Branch: refs/heads/master
Commit: 2ca35e9bd3864ffac59a37dc0072a70f391ce75c
Parents: b3d538c
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Jan 16 12:01:19 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Jan 16 12:01:19 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/consumer/JmsAutoAckTest.java       | 48 +++++++++++++++-----
 1 file changed, 37 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/2ca35e9b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsAutoAckTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsAutoAckTest.java b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsAutoAckTest.java
index 42b5b34..b8e749b 100644
--- a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsAutoAckTest.java
+++ b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/consumer/JmsAutoAckTest.java
@@ -103,6 +103,18 @@ public class JmsAutoAckTest extends AmqpTestSupport {
         }));
     }
 
+    /**
+     * Test use of session recovery while using an auto-ack session and
+     * a message listener. Calling recover should result in delivery of the
+     * current message again, followed by those that would have been received
+     * afterwards.
+     *
+     * Send three messages. Consume the first message, then recover on the second
+     * message and expect to see it again, ensure the third message is not seen
+     * until after this.
+     *
+     * @throws Exception
+     */
     @Test(timeout = 60000)
     public void testRecoverInOnMessage() throws Exception {
         connection = createAmqpConnection();
@@ -112,7 +124,7 @@ public class JmsAutoAckTest extends AmqpTestSupport {
         Queue queue = session.createQueue(name.getMethodName());
         MessageConsumer consumer = session.createConsumer(queue);
 
-        sendMessages(connection, queue, 2);
+        sendMessages(connection, queue, 3);
 
         CountDownLatch latch = new CountDownLatch(1);
         AutoAckRecoverMsgListener listener = new AutoAckRecoverMsgListener(latch, session);
@@ -129,6 +141,7 @@ public class JmsAutoAckTest extends AmqpTestSupport {
         final CountDownLatch latch;
         private boolean seenFirstMessage = false;
         private boolean seenSecondMessage = false;
+        private boolean seenSecondMessageTwice = false;
         private boolean complete = false;
         private boolean failed = false;
 
@@ -143,7 +156,8 @@ public class JmsAutoAckTest extends AmqpTestSupport {
                 int msgNumProperty = message.getIntProperty(MESSAGE_NUMBER);
 
                 if(complete ){
-                    LOG.info("Test already complete, ignoring delivered message: " + msgNumProperty);
+                    LOG.info("Test already finished, ignoring delivered message: " + msgNumProperty);
+                    return;
                 }
 
                 if (msgNumProperty == 1) {
@@ -154,27 +168,39 @@ public class JmsAutoAckTest extends AmqpTestSupport {
                         LOG.error("Received first message again.");
                         complete(true);
                     }
-                } else {
-                    if (msgNumProperty != 2) {
-                        LOG.error("Received unexpected message: " + msgNumProperty);
-                        complete(true);
-                        return;
-                    }
-
+                } else if (msgNumProperty == 2) {
                     if(!seenSecondMessage){
                         seenSecondMessage = true;
                         LOG.info("Received second message. Now calling recover()");
                         session.recover();
                     } else {
                         LOG.info("Received second message again as expected.");
+                        seenSecondMessageTwice = true;
                         if(message.getJMSRedelivered()) {
-                            LOG.info("Message was marked redelivered.");
-                            complete(false);
+                            LOG.info("Message was marked redelivered as expected.");
                         } else {
                             LOG.error("Message was not marked redelivered.");
                             complete(true);
                         }
                     }
+                } else {
+                    if (msgNumProperty != 3) {
+                        LOG.error("Received unexpected message: " + msgNumProperty);
+                        complete(true);
+                    }
+
+                    if (!seenFirstMessage && !seenSecondMessageTwice) {
+                        LOG.error("Third message was not received in expected sequence.");
+                        complete(true);
+                    }
+
+                    if(message.getJMSRedelivered()) {
+                        LOG.error("Message was marked redelivered against expectation.");
+                        complete(true);
+                    } else {
+                        LOG.info("Message was not marked redelivered, as expected.");
+                        complete(false);
+                    }
                 }
             } catch (JMSException e) {
                 LOG.error("Exception caught in listener", e);


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