| # 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) |