diff options
Diffstat (limited to 'qpid/cpp/src/tests/ha_tests.py')
-rwxr-xr-x | qpid/cpp/src/tests/ha_tests.py | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/qpid/cpp/src/tests/ha_tests.py b/qpid/cpp/src/tests/ha_tests.py index 38f243a5c1..bf044765b5 100755 --- a/qpid/cpp/src/tests/ha_tests.py +++ b/qpid/cpp/src/tests/ha_tests.py @@ -19,7 +19,7 @@ # import os, signal, sys, time, imp, re, subprocess, glob, random, logging, shutil -from qpid.messaging import Message, NotFound +from qpid.messaging import Message, NotFound, ConnectionError from brokertest import * from threading import Thread, Lock, Condition from logging import getLogger @@ -54,6 +54,10 @@ class ShortTests(BrokerTest): self.fail("Should not have been replicated: %s"%(address)) except NotFound: pass + def connect_admin(self, backup, **kwargs): + """Connect to a backup broker as the admin user""" + return backup.connect(username="qpid-ha-admin", password="dummy", mechanism="PLAIN", **kwargs) + def test_replication(self): """Test basic replication of wiring and messages before and after backup has connected""" @@ -116,7 +120,7 @@ class ShortTests(BrokerTest): setup(p, "2", primary) # Verify the data on the backup - b = backup.connect().session() + b = self.connect_admin(backup, ).session() verify(b, "1", p) verify(b, "2", p) @@ -162,10 +166,10 @@ class ShortTests(BrokerTest): s.sync() msgs = [str(i) for i in range(30)] - b1 = backup1.connect().session() + b1 = self.connect_admin(backup1).session() self.wait(b1, "q"); self.assert_browse_retry(b1, "q", msgs) - b2 = backup2.connect().session() + b2 = self.connect_admin(backup2).session() self.wait(b2, "q"); self.assert_browse_retry(b2, "q", msgs) @@ -192,14 +196,26 @@ class ShortTests(BrokerTest): self.assertEqual(receiver.wait(), 0) expect = [long(i) for i in range(991, 1001)] sn = lambda m: m.properties["sn"] - self.assert_browse_retry(backup1.connect().session(), "q", expect, transform=sn) - self.assert_browse_retry(backup2.connect().session(), "q", expect, transform=sn) + self.assert_browse_retry(self.connect_admin(backup1).session(), "q", expect, transform=sn) + self.assert_browse_retry(self.connect_admin(backup2).session(), "q", expect, transform=sn) except: print self.browse(primary.connect().session(), "q", transform=sn) - print self.browse(backup1.connect().session(), "q", transform=sn) - print self.browse(backup2.connect().session(), "q", transform=sn) + print self.browse(self.connect_admin(backup1).session(), "q", transform=sn) + print self.browse(self.connect_admin(backup2).session(), "q", transform=sn) raise + def test_exclude(self): + """Verify that backup rejects connections""" + primary = self.ha_broker(name="primary", broker_url="primary") # Temp hack to identify primary + backup = self.ha_broker(name="backup", broker_url=primary.host_port()) + # Admin is allowed + self.connect_admin(backup) + # Others are not + try: + backup.connect() + self.fail("Expected connection to backup to fail") + except ConnectionError: pass + if __name__ == "__main__": shutil.rmtree("brokertest.tmp", True) os.execvp("qpid-python-test", ["qpid-python-test", "-m", "ha_tests"] + sys.argv[1:]) |