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

# Server side bluetooth adapter stress tests involving reboot.
# First we test powering on the adapter, reboot the DUT, and make sure
# the adapter is still powered on and in a working state.
#
# Next we test powering off the adapter, reboot, and verify the adapter
# is still powered off.
#
# Purpose: Reboot device and ensure Bluetooth adapter is up

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

from autotest_lib.server import utils

NAME = 'bluetooth_AdapterSAHealth.sa_adapter_reboot_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,
}


# TODO(b/256653722) re-enable this test once BT state persists properly around
# reboots
ATTRIBUTES = ''
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,
                  num_iterations=1, test_name=NAME.split('.')[1], floss=True)

parallel_simple(run, machines)
