Ejemplo n.º 1
0
    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, [])
Ejemplo n.º 2
0
    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")])])
Ejemplo n.º 3
0
    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")])])
Ejemplo n.º 4
0
    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, [])
Ejemplo n.º 5
0
    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, [])
Ejemplo n.º 6
0
    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, [])