Exemplo n.º 1
0
    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])
Exemplo n.º 2
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)
Exemplo n.º 3
0
    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')