You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2013/01/31 20:37:12 UTC

svn commit: r1441157 - in /qpid/trunk/qpid/cpp/src/tests: ha_test.py ha_tests.py

Author: aconway
Date: Thu Jan 31 19:37:12 2013
New Revision: 1441157

URL: http://svn.apache.org/viewvc?rev=1441157&view=rev
Log:
QPID-4555: HA Test bugs causing sporadic faiulres in ha_tests.ReplicationTests.test_auto_delete_timeout

The tests were not waiting for the cluster to be ready before starting.
Updated HaCluster to wait by default before returning.

Increase timeout in calls to wait_no_queue, the default timeout of 1 sec was the same
as the auto-delete timeout.

Modified:
    qpid/trunk/qpid/cpp/src/tests/ha_test.py
    qpid/trunk/qpid/cpp/src/tests/ha_tests.py

Modified: qpid/trunk/qpid/cpp/src/tests/ha_test.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/ha_test.py?rev=1441157&r1=1441156&r2=1441157&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/ha_test.py (original)
+++ qpid/trunk/qpid/cpp/src/tests/ha_test.py Thu Jan 31 19:37:12 2013
@@ -99,7 +99,8 @@ class HaBroker(Broker):
             args = args + ["--sasl-mechanism", cred.mechanism]
         self.qpid_ha_script.main_except(["", "-b", url]+args)
 
-    def promote(self): self.ready(); self.qpid_ha(["promote"])
+    def promote(self):
+        self.ready(); self.qpid_ha(["promote"])
     def set_public_url(self, url): self.qpid_ha(["set", "--public-url", url])
     def set_brokers_url(self, url): self.qpid_ha(["set", "--brokers-url", url])
     def replicate(self, from_broker, queue): self.qpid_ha(["replicate", from_broker, queue])
@@ -208,8 +209,14 @@ class HaBroker(Broker):
 class HaCluster(object):
     _cluster_count = 0
 
-    def __init__(self, test, n, promote=True, **kwargs):
-        """Start a cluster of n brokers"""
+    def __init__(self, test, n, promote=True, wait=True, **kwargs):
+        """Start a cluster of n brokers.
+
+        @test: The test being run
+        @n: start n brokers
+        @promote: promote self[0] to primary
+        @wait: wait for primary active and backups ready. Ignored if promote=False
+        """
         self.test = test
         self.kwargs = kwargs
         self._brokers = []
@@ -218,7 +225,12 @@ class HaCluster(object):
         HaCluster._cluster_count += 1
         for i in xrange(n): self.start(False)
         self.update_urls()
-        if promote: self[0].promote()
+        if promote:
+            self[0].promote()
+            if wait:
+                self[0].wait_status("active")
+                for b in self[1:]: b.wait_status("ready")
+
 
     def next_name(self):
         name="cluster%s-%s"%(self.id, self.broker_id)

Modified: qpid/trunk/qpid/cpp/src/tests/ha_tests.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/ha_tests.py?rev=1441157&r1=1441156&r2=1441157&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/ha_tests.py (original)
+++ qpid/trunk/qpid/cpp/src/tests/ha_tests.py Thu Jan 31 19:37:12 2013
@@ -270,7 +270,6 @@ class ReplicationTests(HaBrokerTest):
     def test_qpid_config_replication(self):
         """Set up replication via qpid-config"""
         brokers = HaCluster(self,2)
-        brokers[0].wait_status("active")
         brokers[0].config_declare("q","all")
         brokers[0].connect().session().sender("q").send("foo")
         brokers[1].assert_browse_backup("q", ["foo"])
@@ -613,8 +612,6 @@ acl deny all all
         to new members of a cluster. """
         cluster = HaCluster(self, 2)
         s = cluster[0].connect().session()
-        cluster[0].wait_status("active")
-        cluster[1].wait_status("ready")
         # altex exchange: acts as alternate exchange
         s.sender("altex;{create:always,node:{type:topic,x-declare:{type:'fanout'}}}")
         # altq queue bound to altex, collect re-routed messages.
@@ -722,7 +719,6 @@ acl deny all all
         """Regression test for QPID-4285: on deleting a queue it gets stuck in a
         partially deleted state and causes replication errors."""
         cluster = HaCluster(self,2)
-        cluster[1].wait_status("ready")
         s = cluster[0].connect().session()
         s.receiver("q;{create:always}")
         cluster[1].wait_backup("q")
@@ -804,15 +800,14 @@ acl deny all all
         cluster[1].wait_queue("q1")
         cluster[0].kill()
         cluster[1].wait_queue("q1")    # Not timed out yet
-        cluster[1].wait_no_queue("q1") # Wait for timeout
-        cluster[1].wait_no_queue("q0")
+        cluster[1].wait_no_queue("q1", timeout=5) # Wait for timeout
+        cluster[1].wait_no_queue("q0", timeout=5) # Wait for timeout
 
     def test_alt_exchange_dup(self):
         """QPID-4349: if a queue has an alterante exchange and is deleted the
         messages appear twice on the alternate, they are rerouted once by the
         primary and again by the backup."""
         cluster = HaCluster(self,2)
-        cluster[0].wait_status("active")
 
         # Set up q with alternate exchange altex bound to altq.
         s = cluster[0].connect().session()
@@ -842,7 +837,7 @@ acl deny all all
         cluster = HaCluster(self, 2)
         s = cluster[0].connect().session()
         s.sender("keep;{create:always}") # Leave this queue in place.
-        for i in xrange(100):            # FIXME aconway 2012-10-23: ??? IS this an issue?
+        for i in xrange(1000):
             s.sender("deleteme%s;{create:always,delete:always}"%(i)).close()
         # It is possible for the backup to attempt to subscribe after the queue
         # is deleted. This is not an error, but is logged as an error on the primary.



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