# 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_AdapterSASanity.sa_adapter_discoverable_timeout_test'
PURPOSE = 'Test DiscoverableTimout Property'
CRITERIA = 'Controller should become not discoverable after timeout'
ATTRIBUTES = 'suite:bluetooth, suite:bluetooth_quicksanity, suite:bluetooth_sanity'
TIME = 'MEDIUM' # 6 minutes on EVE
TEST_CATEGORY = 'Functional'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth'

DOC = """
    Verify that DiscoverableTimeout Property works as expected

    - Set and Read back DiscoverableTimeout and make sure the values match
    - Set discoverable
    - Check that adapter is discoverable till DiscoverableTimeout and then it
      is not discoverable
    - Set DiscoverableTimeout to default value at the end of the test.

    """

args_dict = utils.args_to_dict(args)
chameleon_args = hosts.CrosHost.get_chameleon_arguments(args_dict)

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

parallel_simple(run, machines)
