def test_consuming_from(self): consumer = self.connection.Consumer() consumer.queues[:] = [Queue("a"), Queue("b")] self.assertFalse(consumer.consuming_from(Queue("c"))) self.assertFalse(consumer.consuming_from("c")) self.assertTrue(consumer.consuming_from(Queue("a"))) self.assertTrue(consumer.consuming_from(Queue("b"))) self.assertTrue(consumer.consuming_from("b"))
def test_consuming_from(self): consumer = self.connection.Consumer() consumer.queues[:] = [Queue('a'), Queue('b')] self.assertFalse(consumer.consuming_from(Queue('c'))) self.assertFalse(consumer.consuming_from('c')) self.assertTrue(consumer.consuming_from(Queue('a'))) self.assertTrue(consumer.consuming_from(Queue('b'))) self.assertTrue(consumer.consuming_from('b'))
def test_eq(self): q1 = Queue("xxx", Exchange("xxx", "direct"), "xxx") q2 = Queue("xxx", Exchange("xxx", "direct"), "xxx") self.assertEqual(q1, q2) self.assertFalse(q1.__eq__(True)) q3 = Queue("yyy", Exchange("xxx", "direct"), "xxx") self.assertNotEqual(q1, q3)
def test_eq(self): q1 = Queue('xxx', Exchange('xxx', 'direct'), 'xxx') q2 = Queue('xxx', Exchange('xxx', 'direct'), 'xxx') self.assertEqual(q1, q2) self.assertFalse(q1.__eq__(True)) q3 = Queue('yyy', Exchange('xxx', 'direct'), 'xxx') self.assertNotEqual(q1, q3)
def test_purge(self): channel = self.connection.channel() b1 = Queue("qname1", self.exchange, "rkey") b2 = Queue("qname2", self.exchange, "rkey") b3 = Queue("qname3", self.exchange, "rkey") b4 = Queue("qname4", self.exchange, "rkey") consumer = Consumer(channel, [b1, b2, b3, b4], auto_declare=True) consumer.purge() self.assertEqual(channel.called.count("queue_purge"), 4)
def setUp(self): self.c = Connection(transport='memory') self.e = Exchange('test_transport_memory') self.q = Queue('test_transport_memory', exchange=self.e, routing_key='test_transport_memory') self.q2 = Queue('test_transport_memory2', exchange=self.e, routing_key='test_transport_memory2')
def setUp(self): self.c = BrokerConnection(transport="memory") self.e = Exchange("test_transport_memory") self.q = Queue("test_transport_memory", exchange=self.e, routing_key="test_transport_memory") self.q2 = Queue("test_transport_memory2", exchange=self.e, routing_key="test_transport_memory2")
def test_purge(self): channel = self.connection.channel() b1 = Queue('qname1', self.exchange, 'rkey') b2 = Queue('qname2', self.exchange, 'rkey') b3 = Queue('qname3', self.exchange, 'rkey') b4 = Queue('qname4', self.exchange, 'rkey') consumer = Consumer(channel, [b1, b2, b3, b4], auto_declare=True) consumer.purge() self.assertEqual(channel.called.count('queue_purge'), 4)
def test_multiple_queues(self): channel = self.connection.channel() b1 = Queue("qname1", self.exchange, "rkey") b2 = Queue("qname2", self.exchange, "rkey") b3 = Queue("qname3", self.exchange, "rkey") b4 = Queue("qname4", self.exchange, "rkey") consumer = Consumer(channel, [b1, b2, b3, b4]) consumer.consume() self.assertEqual(channel.called.count("exchange_declare"), 4) self.assertEqual(channel.called.count("queue_declare"), 4) self.assertEqual(channel.called.count("queue_bind"), 4) self.assertEqual(channel.called.count("basic_consume"), 4) self.assertEqual(len(consumer._active_tags), 4) consumer.cancel() self.assertEqual(channel.called.count("basic_cancel"), 4) self.assertFalse(len(consumer._active_tags))
def _connect(self, channel): self._queue = Queue(channel=channel, **self._queue_kwargs) self._queue.declare() self._consumer = Consumer(channel, [self._queue], callbacks=[self._callback]) self._consumer.consume()
def test_multiple_queues(self): channel = self.connection.channel() b1 = Queue('qname1', self.exchange, 'rkey') b2 = Queue('qname2', self.exchange, 'rkey') b3 = Queue('qname3', self.exchange, 'rkey') b4 = Queue('qname4', self.exchange, 'rkey') consumer = Consumer(channel, [b1, b2, b3, b4]) consumer.consume() self.assertEqual(channel.called.count('exchange_declare'), 4) self.assertEqual(channel.called.count('queue_declare'), 4) self.assertEqual(channel.called.count('queue_bind'), 4) self.assertEqual(channel.called.count('basic_consume'), 4) self.assertEqual(len(consumer._active_tags), 4) consumer.cancel() self.assertEqual(channel.called.count('basic_cancel'), 4) self.assertFalse(len(consumer._active_tags))
def worker_direct(hostname): if isinstance(hostname, Queue): return hostname return Queue(WORKER_DIRECT_QUEUE_FORMAT.format(hostname=hostname), WORKER_DIRECT_EXCHANGE, hostname, auto_delete=True)
def test_set_callbacks(self): channel = self.connection.channel() queue = Queue('qname', self.exchange, 'rkey') callbacks = [lambda x, y: x, lambda x, y: x] consumer = Consumer(channel, queue, auto_declare=True, callbacks=callbacks) self.assertEqual(consumer.callbacks, callbacks)
def test_declare(self): chan = get_conn().channel() b = Queue('foo', self.exchange, 'foo', channel=chan) self.assertTrue(b.is_bound) b.declare() self.assertIn('exchange_declare', chan) self.assertIn('queue_declare', chan) self.assertIn('queue_bind', chan)
def setUp(self): self.__conn = Connection(transport=Transport) self.__conn.connect() self.__exchange = Exchange('test_exchange') self.__routing_key = 'test.routing' self.__queue = Queue('test_queue', self.__exchange, routing_key=self.__routing_key)
def test_decode_error(self): channel = self.connection.channel() b1 = Queue('qname1', self.exchange, 'rkey') consumer = Consumer(channel, [b1]) consumer.channel.throw_decode_error = True with self.assertRaises(ValueError): consumer._receive_callback({'foo': 'bar'})
def test_consume__cancel(self): channel = self.connection.channel() queue = Queue("qname", self.exchange, "rkey") consumer = Consumer(channel, queue, auto_declare=True) consumer.consume() consumer.cancel() self.assertIn("basic_cancel", channel) self.assertFalse(consumer._active_tags)
def test_declare(self): chan = get_conn().channel() b = Queue("foo", self.exchange, "foo", channel=chan) self.assertTrue(b.is_bound) b.declare() self.assertIn("exchange_declare", chan) self.assertIn("queue_declare", chan) self.assertIn("queue_bind", chan)
def test_decode_error(self): channel = self.connection.channel() b1 = Queue("qname1", self.exchange, "rkey") consumer = Consumer(channel, [b1]) consumer.channel.throw_decode_error = True with self.assertRaises(ValueError): consumer._receive_callback({"foo": "bar"})
def test_declare_but_no_exchange(self): q = Queue("a") q.queue_declare = Mock() q.queue_bind = Mock() q.exchange = None q.declare() q.queue_declare.assert_called_with(False, passive=False) q.queue_bind.assert_called_with(False)
def test_revive(self): channel = self.connection.channel() b1 = Queue("qname1", self.exchange, "rkey") consumer = Consumer(channel, [b1]) channel2 = self.connection.channel() consumer.revive(channel2) self.assertIs(consumer.channel, channel2) self.assertIs(consumer.queues[0].channel, channel2) self.assertIs(consumer.queues[0].exchange.channel, channel2)
def test_also_binds_exchange(self): chan = get_conn().channel() b = Queue("foo", self.exchange) self.assertFalse(b.is_bound) self.assertFalse(b.exchange.is_bound) b = b.bind(chan) self.assertTrue(b.is_bound) self.assertTrue(b.exchange.is_bound) self.assertIs(b.channel, b.exchange.channel) self.assertIsNot(b.exchange, self.exchange)
def test___enter____exit__(self): channel = self.connection.channel() queue = Queue("qname", self.exchange, "rkey") consumer = Consumer(channel, queue, auto_declare=True) context = consumer.__enter__() self.assertIs(context, consumer) self.assertTrue(consumer._active_tags) consumer.__exit__() self.assertIn("basic_cancel", channel) self.assertFalse(consumer._active_tags)
def test___enter____exit__(self): channel = self.connection.channel() queue = Queue('qname', self.exchange, 'rkey') consumer = Consumer(channel, queue, auto_declare=True) context = consumer.__enter__() self.assertIs(context, consumer) self.assertTrue(consumer._active_tags) res = consumer.__exit__(None, None, None) self.assertFalse(res) self.assertIn('basic_cancel', channel) self.assertFalse(consumer._active_tags)
def test_basic_reject__requeue(self): channel = self.connection.channel() b1 = Queue('qname1', self.exchange, 'rkey') consumer = Consumer(channel, [b1]) def callback(message_data, message): message.requeue() consumer.register_callback(callback) consumer._receive_callback({'foo': 'bar'}) self.assertIn('basic_reject:requeue', channel)
def test_basic_reject__requeue(self): channel = self.connection.channel() b1 = Queue("qname1", self.exchange, "rkey") consumer = Consumer(channel, [b1]) def callback(message_data, message): message.requeue() consumer.register_callback(callback) consumer._receive_callback({"foo": "bar"}) self.assertIn("basic_reject:requeue", channel)
def test_basic_ack_twice(self): channel = self.connection.channel() b1 = Queue("qname1", self.exchange, "rkey") consumer = Consumer(channel, [b1]) def callback(message_data, message): message.ack() message.ack() consumer.register_callback(callback) with self.assertRaises(MessageStateError): consumer._receive_callback({"foo": "bar"})
def test_basic_reject_twice(self): channel = self.connection.channel() b1 = Queue('qname1', self.exchange, 'rkey') consumer = Consumer(channel, [b1]) def callback(message_data, message): message.reject() message.reject() consumer.register_callback(callback) with self.assertRaises(MessageStateError): consumer._receive_callback({'foo': 'bar'}) self.assertIn('basic_reject', channel)
def __init__(self, connection, handlers=None, routing_key="#", node_id=None, app=None): self.app = app_or_default(app) self.connection = connection if handlers is not None: self.handlers = handlers self.routing_key = routing_key self.node_id = node_id or gen_unique_id() self.queue = Queue("%s.%s" % ("celeryev", self.node_id), exchange=event_exchange, routing_key=self.routing_key, auto_delete=True, durable=False)
def worker_direct(hostname): """Returns :class:`kombu.Queue` that is a direct route to a worker by hostname. :param hostname: The fully qualified node name of a worker (e.g. ``[email protected]``). If passed a :class:`kombu.Queue` instance it will simply return that instead. """ if isinstance(hostname, Queue): return hostname return Queue(WORKER_DIRECT_QUEUE_FORMAT.format(hostname=hostname), WORKER_DIRECT_EXCHANGE, hostname, auto_delete=True)