blob: 989961a0188cc240a62b0081531a94f5fc19af05 [file] [log] [blame]
# Copyright (c) 2013 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 __future__ import absolute_import
import logging
import common
from autotest_lib.client.common_lib import error
from autotest_lib.server.cros.bluetooth import bluetooth_adapter_tests
class bluetooth_Health_ValidAddressTest(
bluetooth_adapter_tests.BluetoothAdapterTests):
"""
This class implements the valid address test.
It should be invoked by other classes e.g. BluetoothHealthValidAddress.
"""
version = 1
def valid_address_test(self):
"""Verify that the client Bluetooth adapter has a valid address."""
# Reset the adapter to the powered off state.
self.test_reset_off_adapter()
# Read the address both via BlueZ and via the kernel mgmt_ops interface.
# Compare the two, they should not differ.
bluez_properties = self.get_adapter_properties()
controller_info = self.read_info()
if bluez_properties['Address'] != controller_info[0]:
raise error.TestFail(
'BlueZ and Kernel adapter address differ: %s != %s' %
(bluez_properties['Address'], controller_info[0]))
address = controller_info[0]
logging.debug('Bluetooth address of adapter is %s', address)
# Health check the address
if address == '00:00:00:00:00:00':
raise error.TestFail('Adapter address is all zeros')
if address.startswith('00:00:00:'):
raise error.TestFail('Vendor portion of address is all zeros')
if address.endswith(':00:00:00'):
raise error.TestFail('Device portion of address is all zeros')
if address == 'FF:FF:FF:FF:FF:FF':
raise error.TestFail('Adapter address is all ones')
if address.startswith('FF:FF:FF:'):
raise error.TestFail('Vendor portion of address is all ones')
if address.endswith(':FF:FF:FF'):
raise error.TestFail('Device portion of address is all ones')
# Verify that the address is still the same after powering on the radio.
self.test_power_on_adapter()
bluez_properties = self.get_adapter_properties()
controller_info = self.read_info()
if bluez_properties['Address'] != address:
raise error.TestFail(
'BlueZ adapter address changed after power on: %s != %s' %
(bluez_properties['Address'], address))
if controller_info[0] != address:
raise error.TestFail(
'Kernel adapter address changed after power on: %s != %s' %
(controller_info[0], address))