# 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.

# This test tries to verify the client has a bluetooth adapter
#
#
# Purpose: batch of Bluetooth stand along health tests

# Deprecated variables:
#     TIME = 'MEDIUM'
#     TEST_CATEGORY = 'Functional'

from autotest_lib.server import utils

NAME = 'bluetooth_AdapterSAHealth.sa_adapter_present_test.floss'
METADATA = {
    'contacts': ['chromeos-bt-team@google.com'],
    # ChromeOS > Platform > Connectivity > Bluetooth
    'bug_component': 'b:167317',
    'criteria': 'Pass all health test',
    'hw_agnostic': False,
    'requirements': ['bt-gen-0001-v01'],
}


ATTRIBUTES = 'suite:bluetooth_floss_sa'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth_state:NORMAL'


args_dict = utils.args_to_dict(args)

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

parallel_simple(run, machines)
