123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- from __future__ import absolute_import
-
- from kombu import Connection, Consumer, Exchange, Producer, Queue
- from kombu.five import text_t
- from kombu.message import Message
- from kombu.transport.base import StdChannel, Transport, Management
-
- from kombu.tests.case import Case, Mock
-
-
- class test_StdChannel(Case):
-
- def setUp(self):
- self.conn = Connection('memory://')
- self.channel = self.conn.channel()
- self.channel.queues.clear()
- self.conn.connection.state.clear()
-
- def test_Consumer(self):
- q = Queue('foo', Exchange('foo'))
- print(self.channel.queues)
- cons = self.channel.Consumer(q)
- self.assertIsInstance(cons, Consumer)
- self.assertIs(cons.channel, self.channel)
-
- def test_Producer(self):
- prod = self.channel.Producer()
- self.assertIsInstance(prod, Producer)
- self.assertIs(prod.channel, self.channel)
-
- def test_interface_get_bindings(self):
- with self.assertRaises(NotImplementedError):
- StdChannel().get_bindings()
-
- def test_interface_after_reply_message_received(self):
- self.assertIsNone(
- StdChannel().after_reply_message_received(Queue('foo')),
- )
-
-
- class test_Message(Case):
-
- def setUp(self):
- self.conn = Connection('memory://')
- self.channel = self.conn.channel()
- self.message = Message(self.channel, delivery_tag=313)
-
- def test_postencode(self):
- m = Message(self.channel, text_t('FOO'), postencode='ccyzz')
- with self.assertRaises(LookupError):
- m._reraise_error()
- m.ack()
-
- def test_ack_respects_no_ack_consumers(self):
- self.channel.no_ack_consumers = set(['abc'])
- self.message.delivery_info['consumer_tag'] = 'abc'
- ack = self.channel.basic_ack = Mock()
-
- self.message.ack()
- self.assertNotEqual(self.message._state, 'ACK')
- self.assertFalse(ack.called)
-
- def test_ack_missing_consumer_tag(self):
- self.channel.no_ack_consumers = set(['abc'])
- self.message.delivery_info = {}
- ack = self.channel.basic_ack = Mock()
-
- self.message.ack()
- ack.assert_called_with(self.message.delivery_tag)
-
- def test_ack_not_no_ack(self):
- self.channel.no_ack_consumers = set()
- self.message.delivery_info['consumer_tag'] = 'abc'
- ack = self.channel.basic_ack = Mock()
-
- self.message.ack()
- ack.assert_called_with(self.message.delivery_tag)
-
- def test_ack_log_error_when_no_error(self):
- ack = self.message.ack = Mock()
- self.message.ack_log_error(Mock(), KeyError)
- ack.assert_called_with()
-
- def test_ack_log_error_when_error(self):
- ack = self.message.ack = Mock()
- ack.side_effect = KeyError('foo')
- logger = Mock()
- self.message.ack_log_error(logger, KeyError)
- ack.assert_called_with()
- self.assertTrue(logger.critical.called)
- self.assertIn("Couldn't ack", logger.critical.call_args[0][0])
-
- def test_reject_log_error_when_no_error(self):
- reject = self.message.reject = Mock()
- self.message.reject_log_error(Mock(), KeyError, requeue=True)
- reject.assert_called_with(requeue=True)
-
- def test_reject_log_error_when_error(self):
- reject = self.message.reject = Mock()
- reject.side_effect = KeyError('foo')
- logger = Mock()
- self.message.reject_log_error(logger, KeyError)
- reject.assert_called_with(requeue=False)
- self.assertTrue(logger.critical.called)
- self.assertIn("Couldn't reject", logger.critical.call_args[0][0])
-
-
- class test_interface(Case):
-
- def test_establish_connection(self):
- with self.assertRaises(NotImplementedError):
- Transport(None).establish_connection()
-
- def test_close_connection(self):
- with self.assertRaises(NotImplementedError):
- Transport(None).close_connection(None)
-
- def test_create_channel(self):
- with self.assertRaises(NotImplementedError):
- Transport(None).create_channel(None)
-
- def test_close_channel(self):
- with self.assertRaises(NotImplementedError):
- Transport(None).close_channel(None)
-
- def test_drain_events(self):
- with self.assertRaises(NotImplementedError):
- Transport(None).drain_events(None)
-
- def test_heartbeat_check(self):
- Transport(None).heartbeat_check(Mock(name='connection'))
-
- def test_driver_version(self):
- self.assertTrue(Transport(None).driver_version())
-
- def test_register_with_event_loop(self):
- Transport(None).register_with_event_loop(Mock(name='loop'))
-
- def test_manager(self):
- self.assertTrue(Transport(None).manager)
-
-
- class test_Management(Case):
-
- def test_get_bindings(self):
- m = Management(Mock(name='transport'))
- with self.assertRaises(NotImplementedError):
- m.get_bindings()
|