diff --git a/coolamqp/orders.py b/coolamqp/orders.py index abbee28b1f22ee0b400ac72941a9d03d68ce0258..e6525343c7a7f99f2afd62a80b012e891953406d 100644 --- a/coolamqp/orders.py +++ b/coolamqp/orders.py @@ -106,17 +106,16 @@ class CancelQueue(Order): self.queue = queue -class AcknowledgeMessage(Order): - """ACK a message""" + +class _AcksAndNacks(Order): + """related to acking and nacking""" def __init__(self, connect_id, delivery_tag, on_completed): Order.__init__(self, on_completed=on_completed) self.connect_id = connect_id self.delivery_tag = delivery_tag +class AcknowledgeMessage(_AcksAndNacks): + """ACK a message""" -class NAcknowledgeMessage(Order): +class NAcknowledgeMessage(_AcksAndNacks): """NACK a message""" - def __init__(self, connect_id, delivery_tag, on_completed): - Order.__init__(self, on_completed=on_completed) - self.connect_id = connect_id - self.delivery_tag = delivery_tag diff --git a/tests/test_basics.py b/tests/test_basics.py index d67ffec25c5f7d6448284bc132358a5ecd111f73..623ed3b702c8e4310dfc0212596af666d118b14b 100644 --- a/tests/test_basics.py +++ b/tests/test_basics.py @@ -1,6 +1,7 @@ #coding=UTF-8 from __future__ import absolute_import, division, print_function import unittest +import six from coolamqp import Cluster, ClusterNode, Queue, MessageReceived, ConnectionUp, \ ConnectionDown, ConsumerCancelled, Message @@ -19,7 +20,7 @@ class TestBasics(unittest.TestCase): myq = Queue('myqueue', exclusive=True) self.amqp.consume(myq) - self.amqp.send(Message(b'what the fuck'), '', routing_key='myqueue') + self.amqp.send(Message('what the fuck'), '', routing_key='myqueue') p = self.amqp.drain(wait=4) self.assertIsInstance(p, MessageReceived) @@ -34,16 +35,16 @@ class TestBasics(unittest.TestCase): myq = Queue('myqueue', exclusive=True) self.amqp.consume(myq) - self.amqp.send(Message(b'what the fuck'), '', routing_key='myqueue') + self.amqp.send(Message('what the fuck'), '', routing_key='myqueue') p = self.amqp.drain(wait=4) self.assertIsInstance(p, MessageReceived) - self.assertEquals(p.message.body, b'what the fuck') + self.assertEquals(p.message.body, 'what the fuck') p.message.nack() p = self.amqp.drain(wait=4) self.assertIsInstance(p, MessageReceived) - self.assertEquals(p.message.body, b'what the fuck') + self.assertEquals(six.binary_type(p.message.body), 'what the fuck') self.amqp.delete_queue(myq) @@ -51,11 +52,11 @@ class TestBasics(unittest.TestCase): myq = Queue('myqueue', exclusive=True) self.amqp.consume(myq) - self.amqp.send(Message(b'what the fuck'), '', routing_key='myqueue') + self.amqp.send(Message('what the fuck'), '', routing_key='myqueue') p = self.amqp.drain(wait=10) self.assertIsInstance(p, MessageReceived) - self.assertEquals(p.message.body, b'what the fuck') + self.assertEquals(p.message.body, 'what the fuck') def test_consumer_cancelled_on_queue_deletion(self): myq = Queue('myqueue', exclusive=True) diff --git a/tests/test_failures.py b/tests/test_failures.py new file mode 100644 index 0000000000000000000000000000000000000000..2347f667bdc43f0e87ef112b246c971a37eeb082 --- /dev/null +++ b/tests/test_failures.py @@ -0,0 +1,24 @@ +#coding=UTF-8 +from __future__ import absolute_import, division, print_function + +import unittest +import os +from coolamqp import Cluster, ClusterNode, Queue, MessageReceived, ConnectionUp, \ + ConnectionDown, ConsumerCancelled, Message + + +class TestFailures(unittest.TestCase): + + def setUp(self): + self.amqp = Cluster([ClusterNode('127.0.0.1', 'guest', 'guest')]) + self.amqp.start() + self.assertIsInstance(self.amqp.drain(1), ConnectionUp) + + def tearDown(self): + self.amqp.shutdown() + + def test_connection_down_and_up(self): + """are messages generated at all? does it reconnect?""" + os.system("sudo service rabbitmq-server restart") + self.assertIsInstance(self.amqp.drain(wait=4), ConnectionDown) + self.assertIsInstance(self.amqp.drain(wait=6), ConnectionUp)