async def test_bulk_flushes_on_timeout_even_with_bucket_not_full(self): class MyBucket(Bucket): def pop_all(self): global items items = self._items self._items = [] return items handler_mock = CoroutineMock(__name__="handler") self.one_route_fixture["handler"] = handler_mock self.one_route_fixture["options"]["bulk_size"] = 3 consumer = Consumer( self.one_route_fixture, *self.connection_parameters, bucket_class=MyBucket, ) msgs = [ self._make_msg(delivery_tag=10), self._make_msg(delivery_tag=11), ] await consumer.on_queue_message(msgs[0]) handler_mock.assert_not_awaited() await consumer.on_queue_message(msgs[1]) handler_mock.assert_not_awaited() self.loop.create_task(consumer._flush_clocked()) # Realizando sleep para devolver o loop para o clock await asyncio.sleep(0.1) handler_mock.assert_awaited_once_with(items) msgs[0].ack.assert_awaited_once() msgs[1].ack.assert_awaited_once() msgs[0].reject.assert_not_awaited() msgs[1].reject.assert_not_awaited()
async def test_do_not_flush_if_bucket_is_already_empty_when_timeout_expires( self): class MyBucket(Bucket): def pop_all(self): global items items = self._items self._items = [] return items handler_mock = CoroutineMock() self.one_route_fixture["handler"] = handler_mock self.one_route_fixture["options"]["bulk_size"] = 3 consumer = Consumer( self.one_route_fixture, *self.connection_parameters, bucket_class=MyBucket, ) self.loop.create_task(consumer._flush_clocked()) # Realizando sleep para devolver o loop para o clock await asyncio.sleep(0.1) self.assertEqual(0, handler_mock.await_count)