# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Verify that the bluetooth adapter of the DUT could pair and connect
# to a bluetooth device.
#
# Purpose: Test bluetooth adapter pairing and connecting to a bluetooth device.

# Deprecated variables:
#     TIME = 'SHORT'  # ~3 minutes on octopus
#     TEST_CATEGORY = 'Functional'

from autotest_lib.server import utils

NAME = 'bluetooth_AdapterCLHealth.cl_adapter_keyboard_pairing_test.floss'
METADATA = {
    'contacts': ['chromeos-bt-team@google.com'],
    # ChromeOS > Platform > Connectivity > Bluetooth
    'bug_component': 'b:167317',
    'criteria': 'Adapter should work in correct states.',
    'hw_agnostic': False,
    'requirements': ['bt-gen-0001-v01'],
}


ATTRIBUTES = 'suite:bluetooth_floss'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth_state:NORMAL, working_bluetooth_btpeer:1'


args_dict = utils.args_to_dict(args)

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('bluetooth_AdapterCLHealth', host=host,
                 tag='.'.join(NAME.split('.')[1:]),
                 num_iterations=1, args_dict=args_dict,
                 test_name=NAME.split('.')[1], floss=True,
                 floss_lm_quirk=True)

parallel_simple(run, machines)
