summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/integration.py43
-rw-r--r--test/unit.py47
2 files changed, 71 insertions, 19 deletions
diff --git a/test/integration.py b/test/integration.py
index 232700f..7680682 100644
--- a/test/integration.py
+++ b/test/integration.py
@@ -118,32 +118,41 @@ class IntegrationTest(unittest.TestCase):
self.kafka.send_message_set(req)
self.assertTrue(self.server.wait_for("Created log for 'test-produce'-1"))
- def test_produce_consume(self):
+ def _test_produce_consume(self, topic, create_func):
# Send two messages and consume them
- message1 = KafkaClient.create_message("testing 1")
- message2 = KafkaClient.create_message("testing 2")
- req = ProduceRequest("test-produce-consume", 0, [message1, message2])
+ message1 = create_func("testing 1")
+ message2 = create_func("testing 2")
+ req = ProduceRequest(topic, 0, [message1, message2])
self.kafka.send_message_set(req)
- self.assertTrue(self.server.wait_for("Created log for 'test-produce-consume'-0"))
- self.assertTrue(self.server.wait_for("Flushing log 'test-produce-consume-0'"))
- req = FetchRequest("test-produce-consume", 0, 0, 1024)
+ self.assertTrue(self.server.wait_for("Created log for '%s'-0" % topic))
+ self.assertTrue(self.server.wait_for("Flushing log '%s-0'" % topic))
+ req = FetchRequest(topic, 0, 0, 1024)
(messages, req) = self.kafka.get_message_set(req)
self.assertEquals(len(messages), 2)
- self.assertEquals(messages[0], message1)
- self.assertEquals(messages[1], message2)
+ self.assertEquals(messages[0].payload, "testing 1")
+ self.assertEquals(messages[1].payload, "testing 2")
# Do the same, but for a different partition
- message3 = KafkaClient.create_message("testing 3")
- message4 = KafkaClient.create_message("testing 4")
- req = ProduceRequest("test-produce-consume", 1, [message3, message4])
+ message3 = create_func("testing 3")
+ message4 = create_func("testing 4")
+ req = ProduceRequest(topic, 1, [message3, message4])
self.kafka.send_message_set(req)
- self.assertTrue(self.server.wait_for("Created log for 'test-produce-consume'-1"))
- self.assertTrue(self.server.wait_for("Flushing log 'test-produce-consume-1'"))
- req = FetchRequest("test-produce-consume", 1, 0, 1024)
+ self.assertTrue(self.server.wait_for("Created log for '%s'-1" % topic))
+ self.assertTrue(self.server.wait_for("Flushing log '%s-1'" % topic))
+ req = FetchRequest(topic, 1, 0, 1024)
(messages, req) = self.kafka.get_message_set(req)
self.assertEquals(len(messages), 2)
- self.assertEquals(messages[0], message3)
- self.assertEquals(messages[1], message4)
+ self.assertEquals(messages[0].payload, "testing 3")
+ self.assertEquals(messages[1].payload, "testing 4")
+
+ def test_produce_consume(self):
+ self._test_produce_consume("test-produce-consume", KafkaClient.create_message)
+
+ def test_produce_consume_snappy(self):
+ self._test_produce_consume("test-produce-consume-snappy", KafkaClient.create_snappy_message)
+
+ def test_produce_consume_gzip(self):
+ self._test_produce_consume("test-produce-consume-gzip", KafkaClient.create_gzip_message)
def test_check_offset(self):
# Produce/consume a message, check that the next offset looks correct
diff --git a/test/unit.py b/test/unit.py
index 7cb1aed..5961509 100644
--- a/test/unit.py
+++ b/test/unit.py
@@ -5,18 +5,20 @@ import unittest
from kafka.client import KafkaClient, ProduceRequest, FetchRequest, length_prefix_message
from kafka.codec import gzip_encode, gzip_decode
+from kafka.codec import snappy_encode, snappy_decode
ITERATIONS = 1000
STRLEN = 100
def random_string():
- return os.urandom(random.randint(0, STRLEN))
+ return os.urandom(random.randint(1, STRLEN))
class TestPackage(unittest.TestCase):
def test_top_level_namespace(self):
import kafka as kafka1
self.assertEquals(kafka1.KafkaClient.__name__, "KafkaClient")
self.assertEquals(kafka1.gzip_encode.__name__, "gzip_encode")
+ self.assertEquals(kafka1.snappy_encode.__name__, "snappy_encode")
self.assertEquals(kafka1.client.__name__, "kafka.client")
self.assertEquals(kafka1.codec.__name__, "kafka.codec")
@@ -41,6 +43,9 @@ class TestPackage(unittest.TestCase):
from kafka import gzip_encode as gzip_encode2
self.assertEquals(gzip_encode2.__name__, "gzip_encode")
+ from kafka import snappy_encode as snappy_encode2
+ self.assertEquals(snappy_encode2.__name__, "snappy_encode")
+
class TestMisc(unittest.TestCase):
def test_length_prefix(self):
for i in xrange(ITERATIONS):
@@ -55,6 +60,12 @@ class TestCodec(unittest.TestCase):
s2 = gzip_decode(gzip_encode(s1))
self.assertEquals(s1,s2)
+ def test_snappy(self):
+ for i in xrange(ITERATIONS):
+ s1 = random_string()
+ s2 = snappy_decode(snappy_encode(s1))
+ self.assertEquals(s1,s2)
+
class TestMessage(unittest.TestCase):
def test_create(self):
msg = KafkaClient.create_message("testing")
@@ -75,6 +86,18 @@ class TestMessage(unittest.TestCase):
self.assertEquals(inner.payload, "testing")
self.assertEquals(inner.crc, -386704890)
+ def test_create_snappy(self):
+ msg = KafkaClient.create_snappy_message("testing")
+ self.assertEquals(msg.magic, 1)
+ self.assertEquals(msg.attributes, 2)
+ self.assertEquals(msg.crc, -62350868)
+ (messages, _) = KafkaClient.read_message_set(snappy_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)
@@ -110,6 +133,15 @@ class TestMessage(unittest.TestCase):
self.assertEquals(messages[1].payload, "two")
self.assertEquals(messages[2].payload, "three")
+ def test_message_snappy(self):
+ msg = KafkaClient.create_snappy_message("one", "two", "three")
+ enc = KafkaClient.encode_message(msg)
+ (messages, read) = KafkaClient.read_message_set(enc)
+ self.assertEquals(len(messages), 3)
+ self.assertEquals(messages[0].payload, "one")
+ 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)
@@ -122,7 +154,7 @@ class TestMessage(unittest.TestCase):
def test_message_gzip_random(self):
for i in xrange(ITERATIONS):
- n = random.randint(0, 10)
+ n = random.randint(1, 10)
strings = [random_string() for j in range(n)]
msg = KafkaClient.create_gzip_message(*strings)
enc = KafkaClient.encode_message(msg)
@@ -131,6 +163,17 @@ class TestMessage(unittest.TestCase):
for j in range(n):
self.assertEquals(messages[j].payload, strings[j])
+ def test_message_snappy_random(self):
+ for i in xrange(ITERATIONS):
+ n = random.randint(1, 10)
+ strings = [random_string() for j in range(n)]
+ msg = KafkaClient.create_snappy_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])
+
class TestRequests(unittest.TestCase):
def test_produce_request(self):
req = ProduceRequest("my-topic", 0, [KafkaClient.create_message("testing")])