# 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 Alias of the system.  If the alias is not like
# 'Chromebook_1234' (or Chromebox, etc.), the test will fail.
#
# 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_alias_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)
