Esempio n. 1
0
    def test_abort_fails_all_pending_requests(self, read_message):
        request1 = metadata.MetadataRequest()
        request2 = metadata.MetadataRequest(topics=["example.foo"])

        mock_responses = [
            Mock(correlation_id=request1.correlation_id),
            Mock(correlation_id=request2.correlation_id),
        ]

        def get_next_response(*args):
            return self.future_value(mock_responses.pop(0))

        read_message.side_effect = get_next_response

        conn = Connection("localhost", 1234)
        conn.stream = Mock()
        conn.stream.write.return_value = self.future_value(None)

        responses = [conn.send(request1), conn.send(request2)]

        conn.abort()
        conn.abort()  # second abort is a no-op

        for response in responses:
            error = response.exception()
            self.assertEqual(error.host, "localhost")
            self.assertEqual(error.port, 1234)