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

from autotest_lib.server import utils

AUTHOR = 'chromeos-bluetooth'
NAME = 'bluetooth_AdapterSAHealth.sa_basic_test'
PURPOSE = ('batch of Bluetooth stand along health tests')
CRITERIA = 'Pass all health test'
ATTRIBUTES = 'suite:bluetooth, suite:bluetooth_standalone, suite:bluetooth_standalone_cq, suite:infra_qual'
TIME = 'MEDIUM'
TEST_CATEGORY = 'Functional'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth'

DOC = """
    A Batch of Bluetooth stand alone health tests. This test is written as a
    batch of tests in order to reduce test time, since auto-test ramp up time
    is costy. The batch is using BluetoothAdapterQuickTests wrapper methods to
    start and end a test and a batch of tests.

    This class can be called to run the entire test batch or to run a
    specific test only - todo http://b/132199238 [autotest BT quick health]
    add support for running a single test in quick test
    """

args_dict = utils.args_to_dict(args)

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

parallel_simple(run, machines)
