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

# Test to Check RSSI of peers and confirm it is > - 70
#
# Purpose: Test to check health of Bluetooth peers

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

from autotest_lib.server import utils

NAME = 'bluetooth_PeerVerify.check_rssi.floss'
METADATA = {
    'contacts': ['chromeos-bt-team@google.com'],
    # ChromeOS > Platform > Connectivity > Bluetooth
    'bug_component': 'b:167317',
    'criteria': 'Pass all health test',
    'hw_agnostic': False,
    'life_cycle_stage': 'owner_monitored',
}


ATTRIBUTES = 'suite:wificell_dut_validation'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth_state:NORMAL, working_bluetooth_btpeer:1'


args_dict = utils.args_to_dict(args)

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('bluetooth_PeerVerify', 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)
