Author: gsim
Date: Tue Oct 17 08:29:28 2006
New Revision: 464943
URL: http://svn.apache.org/viewvc?view=rev&rev=464943
Log:
Added test for simple commit and rollback.
Updated 'failing' lists
Fix for amqp methods with no arguments
Added:
incubator/qpid/trunk/qpid/python/tests/tx.py (with props)
Modified:
incubator/qpid/trunk/qpid/python/cpp_failing.txt
incubator/qpid/trunk/qpid/python/java_failing.txt
incubator/qpid/trunk/qpid/python/qpid/spec.py
Modified: incubator/qpid/trunk/qpid/python/cpp_failing.txt
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/cpp_failing.txt?view=diff&rev=464943&r1=464942&r2=464943
==============================================================================
--- incubator/qpid/trunk/qpid/python/cpp_failing.txt (original)
+++ incubator/qpid/trunk/qpid/python/cpp_failing.txt Tue Oct 17 08:29:28 2006
@@ -0,0 +1,2 @@
+tests.tx.TxTests.test_commit
+tests.tx.TxTests.test_rollback
Modified: incubator/qpid/trunk/qpid/python/java_failing.txt
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/java_failing.txt?view=diff&rev=464943&r1=464942&r2=464943
==============================================================================
--- incubator/qpid/trunk/qpid/python/java_failing.txt (original)
+++ incubator/qpid/trunk/qpid/python/java_failing.txt Tue Oct 17 08:29:28 2006
@@ -1,9 +1,23 @@
+tests.basic.BasicTests.test_cancel
tests.basic.BasicTests.test_consume_exclusive
tests.basic.BasicTests.test_consume_no_local
tests.basic.BasicTests.test_consume_queue_errors
tests.basic.BasicTests.test_consume_unique_consumers
+tests.basic.BasicTests.test_get
+tests.basic.BasicTests.test_qos_prefetch_size
+tests.basic.BasicTests.test_recover_requeue
+tests.exchange.ExchangeTests
+tests.exchange.DefaultExchangeRuleTests.testDefaultExchange
+tests.exchange.HeadersExchangeTests.testMatchAll
+tests.exchange.HeadersExchangeTests.testMatchAny
+tests.exchange.RecommendedTypesRuleTests.testDirect
tests.exchange.RecommendedTypesRuleTests.testFanout
+tests.exchange.RecommendedTypesRuleTests.testHeaders
+tests.exchange.RecommendedTypesRuleTests.testTopic
+tests.exchange.RequiredInstancesRuleTests.testAmqDirect
tests.exchange.RequiredInstancesRuleTests.testAmqFanOut
+tests.exchange.RequiredInstancesRuleTests.testAmqMatch
+tests.exchange.RequiredInstancesRuleTests.testAmqTopic
tests.queue.QueueTests.test_declare_exclusive
tests.queue.QueueTests.test_declare_passive
tests.queue.QueueTests.test_delete_ifempty
@@ -11,3 +25,5 @@
tests.queue.QueueTests.test_delete_simple
tests.queue.QueueTests.test_purge
tests.queue.QueueTests.test_bind
+tests.testlib.TestBaseTest.testMessageProperties
+tests.broker.BrokerTests.test_invalid_channel
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=464943&r1=464942&r2=464943
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/spec.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/spec.py Tue Oct 17 08:29:28 2006
@@ -204,6 +204,8 @@
code += " return self.invoke(%s" % Method.METHOD
if argnames:
code += ", (%s,)" % argnames
+ else:
+ code += ", ()"
if self.content:
code += ", content"
code += ")"
Added: incubator/qpid/trunk/qpid/python/tests/tx.py
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/tests/tx.py?view=auto&rev=464943
==============================================================================
--- incubator/qpid/trunk/qpid/python/tests/tx.py (added)
+++ incubator/qpid/trunk/qpid/python/tests/tx.py Tue Oct 17 08:29:28 2006
@@ -0,0 +1,143 @@
+#
+# Copyright (c) 2006 The Apache Software Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+from qpid.client import Client, Closed
+from qpid.queue import Empty
+from qpid.content import Content
+from qpid.testlib import testrunner, TestBase
+
+class TxTests(TestBase):
+ """
+ Tests for 'methods' on the amqp tx 'class'
+ """
+
+ def test_commit(self):
+ """
+ Test that commited publishes are delivered and commited acks are not
re-delivered
+ """
+ channel = self.channel
+ queue_a, queue_b, queue_c = self.perform_txn_work(channel,
"tx-commit-a", "tx-commit-b", "tx-commit-c")
+ channel.tx_commit()
+
+ #check results
+ for i in range(1, 5):
+ msg = queue_c.get(timeout=1)
+ self.assertEqual("TxMessage %d" % i, msg.content.body)
+
+ msg = queue_b.get(timeout=1)
+ self.assertEqual("TxMessage 6", msg.content.body)
+
+ msg = queue_a.get(timeout=1)
+ self.assertEqual("TxMessage 7", msg.content.body)
+
+ for q in [queue_a, queue_b, queue_c]:
+ try:
+ extra = q.get(timeout=1)
+ self.fail("Got unexpected message: " + extra.content.body)
+ except Empty: None
+
+ #cleanup
+ channel.basic_ack(delivery_tag=0, multiple=True)
+ channel.tx_commit()
+
+ def test_rollback(self):
+ """
+ Test that rolled back publishes are not delivered and rolled back acks
are re-delivered
+ """
+ channel = self.channel
+ queue_a, queue_b, queue_c = self.perform_txn_work(channel,
"tx-rollback-a", "tx-rollback-b", "tx-rollback-c")
+
+ for q in [queue_a, queue_b, queue_c]:
+ try:
+ extra = q.get(timeout=1)
+ self.fail("Got unexpected message: " + extra.content.body)
+ except Empty: None
+
+ channel.tx_rollback()
+
+ #check results
+ for i in range(1, 5):
+ msg = queue_a.get(timeout=1)
+ self.assertEqual("Message %d" % i, msg.content.body)
+
+ msg = queue_b.get(timeout=1)
+ self.assertEqual("Message 6", msg.content.body)
+
+ msg = queue_c.get(timeout=1)
+ self.assertEqual("Message 7", msg.content.body)
+
+ for q in [queue_a, queue_b, queue_c]:
+ try:
+ extra = q.get(timeout=1)
+ self.fail("Got unexpected message: " + extra.content.body)
+ except Empty: None
+
+ #cleanup
+ channel.basic_ack(delivery_tag=0, multiple=True)
+ channel.tx_commit()
+
+ def perform_txn_work(self, channel, name_a, name_b, name_c):
+ """
+ Utility method that does some setup and some work under a transaction.
Used for testing both
+ commit and rollback
+ """
+ #setup:
+ channel.queue_declare(queue=name_a, exclusive=True)
+ channel.queue_declare(queue=name_b, exclusive=True)
+ channel.queue_declare(queue=name_c, exclusive=True)
+
+ key = "my_key_" + name_b
+ topic = "my_topic_" + name_c
+
+ channel.queue_bind(queue=name_b, exchange="amq.direct",
routing_key=key)
+ channel.queue_bind(queue=name_c, exchange="amq.topic",
routing_key=topic)
+
+ for i in range(1, 5):
+ channel.basic_publish(routing_key=name_a, content=Content("Message
%d" % i))
+
+ channel.basic_publish(routing_key=key, exchange="amq.direct",
content=Content("Message 6"))
+ channel.basic_publish(routing_key=topic, exchange="amq.topic",
content=Content("Message 7"))
+
+
+ channel.tx_select()
+
+ #consume and ack messages
+ sub_a = channel.basic_consume(queue=name_a, no_ack=False)
+ queue_a = self.client.queue(sub_a.consumer_tag)
+ for i in range(1, 5):
+ msg = queue_a.get(timeout=1)
+ self.assertEqual("Message %d" % i, msg.content.body)
+ channel.basic_ack(delivery_tag=msg.delivery_tag, multiple=True)
+
+ sub_b = channel.basic_consume(queue=name_b, no_ack=False)
+ queue_b = self.client.queue(sub_b.consumer_tag)
+ msg = queue_b.get(timeout=1)
+ self.assertEqual("Message 6", msg.content.body)
+ channel.basic_ack(delivery_tag=msg.delivery_tag)
+
+ sub_c = channel.basic_consume(queue=name_c, no_ack=False)
+ queue_c = self.client.queue(sub_c.consumer_tag)
+ msg = queue_c.get(timeout=1)
+ self.assertEqual("Message 7", msg.content.body)
+ channel.basic_ack(delivery_tag=msg.delivery_tag)
+
+ #publish messages
+ for i in range(1, 5):
+ channel.basic_publish(routing_key=topic, exchange="amq.topic",
content=Content("TxMessage %d" % i))
+
+ channel.basic_publish(routing_key=key, exchange="amq.direct",
content=Content("TxMessage 6"))
+ channel.basic_publish(routing_key=name_a, content=Content("TxMessage
7"))
+
+ return queue_a, queue_b, queue_c
Propchange: incubator/qpid/trunk/qpid/python/tests/tx.py
------------------------------------------------------------------------------
svn:eol-style = native