async def test_sender__produce_request_not_ok(self): sender = await self._setup_sender() tp = TopicPartition("my_topic", 0) batch_mock = mock.Mock() send_handler = SendProduceReqHandler( sender, {tp: batch_mock}) def create_response(error_type): cls = ProduceResponse[4] resp = cls( throttle_time_ms=300, topics=[ ("my_topic", [ (0, error_type.errno, 0, -1) ]) ] ) return resp # Special case for DuplicateSequenceNumber resp = create_response(DuplicateSequenceNumber) send_handler.handle_response(resp) batch_mock.done.assert_called_with(0, -1) batch_mock.failure.assert_not_called() self.assertEqual(send_handler._to_reenqueue, []) batch_mock.reset_mock() # Special case for InvalidProducerEpoch resp = create_response(InvalidProducerEpoch) send_handler.handle_response(resp) batch_mock.done.assert_not_called() self.assertNotEqual(batch_mock.failure.call_count, 0) self.assertEqual(send_handler._to_reenqueue, [])
async def test_sender__produce_request_create(self): sender = await self._setup_sender() tp = TopicPartition("my_topic", 0) batch_mock = mock.Mock() batch_mock.get_data_buffer = mock.Mock(return_value=b"123") send_handler = SendProduceReqHandler(sender, {tp: batch_mock}) req = send_handler.create_request() self.assertEqual(req.API_KEY, ProduceRequest[0].API_KEY) if req.API_VERSION > 2: self.assertEqual(req.transactional_id, "test_tid") self.assertEqual(req.required_acks, -1) self.assertEqual(req.timeout, 40000) self.assertEqual(req.topics, [("my_topic", [(0, b"123")])])
async def test_sender__produce_request_create(self): sender = await self._setup_sender() tp = TopicPartition("my_topic", 0) batch_mock = mock.Mock() batch_mock.get_data_buffer = mock.Mock(return_value=b"123") send_handler = SendProduceReqHandler( sender, {tp: batch_mock}) req = send_handler.create_request() self.assertEqual(req.API_KEY, ProduceRequest[0].API_KEY) if req.API_VERSION > 2: self.assertEqual(req.transactional_id, "test_tid") self.assertEqual(req.required_acks, -1) self.assertEqual(req.timeout, 40000) self.assertEqual(req.topics, [("my_topic", [(0, b"123")])])
async def test_sender__produce_request_ok(self): sender = await self._setup_sender() tp = TopicPartition("my_topic", 0) batch_mock = mock.Mock() send_handler = SendProduceReqHandler(sender, {tp: batch_mock}) def create_response(error_type): cls = ProduceResponse[4] resp = cls(throttle_time_ms=300, topics=[("my_topic", [(0, error_type.errno, 100, 200)]) ]) return resp # Special case for DuplicateSequenceNumber resp = create_response(NoError) send_handler.handle_response(resp) batch_mock.done.assert_called_with(100, 200, None) self.assertEqual(send_handler._to_reenqueue, [])
async def test_sender__produce_request_not_ok(self): sender = await self._setup_sender() tp = TopicPartition("my_topic", 0) batch_mock = mock.Mock() send_handler = SendProduceReqHandler(sender, {tp: batch_mock}) def create_response(error_type): cls = ProduceResponse[4] resp = cls(throttle_time_ms=300, topics=[("my_topic", [(0, error_type.errno, 0, -1)])]) return resp # Special case for DuplicateSequenceNumber resp = create_response(DuplicateSequenceNumber) send_handler.handle_response(resp) batch_mock.done.assert_called_with(0, -1, None) batch_mock.failure.assert_not_called() self.assertEqual(send_handler._to_reenqueue, []) batch_mock.reset_mock() # Special case for InvalidProducerEpoch resp = create_response(InvalidProducerEpoch) send_handler.handle_response(resp) batch_mock.done.assert_not_called() self.assertNotEqual(batch_mock.failure.call_count, 0) self.assertEqual(send_handler._to_reenqueue, [])
async def test_sender__produce_request_ok(self): sender = await self._setup_sender() tp = TopicPartition("my_topic", 0) batch_mock = mock.Mock() send_handler = SendProduceReqHandler( sender, {tp: batch_mock}) def create_response(error_type): cls = ProduceResponse[4] resp = cls( throttle_time_ms=300, topics=[ ("my_topic", [ (0, error_type.errno, 100, 200) ]) ] ) return resp # Special case for DuplicateSequenceNumber resp = create_response(NoError) send_handler.handle_response(resp) batch_mock.done.assert_called_with(100, 200) self.assertEqual(send_handler._to_reenqueue, [])