def test_correlates_responses(self, read_message): request1 = metadata.MetadataRequest() request2 = metadata.MetadataRequest(topics=["example.foo"]) response1 = metadata.MetadataResponse( brokers=[metadata.Broker(broker_id=1, host="broker01", port=333)], topics=[ metadata.TopicMetadata(error_code=0, name="example.foo"), metadata.TopicMetadata(error_code=0, name="example.bar"), ] ) response1.correlation_id = request1.correlation_id response2 = metadata.MetadataResponse( brokers=[metadata.Broker(broker_id=1, host="broker01", port=333)], topics=[ metadata.TopicMetadata(error_code=0, name="example.foo"), ] ) response2.correlation_id = request2.correlation_id # response2 comes over the wire before response1 responses = [response2, response1] def get_next_response(*args): return self.future_value(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) actual_responses = [conn.send(request1), conn.send(request2)] yield conn.read_loop() # first response is the one with two topics self.assertEqual(len(actual_responses[0].result().topics), 2) self.assertEqual(len(actual_responses[1].result().topics), 1)
def test_correlates_responses(self, read_message): request1 = metadata.MetadataRequest() request2 = metadata.MetadataRequest(topics=["example.foo"]) response1 = metadata.MetadataResponse( brokers=[metadata.Broker(broker_id=1, host="broker01", port=333)], topics=[ metadata.TopicMetadata(error_code=0, name="example.foo"), metadata.TopicMetadata(error_code=0, name="example.bar"), ]) response1.correlation_id = request1.correlation_id response2 = metadata.MetadataResponse( brokers=[metadata.Broker(broker_id=1, host="broker01", port=333)], topics=[ metadata.TopicMetadata(error_code=0, name="example.foo"), ]) response2.correlation_id = request2.correlation_id # response2 comes over the wire before response1 responses = [response2, response1] def get_next_response(*args): return self.future_value(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) actual_responses = [conn.send(request1), conn.send(request2)] yield conn.read_loop() # first response is the one with two topics self.assertEqual(len(actual_responses[0].result().topics), 2) self.assertEqual(len(actual_responses[1].result().topics), 1)