diff options
| author | Gordon Sim <gsim@apache.org> | 2013-05-21 22:35:57 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2013-05-21 22:35:57 +0000 |
| commit | c8e54a76117dba84f0456ec1a2bfac4428df440a (patch) | |
| tree | e02c2b94594029ffb9eeb59cda52d2c9988fd5df /qpid/tests/src/py | |
| parent | c043a6477e0ced702302f9705ac8c4f8c1e8e0df (diff) | |
| download | qpid-python-c8e54a76117dba84f0456ec1a2bfac4428df440a.tar.gz | |
QPID-4591: patch from Ernie Allen to add queue sequence number to messages
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1485001 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/tests/src/py')
| -rw-r--r-- | qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py b/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py index 18a13e3ddf..c4a47029b9 100644 --- a/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py +++ b/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py @@ -123,3 +123,83 @@ class GeneralTests(Base): self.assertEqual(rx_alt.available(), 0, "No further messages should be received via the alternate exchange") sess4.close() + +class SequenceNumberTests(Base): + """ + Tests of ring queue sequence number + """ + + def fail(self, text=None): + if text: + print "Fail: %r" % text + assert None + + def setup_connection(self): + return Connection.establish(self.broker, **self.connection_options()) + + def setup_session(self): + return self.conn.session() + + def setup_sender(self, name="ring-sequence-queue", key="qpid.queue_msg_sequence"): + addr = "%s; {create:sender, delete:always, node: {x-declare: {arguments: {'qpid.queue_msg_sequence':'%s', 'qpid.policy_type':'ring', 'qpid.max_count':4}}}}" % (name, key) + sender = self.ssn.sender(addr) + return sender + + def test_create_sequence_queue(self): + """ + Test a queue with sequencing can be created + """ + + #setup, declare a queue + try: + sender = self.setup_sender() + except: + self.fail("Unable to create ring queue with sequencing enabled") + + def test_get_sequence_number(self): + """ + Test retrieving sequence number for queues + """ + + key = "k" + sender = self.setup_sender("ring-sequence-queue2", key=key) + + # send and receive 1 message and test the sequence number + msg = Message() + sender.send(msg) + + receiver = self.ssn.receiver("ring-sequence-queue2") + msg = receiver.fetch(1) + try: + seqNo = msg.properties[key] + if int(seqNo) != 1: + txt = "Unexpected sequence number. Should be 1. Received (%s)" % seqNo + self.fail(txt) + except: + txt = "Unable to get key (%s) from message properties" % key + self.fail(txt) + receiver.close() + + def test_sequence_number_gap(self): + """ + Test that sequence number for ring queues shows gaps when queue + messages are overwritten + """ + key = "qpid.seq" + sender = self.setup_sender("ring-sequence-queue3", key=key) + receiver = self.ssn.receiver("ring-sequence-queue3") + + msg = Message() + sender.send(msg) + msg = receiver.fetch(1) + + # send 5 more messages to overflow the queue + for i in range(5): + sender.send(msg) + + msg = receiver.fetch(1) + seqNo = msg.properties[key] + if int(seqNo) != 3: + txt = "Unexpected sequence number. Should be 3. Received (%s)" % seqNo + self.fail(txt) + receiver.close() |
