def test_is_ready(mocker, conn): cli = KafkaClient() cli._maybe_connect(0) cli._maybe_connect(1) # metadata refresh blocks ready nodes assert cli.is_ready(0) assert cli.is_ready(1) cli._metadata_refresh_in_progress = True assert not cli.is_ready(0) assert not cli.is_ready(1) # requesting metadata update also blocks ready nodes cli._metadata_refresh_in_progress = False assert cli.is_ready(0) assert cli.is_ready(1) cli.cluster.request_update() cli.cluster.config['retry_backoff_ms'] = 0 assert not cli._metadata_refresh_in_progress assert not cli.is_ready(0) assert not cli.is_ready(1) cli.cluster._need_update = False # if connection can't send more, not ready assert cli.is_ready(0) conn.can_send_more.return_value = False assert not cli.is_ready(0) conn.can_send_more.return_value = True # disconnected nodes, not ready assert cli.is_ready(0) conn.state = ConnectionStates.DISCONNECTED assert not cli.is_ready(0)
def test_is_ready(mocker, conn): cli = KafkaClient() cli._maybe_connect(0) cli._maybe_connect(1) # metadata refresh blocks ready nodes assert cli.is_ready(0) assert cli.is_ready(1) cli._metadata_refresh_in_progress = True assert not cli.is_ready(0) assert not cli.is_ready(1) # requesting metadata update also blocks ready nodes cli._metadata_refresh_in_progress = False assert cli.is_ready(0) assert cli.is_ready(1) cli.cluster.request_update() cli.cluster.config['retry_backoff_ms'] = 0 assert not cli._metadata_refresh_in_progress assert not cli.is_ready(0) assert not cli.is_ready(1) cli.cluster._need_update = False # if connection can't send more, not ready assert cli.is_ready(0) conn.can_send_more.return_value = False assert not cli.is_ready(0) conn.can_send_more.return_value = True # disconnected nodes, not ready assert cli.is_ready(0) conn.state = ConnectionStates.DISCONNECTED assert not cli.is_ready(0)
def test_ready(conn): cli = KafkaClient() # Node not in metadata raises Exception try: cli.ready(2) assert False, 'Exception not raised' except AssertionError: pass # Node in metadata will connect assert 0 not in cli._conns assert cli.ready(0) assert 0 in cli._conns assert cli._conns[0].state is ConnectionStates.CONNECTED # metadata refresh blocks ready nodes assert cli.ready(0) assert cli.ready(1) cli._metadata_refresh_in_progress = True assert not cli.ready(0) assert not cli.ready(1) # requesting metadata update also blocks ready nodes cli._metadata_refresh_in_progress = False assert cli.ready(0) assert cli.ready(1) cli.cluster.request_update() cli.cluster.config['retry_backoff_ms'] = 0 assert not cli._metadata_refresh_in_progress assert not cli.ready(0) assert not cli.ready(1) cli.cluster._need_update = False # if connection can't send more, not ready assert cli.ready(0) assert cli.ready(1) conn.can_send_more.return_value = False assert not cli.ready(0) conn.can_send_more.return_value = True # disconnected nodes, not ready assert cli.ready(0) assert cli.ready(1) conn.state = ConnectionStates.DISCONNECTED assert not cli.ready(0) # connecting node connects cli._connecting.add(0) conn.state = ConnectionStates.CONNECTING conn.connect.side_effect = lambda: ConnectionStates.CONNECTED cli.ready(0) assert 0 not in cli._connecting assert cli._conns[0].connect.called_with()
def test_ready(conn): cli = KafkaClient() # Node not in metadata assert not cli.ready(2) # Node in metadata will connect assert 0 not in cli._conns assert cli.ready(0) assert 0 in cli._conns assert cli._conns[0].state is ConnectionStates.CONNECTED # metadata refresh blocks ready nodes assert cli.ready(0) assert cli.ready(1) cli._metadata_refresh_in_progress = True assert not cli.ready(0) assert not cli.ready(1) # requesting metadata update also blocks ready nodes cli._metadata_refresh_in_progress = False assert cli.ready(0) assert cli.ready(1) cli.cluster.request_update() cli.cluster.config['retry_backoff_ms'] = 0 assert not cli._metadata_refresh_in_progress assert not cli.ready(0) assert not cli.ready(1) cli.cluster._need_update = False # if connection can't send more, not ready assert cli.ready(0) assert cli.ready(1) conn.can_send_more.return_value = False assert not cli.ready(0) conn.can_send_more.return_value = True # disconnected nodes, not ready assert cli.ready(0) assert cli.ready(1) conn.connected.return_value = False assert not cli.ready(0) conn.connected.return_value = True # connecting node connects cli._connecting.add(0) conn.connected.return_value = False cli.ready(0) assert 0 not in cli._connecting assert cli._conns[0].connect.called_with()
def test_ready(conn): cli = KafkaClient() # Node not in metadata assert not cli.ready(2) # Node in metadata will connect assert 0 not in cli._conns assert cli.ready(0) assert 0 in cli._conns assert cli._conns[0].state is ConnectionStates.CONNECTED # metadata refresh blocks ready nodes assert cli.ready(0) assert cli.ready(1) cli._metadata_refresh_in_progress = True assert not cli.ready(0) assert not cli.ready(1) # requesting metadata update also blocks ready nodes cli._metadata_refresh_in_progress = False assert cli.ready(0) assert cli.ready(1) cli.cluster.request_update() cli.cluster.config['retry_backoff_ms'] = 0 assert not cli._metadata_refresh_in_progress assert not cli.ready(0) assert not cli.ready(1) cli.cluster._need_update = False # if connection can't send more, not ready assert cli.ready(0) assert cli.ready(1) conn.can_send_more.return_value = False assert not cli.ready(0) conn.can_send_more.return_value = True # disconnected nodes, not ready assert cli.ready(0) assert cli.ready(1) conn.connected.return_value = False assert not cli.ready(0) conn.connected.return_value = True # connecting node connects cli._connecting.add(0) conn.connected.return_value = False cli.ready(0) assert 0 not in cli._connecting assert cli._conns[0].connect.called_with()
def test_maybe_refresh_metadata_in_progress(mocker): mocker.patch.object(KafkaClient, '_bootstrap') _poll = mocker.patch.object(KafkaClient, '_poll') cli = KafkaClient(request_timeout_ms=9999999, retry_backoff_ms=2222) tasks = mocker.patch.object(cli._delayed_tasks, 'next_at') tasks.return_value = 9999999 ttl = mocker.patch.object(cli.cluster, 'ttl') ttl.return_value = 0 cli._metadata_refresh_in_progress = True cli.poll(timeout_ms=9999999, sleep=True) _poll.assert_called_with(9999.999, sleep=True)
def test_maybe_refresh_metadata_in_progress(mocker): mocker.patch.object(KafkaClient, '_bootstrap') _poll = mocker.patch.object(KafkaClient, '_poll') cli = KafkaClient(request_timeout_ms=9999999, retry_backoff_ms=2222) tasks = mocker.patch.object(cli._delayed_tasks, 'next_at') tasks.return_value = 9999999 ttl = mocker.patch.object(cli.cluster, 'ttl') ttl.return_value = 0 cli._metadata_refresh_in_progress = True cli.poll(timeout_ms=9999999, sleep=True) _poll.assert_called_with(9999.999, sleep=True)