@@ -293,8 +293,106 @@ def test_set_topics():
293
293
pass
294
294
295
295
296
- def test_maybe_refresh_metadata ():
297
- pass
296
+ def test_maybe_refresh_metadata_ttl (mocker ):
297
+ mocker .patch .object (KafkaClient , '_bootstrap' )
298
+ _poll = mocker .patch .object (KafkaClient , '_poll' )
299
+
300
+ cli = KafkaClient (request_timeout_ms = 9999999 , retry_backoff_ms = 2222 )
301
+
302
+ tasks = mocker .patch .object (cli ._delayed_tasks , 'next_at' )
303
+ tasks .return_value = 9999999
304
+
305
+ ttl = mocker .patch .object (cli .cluster , 'ttl' )
306
+ ttl .return_value = 1234
307
+
308
+ cli .poll (timeout_ms = 9999999 , sleep = True )
309
+ _poll .assert_called_with (1.234 , sleep = True )
310
+
311
+
312
+ def test_maybe_refresh_metadata_backoff (mocker ):
313
+ mocker .patch .object (KafkaClient , '_bootstrap' )
314
+ _poll = mocker .patch .object (KafkaClient , '_poll' )
315
+
316
+ cli = KafkaClient (request_timeout_ms = 9999999 , retry_backoff_ms = 2222 )
317
+
318
+ tasks = mocker .patch .object (cli ._delayed_tasks , 'next_at' )
319
+ tasks .return_value = 9999999
320
+
321
+ ttl = mocker .patch .object (cli .cluster , 'ttl' )
322
+ ttl .return_value = 0
323
+
324
+ now = time .time ()
325
+ t = mocker .patch ('time.time' )
326
+ t .return_value = now
327
+ cli ._last_no_node_available_ms = now * 1000
328
+
329
+ cli .poll (timeout_ms = 9999999 , sleep = True )
330
+ _poll .assert_called_with (2.222 , sleep = True )
331
+
332
+
333
+ def test_maybe_refresh_metadata_in_progress (mocker ):
334
+ mocker .patch .object (KafkaClient , '_bootstrap' )
335
+ _poll = mocker .patch .object (KafkaClient , '_poll' )
336
+
337
+ cli = KafkaClient (request_timeout_ms = 9999999 , retry_backoff_ms = 2222 )
338
+
339
+ tasks = mocker .patch .object (cli ._delayed_tasks , 'next_at' )
340
+ tasks .return_value = 9999999
341
+
342
+ ttl = mocker .patch .object (cli .cluster , 'ttl' )
343
+ ttl .return_value = 0
344
+
345
+ cli ._metadata_refresh_in_progress = True
346
+
347
+ cli .poll (timeout_ms = 9999999 , sleep = True )
348
+ _poll .assert_called_with (9999.999 , sleep = True )
349
+
350
+
351
+ def test_maybe_refresh_metadata_update (mocker ):
352
+ mocker .patch .object (KafkaClient , '_bootstrap' )
353
+ _poll = mocker .patch .object (KafkaClient , '_poll' )
354
+
355
+ cli = KafkaClient (request_timeout_ms = 9999999 , retry_backoff_ms = 2222 )
356
+
357
+ tasks = mocker .patch .object (cli ._delayed_tasks , 'next_at' )
358
+ tasks .return_value = 9999999
359
+
360
+ ttl = mocker .patch .object (cli .cluster , 'ttl' )
361
+ ttl .return_value = 0
362
+
363
+ mocker .patch .object (cli , 'least_loaded_node' , return_value = 'foobar' )
364
+ mocker .patch .object (cli , '_can_send_request' , return_value = True )
365
+ send = mocker .patch .object (cli , 'send' )
366
+
367
+ cli .poll (timeout_ms = 9999999 , sleep = True )
368
+ _poll .assert_called_with (0 , sleep = True )
369
+ assert cli ._metadata_refresh_in_progress
370
+ request = MetadataRequest [0 ]([])
371
+ send .assert_called_with ('foobar' , request )
372
+
373
+
374
+ def test_maybe_refresh_metadata_failure (mocker ):
375
+ mocker .patch .object (KafkaClient , '_bootstrap' )
376
+ _poll = mocker .patch .object (KafkaClient , '_poll' )
377
+
378
+ cli = KafkaClient (request_timeout_ms = 9999999 , retry_backoff_ms = 2222 )
379
+
380
+ tasks = mocker .patch .object (cli ._delayed_tasks , 'next_at' )
381
+ tasks .return_value = 9999999
382
+
383
+ ttl = mocker .patch .object (cli .cluster , 'ttl' )
384
+ ttl .return_value = 0
385
+
386
+ mocker .patch .object (cli , 'least_loaded_node' , return_value = 'foobar' )
387
+
388
+ now = time .time ()
389
+ t = mocker .patch ('time.time' )
390
+ t .return_value = now
391
+
392
+ cli .poll (timeout_ms = 9999999 , sleep = True )
393
+ _poll .assert_called_with (0 , sleep = True )
394
+ assert cli ._last_no_node_available_ms == now * 1000
395
+ assert not cli ._metadata_refresh_in_progress
298
396
299
397
300
398
def test_schedule ():
0 commit comments