summaryrefslogtreecommitdiff
path: root/cpp/src/tests
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2012-10-09 19:52:24 +0000
committerAlan Conway <aconway@apache.org>2012-10-09 19:52:24 +0000
commita769439c2e8bc10e33292e87008204a0d6c20059 (patch)
treef09fc24ca604c87b9343dd084f098cff00c65d8a /cpp/src/tests
parenta12252bbafc72607e11aad13a8cb1e86ffc5d30f (diff)
downloadqpid-python-a769439c2e8bc10e33292e87008204a0d6c20059.tar.gz
QPID-4360: Fix test bug: Non-ready HA broker can be incorrectly promoted to primary.
Test test_delete_missing_response was failing with "cluster active, cannot promote". - Fixed test bug: "fake" primary triggered "cannot promote". - Backup: always create QueueReplicator if not already existing. - Terminology change: "initial" queues -> "catch-up" queues. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1396244 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests')
-rwxr-xr-xcpp/src/tests/ha_test.py2
-rwxr-xr-xcpp/src/tests/ha_tests.py28
2 files changed, 17 insertions, 13 deletions
diff --git a/cpp/src/tests/ha_test.py b/cpp/src/tests/ha_test.py
index 79db67e3c8..462c90bfb3 100755
--- a/cpp/src/tests/ha_test.py
+++ b/cpp/src/tests/ha_test.py
@@ -199,7 +199,7 @@ class HaCluster(object):
HaCluster._cluster_count += 1
for i in xrange(n): self.start(False)
self.update_urls()
- self[0].promote()
+ if promote: self[0].promote()
def next_name(self):
name="cluster%s-%s"%(self.id, self.broker_id)
diff --git a/cpp/src/tests/ha_tests.py b/cpp/src/tests/ha_tests.py
index a8d16a77c9..7ce0d1701a 100755
--- a/cpp/src/tests/ha_tests.py
+++ b/cpp/src/tests/ha_tests.py
@@ -627,25 +627,29 @@ acl deny all all
def test_delete_missing_response(self):
"""Check that a backup correctly deletes leftover queues and exchanges that are
missing from the initial reponse set."""
- cluster = HaCluster(self,2)
- s = cluster[0].connect().session()
+ # This test is a bit contrived, we set up the situation on backup brokers
+ # and then promote one.
+ cluster = HaCluster(self, 2, promote=False)
+
+ # cluster[0] Will be the primary
+ s = cluster[0].connect_admin().session()
s.sender("q1;{create:always}")
- s.sender("q2;{create:always}")
s.sender("e1;{create:always, node:{type:topic}}")
- s.sender("e2;{create:always, node:{type:topic}}")
- cluster.bounce(0, promote_next=False)
- # Fake a primary that has deleted some queues and exchanges.
- s = cluster[0].connect_admin().session()
+
+ # cluster[1] will be the backup, has extra queues/exchanges
+ s = cluster[1].connect_admin().session()
+ s.sender("q1;{create:always}")
s.sender("q2;{create:always}")
+ s.sender("e1;{create:always, node:{type:topic}}")
s.sender("e2;{create:always, node:{type:topic}}")
- s.sender("x;{create:always}") # A new queue so we can wait for the update.
+ for a in ["q1", "q2", "e1", "e2"]: cluster[1].wait_backup(a)
+
cluster[0].promote()
- # Verify the backup has deleted the missing queues and exchanges
+ # Verify the backup deletes the surpluis queue and exchange
cluster[1].wait_status("ready")
s = cluster[1].connect_admin().session()
- cluster[1].wait_backup("x");
- self.assertRaises(NotFound, s.receiver, ("q1"));
- self.assertRaises(NotFound, s.receiver, ("e1"));
+ self.assertRaises(NotFound, s.receiver, ("q2"));
+ self.assertRaises(NotFound, s.receiver, ("e2"));
def test_auto_delete_qpid_4285(self):