Merge lp:~free.ekanayaka/txamqp/fix-tests-with-rabbitmq-3 into lp:txamqp

Proposed by Free Ekanayaka
Status: Merged
Approved by: Esteve Fernandez
Approved revision: 72
Merged at revision: 72
Proposed branch: lp:~free.ekanayaka/txamqp/fix-tests-with-rabbitmq-3
Merge into: lp:txamqp
Diff against target: 97 lines (+43/-4)
3 files modified
src/txamqp/test/test_broker.py (+12/-1)
src/txamqp/test/test_queue.py (+21/-2)
src/txamqp/testlib.py (+10/-1)
To merge this branch: bzr merge lp:~free.ekanayaka/txamqp/fix-tests-with-rabbitmq-3
Reviewer Review Type Date Requested Status
Esteve Fernandez Approve
Review via email: mp+295490@code.launchpad.net

Description of the change

This branch fixes test failures when running the suite with RabbitMQ 3.0.0 or higher.

To post a comment you must log in.
Revision history for this message
Esteve Fernandez (esteve) wrote :

Thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/txamqp/test/test_broker.py'
2--- src/txamqp/test/test_broker.py 2012-05-07 15:47:18 +0000
3+++ src/txamqp/test/test_broker.py 2016-05-23 14:43:03 +0000
4@@ -81,8 +81,19 @@
5 @inlineCallbacks
6 def test_basic_delivery_immediate(self):
7 """
8- Test basic message delivery where consume is issued before publish
9+ Test basic message delivery where consume is issued before publish.
10+
11+ Will be skipped for RabbitMQ 3.0 or higher, since support for the
12+ 'immediate' flag was removed, see:
13+
14+ http://www.rabbitmq.com/blog/2012/11/19/breaking-things-with-rabbitmq-3-0
15 """
16+ server_properties = self.client.delegate.server_properties
17+ if server_properties["product"] == "RabbitMQ":
18+ version = tuple(map(int, server_properties["version"].split(".")))
19+ if version >= (3, 0, 0):
20+ self.skipTest("Not supported for this broker.")
21+
22 channel = self.channel
23 yield self.exchange_declare(channel, exchange="test-exchange", type="direct")
24 yield self.queue_declare(channel, queue="test-queue")
25
26=== modified file 'src/txamqp/test/test_queue.py'
27--- src/txamqp/test/test_queue.py 2010-10-17 12:14:11 +0000
28+++ src/txamqp/test/test_queue.py 2016-05-23 14:43:03 +0000
29@@ -168,18 +168,37 @@
30 channel.basic_publish(routing_key="delete-me", content=Content("c"))
31 reply = yield channel.queue_delete(queue="delete-me")
32 self.assertEqual(3, reply.message_count)
33- #check that it has gone be declaring passively
34+ #check that it has gone by declaring passively
35 try:
36 yield channel.queue_declare(queue="delete-me", passive="True")
37 self.fail("Queue has not been deleted")
38 except Closed, e:
39 self.assertChannelException(404, e.args[0])
40
41+ @inlineCallbacks
42+ def test_delete_non_existing(self):
43+ """
44+ Attempting to delete a non-existing queue raises a 404.
45+
46+ Will be skipped for Rabbitmq 3.2 or higher, since deleting a non
47+ existing queue silently succeeds, see:
48+
49+ http://hg.rabbitmq.com/rabbitmq-server/rev/8eaec8dfbc41
50+ http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2014-January/032970.html
51+ http://www.rabbitmq.com/specification.html (search for "queue.delete")
52+ """
53+ server_properties = self.client.delegate.server_properties
54+ if server_properties["product"] == "RabbitMQ":
55+ version = tuple(map(int, server_properties["version"].split(".")))
56+ if version >= (3, 2, 0):
57+ self.skipTest("Not supported for this broker.")
58+
59 #check attempted deletion of non-existant queue is handled correctly:
60 channel = yield self.client.channel(2)
61 yield channel.channel_open()
62 try:
63- yield channel.queue_delete(queue="i-dont-exist", if_empty="True")
64+ result = yield channel.queue_delete(queue="i-dont-exist", if_empty="True")
65+ print result
66 self.fail("Expected delete of non-existant queue to fail")
67 except Closed, e:
68 self.assertChannelException(404, e.args[0])
69
70=== modified file 'src/txamqp/testlib.py'
71--- src/txamqp/testlib.py 2012-05-07 15:47:18 +0000
72+++ src/txamqp/testlib.py 2016-05-23 14:43:03 +0000
73@@ -56,6 +56,15 @@
74 VHOST='/'
75 HEARTBEAT = 0
76
77+
78+class TestDelegate(TwistedDelegate):
79+ """A delegate exposing test-related information, e.g server properties."""
80+
81+ def connection_start(self, ch, msg):
82+ self.server_properties = msg.server_properties
83+ super(TestDelegate, self).connection_start(ch, msg)
84+
85+
86 class TestBase(unittest.TestCase):
87
88 clientClass = AMQClient
89@@ -101,7 +110,7 @@
90 heartbeat = heartbeat or self.heartbeat
91 clientClass = clientClass or self.clientClass
92
93- delegate = TwistedDelegate()
94+ delegate = TestDelegate()
95 onConn = Deferred()
96 p = clientClass(delegate, vhost, txamqp.spec.load(spec), heartbeat=heartbeat)
97 f = protocol._InstanceFactory(reactor, p, onConn)

Subscribers

People subscribed via source and target branches

to status/vote changes: