def test_start(self): with patch('celery.contrib.migrate.eventloop') as evloop: app = Mock() filter = Mock(name='filter') conn = Connection('memory://') evloop.side_effect = StopFiltering() app.amqp.queues = {'foo': Queue('foo'), 'bar': Queue('bar')} consumer = app.amqp.TaskConsumer.return_value = Mock(name='consum') consumer.queues = list(app.amqp.queues.values()) consumer.channel = conn.default_channel consumer.__enter__ = Mock(name='consumer.__enter__') consumer.__exit__ = Mock(name='consumer.__exit__') consumer.callbacks = [] def register_callback(x): consumer.callbacks.append(x) consumer.register_callback = register_callback start_filter(app, conn, filter, queues='foo,bar', ack_messages=True) body = {'task': 'add', 'id': 'id'} for callback in consumer.callbacks: callback(body, Message(body)) consumer.callbacks[:] = [] cb = Mock(name='callback=') start_filter(app, conn, filter, tasks='add,mul', callback=cb) for callback in consumer.callbacks: callback(body, Message(body)) self.assertTrue(cb.called) on_declare_queue = Mock() start_filter(app, conn, filter, tasks='add,mul', queues='foo', on_declare_queue=on_declare_queue) self.assertTrue(on_declare_queue.called) start_filter(app, conn, filter, queues=['foo', 'bar']) consumer.callbacks[:] = [] state = State() start_filter(app, conn, filter, tasks='add,mul', callback=cb, state=state, limit=1) stop_filtering_raised = False for callback in consumer.callbacks: try: callback(body, Message(body)) except StopFiltering: stop_filtering_raised = True self.assertTrue(state.count) self.assertTrue(stop_filtering_raised)
def test_start(self): with patch('celery.contrib.migrate.eventloop') as evloop: app = Mock() filt = Mock(name='filter') conn = Connection('memory://') evloop.side_effect = StopFiltering() app.amqp.queues = {'foo': Queue('foo'), 'bar': Queue('bar')} consumer = app.amqp.TaskConsumer.return_value = Mock(name='consum') consumer.queues = list(app.amqp.queues.values()) consumer.channel = conn.default_channel consumer.__enter__ = Mock(name='consumer.__enter__') consumer.__exit__ = Mock(name='consumer.__exit__') consumer.callbacks = [] def register_callback(x): consumer.callbacks.append(x) consumer.register_callback = register_callback start_filter(app, conn, filt, queues='foo,bar', ack_messages=True) body = {'task': 'add', 'id': 'id'} for callback in consumer.callbacks: callback(body, Message(body)) consumer.callbacks[:] = [] cb = Mock(name='callback=') start_filter(app, conn, filt, tasks='add,mul', callback=cb) for callback in consumer.callbacks: callback(body, Message(body)) self.assertTrue(cb.called) on_declare_queue = Mock() start_filter(app, conn, filt, tasks='add,mul', queues='foo', on_declare_queue=on_declare_queue) self.assertTrue(on_declare_queue.called) start_filter(app, conn, filt, queues=['foo', 'bar']) consumer.callbacks[:] = [] state = State() start_filter(app, conn, filt, tasks='add,mul', callback=cb, state=state, limit=1) stop_filtering_raised = False for callback in consumer.callbacks: try: callback(body, Message(body)) except StopFiltering: stop_filtering_raised = True self.assertTrue(state.count) self.assertTrue(stop_filtering_raised)
def test_start(self): with patch("celery.contrib.migrate.eventloop") as evloop: app = Mock() filt = Mock(name="filter") conn = Connection("memory://") evloop.side_effect = StopFiltering() app.amqp.queues = {"foo": Queue("foo"), "bar": Queue("bar")} consumer = app.amqp.TaskConsumer.return_value = Mock(name="consum") consumer.queues = list(app.amqp.queues.values()) consumer.channel = conn.default_channel consumer.__enter__ = Mock(name="consumer.__enter__") consumer.__exit__ = Mock(name="consumer.__exit__") consumer.callbacks = [] def register_callback(x): consumer.callbacks.append(x) consumer.register_callback = register_callback start_filter(app, conn, filt, queues="foo,bar", ack_messages=True) body = {"task": "add", "id": "id"} for callback in consumer.callbacks: callback(body, Message(body)) consumer.callbacks[:] = [] cb = Mock(name="callback=") start_filter(app, conn, filt, tasks="add,mul", callback=cb) for callback in consumer.callbacks: callback(body, Message(body)) cb.assert_called() on_declare_queue = Mock() start_filter(app, conn, filt, tasks="add,mul", queues="foo", on_declare_queue=on_declare_queue) on_declare_queue.assert_called() start_filter(app, conn, filt, queues=["foo", "bar"]) consumer.callbacks[:] = [] state = State() start_filter(app, conn, filt, tasks="add,mul", callback=cb, state=state, limit=1) stop_filtering_raised = False for callback in consumer.callbacks: try: callback(body, Message(body)) except StopFiltering: stop_filtering_raised = True assert state.count assert stop_filtering_raised