# 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 class implements a Bluetooth ll privacy health package, using
# methods provided in BluetoothAdapterQuickTests,
# The package is running several sub batches of tests.
#
# Purpose: Package of Bluetooth link layer privacy health tests with LL privacy
# turned on

# Deprecated variables:
#     TIME = 'MEDIUM' # Takes 10 minutes on Guado
#     TEST_CATEGORY = 'Functional'

from autotest_lib.server import utils

NAME = 'bluetooth_AdapterLLPrivacyHealth'
METADATA = {
    'contacts': ['chromeos-bt-team@google.com'],
    # ChromeOS > Platform > Connectivity > Bluetooth
    'bug_component': 'b:167317',
    'criteria': 'Pass all health test',
    'hw_agnostic': False,
    'life_cycle_stage': 'owner_monitored',
}


ATTRIBUTES = ''
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth_state:NORMAL, working_bluetooth_btpeer:2'


args_dict = utils.args_to_dict(args)

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('bluetooth_AdapterLLPrivacyHealth', host=host,
                 num_iterations=1, args_dict=args_dict,
                 flag='Quick Health')

parallel_simple(run, machines)
