# Copyright 2020 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_AdapterAdvHealth.adv_suspend_peer_test'
PURPOSE = ('Tests advertising during suspend/resume')
CRITERIA = 'Advertising should not be detected during suspend'
ATTRIBUTES = 'suite:bluetooth, suite:bluetooth_e2e'
TIME = 'SHORT'  # ~3 minutes on Sarien
TEST_CATEGORY = 'Functional'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth, working_bluetooth_btpeer:1'
PY_VERSION = 3

DOC = """
    Advertising suspend peer test.

    This test configures and enables multiple advertising instances on the DUT,
    and then confirms that they are discoverable normally, but not discoverable
    once the system enters suspend
    """

args_dict = utils.args_to_dict(args)

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

parallel_simple(run, machines)