def test_kafka(self): kafka = Kafka() topic = get_unique_topic('test-kafka') start_offset = 0 input_messages = ['message0', 'message1', 'message2'] kafka.produce(topic, input_messages) time.sleep(MESSAGE_DELAY_SECS) fetch_results = kafka.fetch(topic, start_offset) output_messages = [] offsets = [] for offset, output_message in fetch_results: output_messages.append(output_message) offsets.append(offset) self.assertEquals(input_messages, output_messages) actual_latest_offsets = kafka.offsets(topic, LATEST_OFFSET, max_offsets=1) self.assertEquals(len(actual_latest_offsets), 1) expected_latest_offset = offsets[-1] + Lengths.MESSAGE_HEADER \ + len(output_messages[-1]) self.assertEquals(expected_latest_offset, actual_latest_offsets[0]) actual_earliest_offsets = kafka.offsets(topic, EARLIEST_OFFSET, max_offsets=1) self.assertEquals(len(actual_earliest_offsets), 1) self.assertEquals(0, actual_earliest_offsets[0])
def setUp(self): self.k = Kafka() self.topic_name = get_unique_topic('test-kafka-topic') input_messages = ['Rusty', 'Patty', 'Jack', 'Clyde'] self.k.produce(self.topic_name, input_messages) # If you don't do this sleep, then you can get into a condition where # a fetch immediately after a produce will cause a state where the # produce is duplicated (it really gets that way in Kafka). time.sleep(MESSAGE_DELAY_SECS) self.dogs_queue = self.k.topic(self.topic_name)
def test_cant_connect(self): kafka = Kafka(host=str(time.time())) topic = get_unique_topic('test-cant-connect') self.assertRaises(ConnectionFailure, kafka.produce, topic, 'wont appear')