You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2011/06/13 17:01:40 UTC

svn commit: r1135122 - /qpid/branches/qpid-3079/qpid/cpp/src/tests/cluster_tests.py

Author: kgiusti
Date: Mon Jun 13 15:01:40 2011
New Revision: 1135122

URL: http://svn.apache.org/viewvc?rev=1135122&view=rev
Log:
QPID-3079: add cluster unit tests

Modified:
    qpid/branches/qpid-3079/qpid/cpp/src/tests/cluster_tests.py

Modified: qpid/branches/qpid-3079/qpid/cpp/src/tests/cluster_tests.py
URL: http://svn.apache.org/viewvc/qpid/branches/qpid-3079/qpid/cpp/src/tests/cluster_tests.py?rev=1135122&r1=1135121&r2=1135122&view=diff
==============================================================================
--- qpid/branches/qpid-3079/qpid/cpp/src/tests/cluster_tests.py (original)
+++ qpid/branches/qpid-3079/qpid/cpp/src/tests/cluster_tests.py Mon Jun 13 15:01:40 2011
@@ -1055,3 +1055,56 @@ class StoreTests(BrokerTest):
         self.assertEqual(c.get_message("q").content, "x")
         b = cluster.start("b")
         self.assertEqual(c.get_message("q").content, "y")
+
+    def test_no_redeliver_accepted(self):
+        """Verify that messages that have been accepted are not re-delivered
+        after a kill()/restart of the broker.
+        """
+        cluster = self.cluster(0, self.args())
+        b = cluster.start("b", expect=EXPECT_EXIT_FAIL)
+        ssn = b.connect().session()
+        msgs = [Message("M-%s" % x, durable=True) for x in range(24)]
+        b.send_messages("testQ", msgs, durable=True, session=ssn)
+        ssn.sync()
+        # only accept the first 5 before killing
+        rsn = b.connect().session()
+        r0 = rsn.receiver("testQ", capacity=10)
+        for x in range(5):
+            m = r0.fetch(timeout=1)
+        rsn.acknowledge()
+        for x in range(3):    # these are not accepted!
+            m = r0.fetch(timeout=1)
+        b.kill()
+        b = cluster.start("b")
+        rsn = b.connect().session()
+        r0 = rsn.receiver("testQ", capacity=10)
+        # we should expect that the next available msg is
+        # the next after the last accepted (e.g. "M-5")
+        m = r0.fetch(timeout=1)
+        self.assertEqual(m.content, "M-5")
+
+    def test_no_redeliver_accepted_failover(self):
+        """Verify that messages that have been accepted are not re-delivered
+        after a failover of the broker.
+        """
+        cluster = self.cluster(2, self.args(), expect=EXPECT_EXIT_FAIL)
+        ssn = cluster[0].connect().session()
+        msgs = [Message("M-%s" % x, durable=True) for x in range(24)]
+        cluster[0].send_messages("testQ", msgs, durable=True, session=ssn)
+        ssn.sync()
+        # only accept the first 5 before killing
+        rsn = cluster[0].connect().session()
+        r0 = rsn.receiver("testQ", capacity=10)
+        for x in range(5):
+            m = r0.fetch(timeout=1)
+        rsn.acknowledge()
+        for x in range(3):    # these are not accepted!
+            m = r0.fetch(timeout=1)
+        cluster[0].kill()
+        rsn = cluster[1].connect().session()
+        r0 = rsn.receiver("testQ", capacity=10)
+        # we should expect that the next available msg is
+        # the next after the last accepted (e.g. "M-5")
+        m = r0.fetch(timeout=1)
+        self.assertEqual(m.content, "M-5")
+        cluster[1].kill()



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org