summaryrefslogtreecommitdiff
path: root/qpid/tests/src/py
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-05-21 22:35:57 +0000
committerGordon Sim <gsim@apache.org>2013-05-21 22:35:57 +0000
commitc8e54a76117dba84f0456ec1a2bfac4428df440a (patch)
treee02c2b94594029ffb9eeb59cda52d2c9988fd5df /qpid/tests/src/py
parentc043a6477e0ced702302f9705ac8c4f8c1e8e0df (diff)
downloadqpid-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.py80
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()