You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2007/03/19 21:02:30 UTC
svn commit: r520073 - in /incubator/qpid/trunk/qpid: ./ python/qpid/spec.py
python/tests/basic.py python/tests/message.py
Author: aconway
Date: Mon Mar 19 13:02:29 2007
New Revision: 520073
URL: http://svn.apache.org/viewvc?view=rev&rev=520073
Log:
Merged revisions 504601-504602,504604-504609,504611-504702,504704-504707,504709-504849 via svnmerge from
https://svn.apache.org/repos/asf/incubator/qpid/branches/qpid.0-9
........
r504601 | gsim | 2007-02-07 11:09:16 -0500 (Wed, 07 Feb 2007) | 3 lines
Added list of valid responses to method descriptions where appropriate.
........
r504700 | aconway | 2007-02-07 16:30:32 -0500 (Wed, 07 Feb 2007) | 2 lines
Use self.queue_open to ensure deletion of queue - was clashing with message.py tests.
........
r504849 | gsim | 2007-02-08 05:14:50 -0500 (Thu, 08 Feb 2007) | 3 lines
Fixes to qos and get tests. Added test for correct completion of references.
........
Modified:
incubator/qpid/trunk/qpid/ (props changed)
incubator/qpid/trunk/qpid/python/qpid/spec.py
incubator/qpid/trunk/qpid/python/tests/basic.py
incubator/qpid/trunk/qpid/python/tests/message.py
Propchange: incubator/qpid/trunk/qpid/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: incubator/qpid/trunk/qpid/python/qpid/spec.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/spec.py?view=diff&rev=520073&r1=520072&r2=520073
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/spec.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/spec.py Mon Mar 19 13:02:29 2007
@@ -208,6 +208,10 @@
if f.docs:
s += "\n\n" + "\n\n".join([fill(f.docs[0], 4, f.name)] +
[fill(d, 4) for d in f.docs[1:]])
+ if self.responses:
+ s += "\n\nValid responses: "
+ for r in self.responses:
+ s += r.name + " "
return s
METHOD = "__method__"
Modified: incubator/qpid/trunk/qpid/python/tests/basic.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/tests/basic.py?view=diff&rev=520073&r1=520072&r2=520073
==============================================================================
--- incubator/qpid/trunk/qpid/python/tests/basic.py (original)
+++ incubator/qpid/trunk/qpid/python/tests/basic.py Mon Mar 19 13:02:29 2007
@@ -147,7 +147,7 @@
Test basic ack/recover behaviour
"""
channel = self.channel
- channel.queue_declare(queue="test-ack-queue", exclusive=True)
+ self.queue_declare(queue="test-ack-queue", exclusive=True)
reply = channel.basic_consume(queue="test-ack-queue", no_ack=False)
queue = self.client.queue(reply.consumer_tag)
Modified: incubator/qpid/trunk/qpid/python/tests/message.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/tests/message.py?view=diff&rev=520073&r1=520072&r2=520073
==============================================================================
--- incubator/qpid/trunk/qpid/python/tests/message.py (original)
+++ incubator/qpid/trunk/qpid/python/tests/message.py Mon Mar 19 13:02:29 2007
@@ -267,7 +267,7 @@
for i in range(1, 6):
msg = queue.get(timeout=1)
self.assertEqual("Message %d" % i, msg.body)
- msgs.add(msg)
+ msgs.append(msg)
try:
extra = queue.get(timeout=1)
self.fail("Got unexpected 6th message in original queue: " + extra.body)
@@ -277,16 +277,16 @@
#todo: once batching is implmented, send a single response for all messages
for msg in msgs:
msg.ok()
- msgs.clear()
+ del msgs
for i in range(6, 11):
msg = queue.get(timeout=1)
self.assertEqual("Message %d" % i, msg.body)
- msgs.add(msg)
+ msgs.append(msg)
for msg in msgs:
msg.ok()
- msgs.clear()
+ del msgs
try:
extra = queue.get(timeout=1)
@@ -317,7 +317,8 @@
for i in range(1, 6):
msg = queue.get(timeout=1)
self.assertEqual("Message %d" % i, msg.body)
- msgs.add(msg)
+ print "Got Message %d" % i
+ msgs.append(msg)
try:
extra = queue.get(timeout=1)
@@ -327,16 +328,16 @@
#ack messages and check that the next set arrive ok:
for msg in msgs:
msg.ok()
- msgs.clear()
+ del msgs
for i in range(6, 11):
msg = queue.get(timeout=1)
self.assertEqual("Message %d" % i, msg.body)
- msgs.add(msg)
+ msgs.append(msg)
for msg in msgs:
msg.ok()
- msgs.clear()
+ del msgs
try:
extra = queue.get(timeout=1)
@@ -363,12 +364,13 @@
#use message_get to read back the messages, and check that we get an empty at the end
for i in range(1, 11):
- reply = channel.message_get(no_ack=True)
+ tag = "queue %d" % i
+ reply = channel.message_get(no_ack=True, queue="test-get", destination=tag)
self.assertEqual(reply.method.klass.name, "message")
- self.assertEqual(reply.method.name, "get-ok")
- self.assertEqual("Message %d" % i, reply.body)
+ self.assertEqual(reply.method.name, "ok")
+ self.assertEqual("Message %d" % i, self.client.queue(tag).get(timeout=1).body)
- reply = channel.message_get(no_ack=True)
+ reply = channel.message_get(no_ack=True, queue="test-get")
self.assertEqual(reply.method.klass.name, "message")
self.assertEqual(reply.method.name, "get-empty")
@@ -377,10 +379,11 @@
channel.message_transfer(routing_key="test-get", body="Message %d" % i)
for i in range(11, 21):
- reply = channel.message_get(no_ack=False)
+ tag = "queue %d" % i
+ reply = channel.message_get(no_ack=False, queue="test-get", destination=tag)
self.assertEqual(reply.method.klass.name, "message")
- self.assertEqual(reply.method.name, "get-ok")
- self.assertEqual("Message %d" % i, reply.body)
+ self.assertEqual(reply.method.name, "ok")
+ self.assertEqual("Message %d" % i, self.client.queue(tag).get(timeout=1).body)
reply.ok()
#todo: when batching is available, test ack multiple
@@ -389,7 +392,7 @@
#if(i in [15, 17, 19]):
# channel.message_ack(delivery_tag=reply.delivery_tag)
- reply = channel.message_get(no_ack=True)
+ reply = channel.message_get(no_ack=True, queue="test-get")
self.assertEqual(reply.method.klass.name, "message")
self.assertEqual(reply.method.name, "get-empty")
@@ -398,20 +401,21 @@
#get the unacked messages again (14, 16, 18, 20)
for i in [14, 16, 18, 20]:
- reply = channel.message_get(no_ack=False)
+ tag = "queue %d" % i
+ reply = channel.message_get(no_ack=False, queue="test-get", destination=tag)
self.assertEqual(reply.method.klass.name, "message")
- self.assertEqual(reply.method.name, "get-ok")
- self.assertEqual("Message %d" % i, reply.body)
+ self.assertEqual(reply.method.name, "ok")
+ self.assertEqual("Message %d" % i, self.client.queue(tag).get(timeout=1).body)
reply.ok()
#channel.message_ack(delivery_tag=reply.delivery_tag)
- reply = channel.message_get(no_ack=True)
+ reply = channel.message_get(no_ack=True, queue="test-get")
self.assertEqual(reply.method.klass.name, "message")
self.assertEqual(reply.method.name, "get-empty")
channel.message_recover(requeue=True)
- reply = channel.message_get(no_ack=True)
+ reply = channel.message_get(no_ack=True, queue="test-get")
self.assertEqual(reply.method.klass.name, "message")
self.assertEqual(reply.method.name, "get-empty")
@@ -477,3 +481,43 @@
msg = queue.get(timeout=1)
self.assertTrue(isinstance(msg, Reference))
self.assertEquals(data, msg.get_complete())
+
+ def test_reference_completion(self):
+ """
+ Test that reference transfer are not deemed complete until
+ closed (therefore are not acked or routed until that point)
+ """
+ channel = self.channel
+ channel.queue_declare(queue="ref_queue", exclusive=True)
+ channel.message_consume(queue="ref_queue", destination="c1")
+ queue = self.client.queue("c1")
+
+ refId = "myref"
+ channel.message_open(reference=refId)
+ channel.message_append(reference=refId, bytes="abcd")
+ channel.synchronous = False
+ ack = channel.message_transfer(routing_key="ref_queue", body=ReferenceId(refId))
+ channel.synchronous = True
+
+ try:
+ msg = queue.get(timeout=1)
+ self.fail("Got unexpected message on queue: " + msg)
+ except Empty: None
+
+ self.assertTrue(not ack.is_complete())
+
+ channel.message_close(reference=refId)
+
+ #first, wait for the ok for the transfer
+ ack.get_response(timeout=1)
+
+ msg = queue.get(timeout=1)
+ if isinstance(msg, Reference):
+ #should we force broker to deliver as reference by frame
+ #size limit? or test that separately? for compliance,
+ #allowing either seems best for now...
+ data = msg.get_complete()
+ else:
+ data = msg.body
+ self.assertEquals("abcdefghijkl", data)
+