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

# Checks the Bluetooth ID of the system.  If the ID is not "00E0:24..:0400" the
# test will fail.  It does not check the platform-specific number in the ID.
#
# A platform should not FSI without an assigned Bluetooth ID from Google.
#
# Purpose: Check whether the chromebook is using a Google Bluetooth ID.

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

from autotest_lib.server import utils

NAME = 'bluetooth_AdapterSAHealth.sa_valid_id_test'
METADATA = {
    'contacts': ['chromeos-bt-team@google.com'],
    # ChromeOS > Platform > Connectivity > Bluetooth
    'bug_component': 'b:167317',
    'criteria': 'Pass if the Bluetooth ID matches the expected format',
    'hw_agnostic': False,
    'variant_category': '{"name": "BT_Chipset_Kernel"}',
    'life_cycle_stage': 'owner_monitored',
}


ATTRIBUTES = 'suite:bvt-perbuild, suite:bluetooth_sa, suite:distributed_lab_qual_bvt_shard1'
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth_state:NORMAL'


args_dict = utils.args_to_dict(args)

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

parallel_simple(run, machines)
