# Copyright 2017 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
from autotest_lib.server.cros.bluetooth import advertisements_data


AUTHOR = 'rjahagir'
NAME = 'bluetooth_AdapterSuspendResume.stress_10'
PURPOSE = 'Test bluetooth adapter state with suspending and resuming DUT.'
CRITERIA = 'Adapter should power on or off with correct parameters.'
ATTRIBUTES = ''
TIME = 'LONG' # This test takes approximately 3 mins on peach_pi.
TEST_CATEGORY = 'Functional'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth'

DOC = """
This test case verifies that the Bluetooth adapter of the DUT can
behave normally when subjected to suspending and resuming the DUT.

This autotest include the following test cases:
     self.test_case_adapter_on_SR()
     self.test_case_adapter_off_SR()
"""

args_dict = utils.args_to_dict(args)

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('bluetooth_AdapterSuspendResume',
                 host=host,
                 num_iterations=10)

parallel_simple(run, machines)
