5
5
6
6
from mock import patch
7
7
8
+ from kafka import KafkaClient
8
9
from kafka .common import (
9
10
ProduceRequest , FetchRequest , Message , ChecksumError ,
10
11
ConsumerFetchSizeTooSmall , ProduceResponse , FetchResponse ,
11
12
OffsetAndMessage , BrokerMetadata , PartitionMetadata
12
13
)
14
+ from kafka .common import KafkaUnavailableError
13
15
from kafka .codec import (
14
16
has_gzip , has_snappy , gzip_encode , gzip_decode ,
15
17
snappy_encode , snappy_decode
@@ -384,6 +386,26 @@ def test_decode_offset_fetch_response(self):
384
386
385
387
class TestKafkaClient (unittest .TestCase ):
386
388
389
+ def test_init_with_list (self ):
390
+
391
+ with patch .object (KafkaClient , 'load_metadata_for_topics' ):
392
+ client = KafkaClient (
393
+ hosts = ['kafka01:9092' , 'kafka02:9092' , 'kafka03:9092' ])
394
+
395
+ self .assertItemsEqual (
396
+ [('kafka01' , 9092 ), ('kafka02' , 9092 ), ('kafka03' , 9092 )],
397
+ client .hosts )
398
+
399
+ def test_init_with_csv (self ):
400
+
401
+ with patch .object (KafkaClient , 'load_metadata_for_topics' ):
402
+ client = KafkaClient (
403
+ hosts = 'kafka01:9092,kafka02:9092,kafka03:9092' )
404
+
405
+ self .assertItemsEqual (
406
+ [('kafka01' , 9092 ), ('kafka02' , 9092 ), ('kafka03' , 9092 )],
407
+ client .hosts )
408
+
387
409
def test_send_broker_unaware_request_fail (self ):
388
410
'Tests that call fails when all hosts are unavailable'
389
411
@@ -402,14 +424,16 @@ def mock_get_conn(host, port):
402
424
return mocked_conns [(host , port )]
403
425
404
426
# patch to avoid making requests before we want it
405
- with patch .object (KafkaClient , '_load_metadata_for_topics ' ), \
427
+ with patch .object (KafkaClient , 'load_metadata_for_topics ' ), \
406
428
patch .object (KafkaClient , '_get_conn' , side_effect = mock_get_conn ):
407
429
408
- client = KafkaClient (hosts = 'kafka01:9092, kafka02:9092' )
430
+ client = KafkaClient (hosts = [ 'kafka01:9092' , ' kafka02:9092'] )
409
431
410
- resp = client ._send_broker_unaware_request (1 , 'fake request' )
411
432
412
- self .assertIsNone (resp )
433
+ self .assertRaises (
434
+ KafkaUnavailableError ,
435
+ client ._send_broker_unaware_request ,
436
+ 1 , 'fake request' )
413
437
414
438
for key , conn in mocked_conns .iteritems ():
415
439
conn .send .assert_called_with (1 , 'fake request' )
@@ -434,7 +458,7 @@ def mock_get_conn(host, port):
434
458
return mocked_conns [(host , port )]
435
459
436
460
# patch to avoid making requests before we want it
437
- with patch .object (KafkaClient , '_load_metadata_for_topics ' ), \
461
+ with patch .object (KafkaClient , 'load_metadata_for_topics ' ), \
438
462
patch .object (KafkaClient , '_get_conn' , side_effect = mock_get_conn ):
439
463
440
464
client = KafkaClient (hosts = 'kafka01:9092,kafka02:9092' )
@@ -444,7 +468,7 @@ def mock_get_conn(host, port):
444
468
self .assertEqual ('valid response' , resp )
445
469
mocked_conns [('kafka02' , 9092 )].recv .assert_called_with (1 )
446
470
447
- @unittest .skip ('requires disabling recursion on _load_metadata_for_topics ' )
471
+ @unittest .skip ('requires disabling recursion on load_metadata_for_topics ' )
448
472
@patch ('kafka.client.KafkaConnection' )
449
473
@patch ('kafka.client.KafkaProtocol' )
450
474
def test_client_load_metadata (self , protocol , conn ):
@@ -474,7 +498,7 @@ def test_client_load_metadata(self, protocol, conn):
474
498
},
475
499
client .topics_to_brokers )
476
500
477
- @unittest .skip ('requires disabling recursion on _load_metadata_for_topics ' )
501
+ @unittest .skip ('requires disabling recursion on load_metadata_for_topics ' )
478
502
@patch ('kafka.client.KafkaConnection' )
479
503
@patch ('kafka.client.KafkaProtocol' )
480
504
def test_client_load_metadata_unassigned_partitions (self , protocol , conn ):
@@ -513,7 +537,7 @@ def test_client_load_metadata_unassigned_partitions(self, protocol, conn):
513
537
},
514
538
client .topics_to_brokers )
515
539
516
- @unittest .skip ('requires disabling recursion on _load_metadata_for_topics ' )
540
+ @unittest .skip ('requires disabling recursion on load_metadata_for_topics ' )
517
541
@patch ('kafka.client.KafkaConnection' )
518
542
@patch ('kafka.client.KafkaProtocol' )
519
543
def test_client_load_metadata_noleader_partitions (self , protocol , conn ):
0 commit comments