def test_heartbeat(mocker, patched_coord): heartbeat = HeartbeatThread(patched_coord) assert not heartbeat.enabled and not heartbeat.closed heartbeat.enable() assert heartbeat.enabled heartbeat.disable() assert not heartbeat.enabled # heartbeat disables when un-joined heartbeat.enable() patched_coord.state = MemberState.UNJOINED heartbeat._run_once() assert not heartbeat.enabled heartbeat.enable() patched_coord.state = MemberState.STABLE mocker.spy(patched_coord, '_send_heartbeat_request') mocker.patch.object(patched_coord.heartbeat, 'should_heartbeat', return_value=True) heartbeat._run_once() assert patched_coord._send_heartbeat_request.call_count == 1 heartbeat.close() assert heartbeat.closed