add DefaultPartitioner test
This commit is contained in:
@@ -1,23 +1,43 @@
|
|||||||
|
import pytest
|
||||||
import six
|
import six
|
||||||
from . import unittest
|
|
||||||
|
|
||||||
from kafka.partitioner import (Murmur2Partitioner)
|
from kafka.partitioner import Murmur2Partitioner
|
||||||
|
from kafka.partitioner.default import DefaultPartitioner
|
||||||
|
|
||||||
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):
|
def test_default_partitioner():
|
||||||
p = Murmur2Partitioner(range(1000))
|
partitioner = DefaultPartitioner()
|
||||||
self.assertEqual(p.partition('test'), p.partition(u'test'))
|
all_partitions = list(range(100))
|
||||||
|
available = all_partitions
|
||||||
|
# partitioner should return the same partition for the same key
|
||||||
|
p1 = partitioner(b'foo', all_partitions, available)
|
||||||
|
p2 = partitioner(b'foo', all_partitions, available)
|
||||||
|
assert p1 == p2
|
||||||
|
assert p1 in all_partitions
|
||||||
|
|
||||||
def test_murmur2_java_compatibility(self):
|
# when key is None, choose one of available partitions
|
||||||
p = Murmur2Partitioner(range(1000))
|
assert partitioner(None, all_partitions, [123]) == 123
|
||||||
# compare with output from Kafka's org.apache.kafka.clients.producer.Partitioner
|
|
||||||
self.assertEqual(681, p.partition(b''))
|
# with fallback to all_partitions
|
||||||
self.assertEqual(524, p.partition(b'a'))
|
assert partitioner(None, all_partitions, []) in all_partitions
|
||||||
self.assertEqual(434, p.partition(b'ab'))
|
|
||||||
self.assertEqual(107, p.partition(b'abc'))
|
|
||||||
self.assertEqual(566, p.partition(b'123456789'))
|
def test_hash_bytes():
|
||||||
self.assertEqual(742, p.partition(b'\x00 '))
|
p = Murmur2Partitioner(range(1000))
|
||||||
|
assert p.partition(bytearray(b'test')) == p.partition(b'test')
|
||||||
|
|
||||||
|
|
||||||
|
def test_hash_encoding():
|
||||||
|
p = Murmur2Partitioner(range(1000))
|
||||||
|
assert p.partition('test') == p.partition(u'test')
|
||||||
|
|
||||||
|
|
||||||
|
def test_murmur2_java_compatibility():
|
||||||
|
p = Murmur2Partitioner(range(1000))
|
||||||
|
# compare with output from Kafka's org.apache.kafka.clients.producer.Partitioner
|
||||||
|
assert p.partition(b'') == 681
|
||||||
|
assert p.partition(b'a') == 524
|
||||||
|
assert p.partition(b'ab') == 434
|
||||||
|
assert p.partition(b'abc') == 107
|
||||||
|
assert p.partition(b'123456789') == 566
|
||||||
|
assert p.partition(b'\x00 ') == 742
|
||||||
|
Reference in New Issue
Block a user