You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
5.1 KiB
125 lines
5.1 KiB
# 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.
|
|
|
|
import logging, time
|
|
|
|
from autotest_lib.client.cros.bluetooth import bluetooth_semiauto_helper
|
|
|
|
|
|
class bluetooth_RegressionClient(
|
|
bluetooth_semiauto_helper.BluetoothSemiAutoHelper):
|
|
"""Implement Bluetooth Regression Tests with some interaction."""
|
|
version = 1
|
|
|
|
def _test_init(self, test_type):
|
|
"""Init test by collecting intial logs, starting dump, etc.
|
|
|
|
@param: test_type: short string label for log files and messages
|
|
"""
|
|
self._test_type = test_type
|
|
logging.info('Beginning test of type %s.', test_type)
|
|
self.start_dump()
|
|
self.collect_logs(message=('Before %s.' % test_type))
|
|
|
|
def _power_off(self):
|
|
self._test_init('power_off')
|
|
|
|
def _os_idle(self):
|
|
self._test_init('os_idle')
|
|
self.ask_user('OS Idle test: after pressing PASS, the OS will idle '
|
|
'after a short delay. Do not prevent it from idling.'
|
|
'<br>After OS has idled for at least 10 seconds, use '
|
|
'a Bluetooth device to wake machine (or use onboard '
|
|
'inputs if no Bluetooth device is capable).<br>'
|
|
'Make sure audio continues to play over Bluetooth.')
|
|
self.os_idle_time_set()
|
|
self.tell_user('Going to sleep now...')
|
|
time.sleep(20)
|
|
self.check_working()
|
|
self.os_idle_time_set(reset=True)
|
|
self.collect_logs(message='After idle.')
|
|
|
|
def _suspend(self):
|
|
self._test_init('suspend')
|
|
self.ask_user('OS Suspend test: after pressing PASS, the OS will '
|
|
'suspend.<br>It will wake on its own after some time.'
|
|
'<br>Audio will stop playing.')
|
|
self.os_suspend()
|
|
self.check_working()
|
|
self.collect_logs(message='After suspend.')
|
|
|
|
def _log_off(self):
|
|
self._test_init('log_off')
|
|
self.close_browser()
|
|
self.login_and_open_browser()
|
|
self.check_working()
|
|
self.collect_logs(message='After login.')
|
|
|
|
def _disconnect(self):
|
|
self._test_init('disconnect')
|
|
self.tell_user('Please disconnect all Bluetooth devices using (x).')
|
|
self.wait_for_adapter(adapter_status=True)
|
|
self.wait_for_connections(paired_status=True, connected_status=False)
|
|
self.ask_user('Audio NOT playing through onboard speakers?<br>'
|
|
'Audio NOT playing through Bluetooth device?')
|
|
self.collect_logs(message='After disconnect.')
|
|
self.check_working()
|
|
self.collect_logs(message='After reconnect.')
|
|
|
|
def _device_off(self):
|
|
self._test_init('device_off')
|
|
self.tell_user('Please turn off all Bluetooth devices.<br>'
|
|
'Disconnect them on the Settings page if needed.')
|
|
self.wait_for_adapter(adapter_status=True)
|
|
self.wait_for_connections(paired_status=True, connected_status=False)
|
|
self.ask_user('Audio NOT playing through onboard speakers?')
|
|
self.collect_logs(message='After device turned off.')
|
|
self.check_working(message='Please turn devices back on and connect.')
|
|
self.collect_logs(message='After device on.')
|
|
|
|
def _unpair(self):
|
|
self._test_init('unpair')
|
|
self.tell_user('Please unpair all Bluetooth devices (using (x))')
|
|
self.wait_for_adapter(adapter_status=True)
|
|
self.wait_for_connections(paired_status=False, connected_status=False)
|
|
self.ask_user('No Bluetooth devices work.<br> Audio is NOT playing '
|
|
'through onboard speakers or wired headphones.')
|
|
self.collect_logs(message='After unpair.')
|
|
self.check_working(message='Please re-pair and connect devices.')
|
|
self.collect_logs(message='After re-pair.')
|
|
|
|
def _disable(self):
|
|
self._test_init('disable')
|
|
self.tell_user('Please disable Bluetooth (uncheck Enable Bluetooth).')
|
|
self.wait_for_adapter(adapter_status=False)
|
|
self.collect_logs(message='While disabled')
|
|
self.wait_for_connections(paired_status=True, connected_status=False)
|
|
self.ask_user('No Bluetooth devices work?<br> Audio is NOT playing '
|
|
'through onboard speakers or wired headphones?')
|
|
self.tell_user('Please enable Bluetooth (check Enable Bluetooth).<br>'
|
|
'Make sure all devices are still listed after enable.')
|
|
self.wait_for_adapter(adapter_status=True)
|
|
self.check_working()
|
|
self.collect_logs(message='After re-enable.')
|
|
|
|
def run_once(self):
|
|
"""Runs Regression tests for Bluetooth.
|
|
|
|
Two phases: before and after reboot by server. Called by run_test.
|
|
"""
|
|
self.check_working()
|
|
|
|
if self._test_phase == 'reboot':
|
|
self._disable()
|
|
self._power_off()
|
|
elif self._test_phase == 'client':
|
|
self._power_off()
|
|
self._os_idle()
|
|
self._suspend()
|
|
self._log_off()
|
|
self._disconnect()
|
|
self._device_off()
|
|
self._unpair()
|
|
|