
Avoid further type changes when Murmur2Partitioner is passed a byte array. Change leftover-bytes logic to match the Java switch statement, and add tests to verify that partition selection matches Java implementation.
24 lines
926 B
Python
24 lines
926 B
Python
import six
|
|
from . import unittest
|
|
|
|
from kafka.partitioner import (Murmur2Partitioner)
|
|
|
|
class TestMurmurPartitioner(unittest.TestCase):
|
|
def test_hash_bytes(self):
|
|
p = Murmur2Partitioner(range(1000))
|
|
self.assertEqual(p.partition(bytearray(b'test')), p.partition(b'test'))
|
|
|
|
def test_hash_encoding(self):
|
|
p = Murmur2Partitioner(range(1000))
|
|
self.assertEqual(p.partition('test'), p.partition(u'test'))
|
|
|
|
def test_murmur2_java_compatibility(self):
|
|
p = Murmur2Partitioner(range(1000))
|
|
# compare with output from Kafka's org.apache.kafka.clients.producer.Partitioner
|
|
self.assertEqual(681, p.partition(b''))
|
|
self.assertEqual(524, p.partition(b'a'))
|
|
self.assertEqual(434, p.partition(b'ab'))
|
|
self.assertEqual(107, p.partition(b'abc'))
|
|
self.assertEqual(566, p.partition(b'123456789'))
|
|
self.assertEqual(742, p.partition(b'\x00 '))
|