summaryrefslogtreecommitdiff
path: root/test/test_unit.py
diff options
context:
space:
mode:
authormrtheb <mrlabbe@gmail.com>2014-01-31 22:08:08 -0500
committermrtheb <mrlabbe@gmail.com>2014-01-31 22:08:08 -0500
commitb253166bec5a7d836767523b1ad5275eeed6b83f (patch)
tree9ea519ee6a55df0ce85356a14a55ed354626a590 /test/test_unit.py
parent72fdf391db112c0d7642371c8284d5dbd3b39fbd (diff)
downloadkafka-python-b253166bec5a7d836767523b1ad5275eeed6b83f.tar.gz
check for broker None in send_broker_aware_request (added test for it)
Diffstat (limited to 'test/test_unit.py')
-rw-r--r--test/test_unit.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/test_unit.py b/test/test_unit.py
index b8af242..f0edd16 100644
--- a/test/test_unit.py
+++ b/test/test_unit.py
@@ -517,5 +517,33 @@ class TestClient(unittest.TestCase):
self.assertEqual(brokers[0], client._get_leader_for_partition('topic_noleader', 0))
self.assertEqual(brokers[1], client._get_leader_for_partition('topic_noleader', 1))
+ @patch('kafka.client.KafkaConnection')
+ @patch('kafka.client.KafkaProtocol')
+ def test_send_produce_request_raises_when_noleader(self, protocol, conn):
+ "Getting leader for partitions returns None when the partiion has no leader"
+
+ conn.recv.return_value = 'response' # anything but None
+
+ brokers = {}
+ brokers[0] = BrokerMetadata(0, 'broker_1', 4567)
+ brokers[1] = BrokerMetadata(1, 'broker_2', 5678)
+
+ topics = {}
+ topics['topic_noleader'] = {
+ 0: PartitionMetadata('topic_noleader', 0, -1, [], []),
+ 1: PartitionMetadata('topic_noleader', 1, -1, [], [])
+ }
+ protocol.decode_metadata_response.return_value = (brokers, topics)
+
+ client = KafkaClient(host='broker_1', port=4567)
+
+ requests = [ProduceRequest(
+ "topic_noleader", 0,
+ [create_message("a"), create_message("b")])]
+
+ self.assertRaises(
+ PartitionUnavailableError,
+ client.send_produce_request, requests)
+
if __name__ == '__main__':
unittest.main()