# 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.

# Tests primary and then secondary connection capability.
# The test is to verify that the controller can accept a connection as
# secondary role while already connected as primary and use both connections
# to send data properly.

from autotest_lib.server import utils

NAME = 'bluetooth_AdapterLEHealth.le_role_primary_before_secondary.floss'
METADATA = {
    'contacts': ['chromeos-bt-team@google.com'],
    # ChromeOS > Platform > Connectivity > Bluetooth
    'bug_component': 'b:167317',
    'criteria': ('Tests controller can handle secondary role in connection '
                 'while already connected as primary'),
    'hw_agnostic': False,
    'requirements': ['bt-spec-0014-v01']
}
ATTRIBUTES = 'suite:bluetooth_floss'
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_AdapterLEHealth', host=host,
                 num_iterations=1, args_dict=args_dict,
                 test_name=NAME.split('.')[1], tag='.'.join(NAME.split('.')[1:]), floss=True)

parallel_simple(run, machines)