# Copyright 2016 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.
"""Server side bluetooth tests on adapter standalone working states."""
import logging
from autotest_lib.client.common_lib import error
from autotest_lib.server.cros.bluetooth.bluetooth_adapter_tests import (
BluetoothAdapterTests)
from autotest_lib.server.cros.multimedia import remote_facade_factory
class bluetooth_AdapterStandalone(BluetoothAdapterTests):
"""Server side bluetooth adapter standalone tests.
This test tries to thoroughly verify most of the important work
states of a standalone bluetooth adapter prior to connecting to
other bluetooth peripherals.
In particular, the following subtests are performed. Look at the
docstrings of the subtests for more details.
- test_start_bluetoothd
- test_stop_bluetoothd
- test_adapter_work_state
- test_power_on_adapter
- test_power_off_adapter
- test_reset_on_adapter
- test_reset_off_adapter
- test_UUIDs
- test_start_discovery
- test_stop_discovery
- test_discoverable
- test_nondiscoverable
- test_pairable
- test_nonpairable
Refer to BluetoothAdapterTests for all subtests performed in this test.
"""
def run_once(self, host, repeat_count=1):
"""Running Bluetooth adapter standalone tests.
@param host: device under test host
@param repeat_count: the number of times to repeat the tests.
"""
self.host = host
factory = remote_facade_factory.RemoteFacadeFactory(host)
self.bluetooth_facade = factory.create_bluetooth_hid_facade()
for i in xrange(1, repeat_count + 1):
logging.info('repeat count: %d / %d', i, repeat_count)
# The bluetoothd must be running in the beginning.
self.test_bluetoothd_running()
# It is possible that the adapter is not powered on yet.
# Power it on anyway and verify that it is actually powered on.
self.test_power_on_adapter()
# Verify that the adapter could be powered off and powered on,
# and that it is in the correct working state.
self.test_power_off_adapter()
self.test_power_on_adapter()
self.test_adapter_work_state()
# Verify that the bluetoothd could be simply stopped and then
# be started again, and that it is in the correct working state.
self.test_stop_bluetoothd()
self.test_start_bluetoothd()
self.test_adapter_work_state()
# Verify that the adapter could be reset off and on which includes
# removing all cached information.
self.test_reset_off_adapter()
self.test_reset_on_adapter()
self.test_adapter_work_state()
# Verify that the adapter supports basic profiles.
self.test_UUIDs()
# Verify that the adapter could start and stop discovery.
self.test_start_discovery()
self.test_stop_discovery()
self.test_start_discovery()
# Verify that the adapter could set both discoverable and
# non-discoverable successfully.
self.test_discoverable()
self.test_nondiscoverable()
self.test_discoverable()
# Verify that the adapter could set pairable and non-pairable.
self.test_pairable()
self.test_nonpairable()
self.test_pairable()
if self.fails:
raise error.TestFail(self.fails)