diff options
author | David Arthur <mumrah@gmail.com> | 2012-09-27 11:22:15 -0400 |
---|---|---|
committer | David Arthur <mumrah@gmail.com> | 2012-09-27 11:22:15 -0400 |
commit | 7ffa590b46a6061288b537e1c161f0bfa4748b0b (patch) | |
tree | 1d71ac050ac3c5ff390144d4d2ed063e6bdccf9e /test.py | |
parent | 7486d8704f21acb454c23764162d22a59cdfa3e8 (diff) | |
download | kafka-python-7ffa590b46a6061288b537e1c161f0bfa4748b0b.tar.gz |
More unit tests
Run like:
python -m unittest -v test
Diffstat (limited to 'test.py')
-rw-r--r-- | test.py | 66 |
1 files changed, 64 insertions, 2 deletions
@@ -1,9 +1,51 @@ -import binascii +import os +import random +import struct import unittest from kafka import KafkaClient +from kafka import gzip_encode, gzip_decode, length_prefix_message + +ITERATIONS = 1000 +STRLEN = 100 + +def random_string(): + return os.urandom(random.randint(0, STRLEN)) + +class TestMisc(unittest.TestCase): + def test_length_prefix(self): + for i in xrange(ITERATIONS): + s1 = random_string() + s2 = length_prefix_message(s1) + self.assertEquals(struct.unpack('>i', s2[0:4])[0], len(s1)) + +class TestCodec(unittest.TestCase): + def test_gzip(self): + for i in xrange(ITERATIONS): + s1 = random_string() + s2 = gzip_decode(gzip_encode(s1)) + self.assertEquals(s1,s2) class TestMessage(unittest.TestCase): + def test_create(self): + msg = KafkaClient.create_message("testing") + self.assertEquals(msg.payload, "testing") + self.assertEquals(msg.magic, 1) + self.assertEquals(msg.attributes, 0) + self.assertEquals(msg.crc, -386704890) + + def test_create_gzip(self): + msg = KafkaClient.create_gzip_message("testing") + self.assertEquals(msg.magic, 1) + self.assertEquals(msg.attributes, 1) + # Can't check the crc or payload for gzip since it's non-deterministic + (messages, _) = KafkaClient.read_message_set(gzip_decode(msg.payload)) + inner = messages[0] + self.assertEquals(inner.magic, 1) + self.assertEquals(inner.attributes, 0) + self.assertEquals(inner.payload, "testing") + self.assertEquals(inner.crc, -386704890) + def test_message_simple(self): msg = KafkaClient.create_message("testing") enc = KafkaClient.encode_message(msg) @@ -28,7 +70,6 @@ class TestMessage(unittest.TestCase): self.assertEquals(messages[0].payload, "one") self.assertEquals(messages[1].payload, "two") self.assertEquals(messages[2].payload, "three") - def test_message_gzip(self): msg = KafkaClient.create_gzip_message("one", "two", "three") @@ -40,5 +81,26 @@ class TestMessage(unittest.TestCase): self.assertEquals(messages[1].payload, "two") self.assertEquals(messages[2].payload, "three") + def test_message_simple_random(self): + for i in xrange(ITERATIONS): + n = random.randint(0, 10) + msgs = [KafkaClient.create_message(random_string()) for j in range(n)] + enc = KafkaClient.encode_message_set(msgs) + (messages, read) = KafkaClient.read_message_set(enc) + self.assertEquals(len(messages), n) + for j in range(n): + self.assertEquals(messages[j], msgs[j]) + + def test_message_gzip_random(self): + for i in xrange(ITERATIONS): + n = random.randint(0, 10) + strings = [random_string() for j in range(n)] + msg = KafkaClient.create_gzip_message(*strings) + enc = KafkaClient.encode_message(msg) + (messages, read) = KafkaClient.read_message_set(enc) + self.assertEquals(len(messages), n) + for j in range(n): + self.assertEquals(messages[j].payload, strings[j]) + if __name__ == '__main__': unittest.main() |