summaryrefslogtreecommitdiff
path: root/cpp/src/tests
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2013-03-07 17:25:47 +0000
committerAlan Conway <aconway@apache.org>2013-03-07 17:25:47 +0000
commitd1a74e579f1c61afe7485e3f42767502d43f7623 (patch)
tree1f094812ed4bfe7dd9b9ecb0b38b3386c7018f44 /cpp/src/tests
parentb4de4600d0be955c7ed27e890b82f58129607cc3 (diff)
downloadqpid-python-d1a74e579f1c61afe7485e3f42767502d43f7623.tar.gz
QPID-4630: HA Fix starting from persistent store.
This was implemented in r1390123 but broken by subsequent changes. When re-starting a persistent HA cluster, the broker that becomes primary keeps its recovered queues while backup brokers discard their recovered queues and catch up from the primary. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1453971 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests')
-rwxr-xr-xcpp/src/tests/ha_store_tests.py24
1 files changed, 11 insertions, 13 deletions
diff --git a/cpp/src/tests/ha_store_tests.py b/cpp/src/tests/ha_store_tests.py
index 16bf6e2964..21d403a46e 100755
--- a/cpp/src/tests/ha_store_tests.py
+++ b/cpp/src/tests/ha_store_tests.py
@@ -40,13 +40,12 @@ class StoreTests(BrokerTest):
def test_store_recovery(self):
"""Verify basic store and recover functionality"""
- cluster = HaCluster(self, 2)
+ cluster = HaCluster(self, 1)
sn = cluster[0].connect().session()
+ # Create queue qq, exchange exx and binding between them
s = sn.sender("qq;{create:always,node:{durable:true}}")
- sk = sn.sender("xx/k;{create:always,node:{type:topic, durable:true, x-declare:{type:'direct'}, x-bindings:[{exchange:xx,key:k,queue:qq}]}}")
- s.send(Message("foo", durable=True))
- s.send(Message("bar", durable=True))
- sk.send(Message("baz", durable=True))
+ sk = sn.sender("exx/k;{create:always,node:{type:topic, durable:true, x-declare:{type:'direct'}, x-bindings:[{exchange:exx,key:k,queue:qq}]}}")
+ for m in ["foo", "bar", "baz"]: s.send(Message(m, durable=True))
r = cluster[0].connect().session().receiver("qq")
self.assertEqual(r.fetch().content, "foo")
r.session.acknowledge()
@@ -57,16 +56,16 @@ class StoreTests(BrokerTest):
def verify(broker, x_count):
sn = broker.connect().session()
assert_browse(sn, "qq", [ "bar", "baz", "flush" ]+ (x_count)*["x"])
- sn.sender("xx/k").send(Message("x", durable=True))
+ sn.sender("exx/k").send(Message("x", durable=True))
assert_browse(sn, "qq", [ "bar", "baz", "flush" ]+ (x_count+1)*["x"])
- verify(cluster[0], 0)
- cluster.bounce(0, promote_next=False)
- cluster[0].promote()
+ verify(cluster[0], 0) # Sanity check
+ cluster.bounce(0)
cluster[0].wait_status("active")
- verify(cluster[0], 1)
- cluster.kill(0, promote_next=False)
- cluster[1].promote()
+ verify(cluster[0], 1) # Loaded from store
+ cluster.start()
+ cluster[1].wait_status("ready")
+ cluster.kill(0)
cluster[1].wait_status("active")
verify(cluster[1], 2)
cluster.bounce(1, promote_next=False)
@@ -90,7 +89,6 @@ class StoreTests(BrokerTest):
# Make changes that the backup doesn't see
cluster.kill(1, promote_next=False)
- time.sleep(1) # FIXME aconway 2012-09-25:
r1 = cluster[0].connect().session().receiver("q1")
for m in ["foo", "bar"]: self.assertEqual(r1.fetch().content, m)
r1.session.acknowledge()