blob: 89ffd2b6835e870b3b0f93d847b275f6446919e9 [file] [log] [blame]
# Copyright (c) 2012 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
import time
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros import chrome
from autotest_lib.client.cros.bluetooth import bluetooth_device_xmlrpc_server
from autotest_lib.client.cros.power import power_test
class power_Idle(power_test.power_Test):
"""class for power_Idle test.
Collects power stats when machine is idle, also compares power stats between
when bluetooth adapter is on and off.
"""
version = 1
def initialize(self):
super(power_Idle, self).initialize(seconds_period=10.)
def run_once(self, idle_time=120, bt_warmup_time=20):
"""Collect power stats when bluetooth adapter is on or off.
"""
bt_device = bluetooth_device_xmlrpc_server \
.BluetoothDeviceXmlRpcDelegate()
with chrome.Chrome():
if not bt_device.set_powered(False):
raise error.TestFail('Cannot turn off bluetooth adapter.')
self.start_measurements()
time.sleep(idle_time)
self.checkpoint_measurements('bluetooth_adapter_off')
# Turn on bluetooth adapter.
# If we cannot start bluetoothd, fail gracefully and still write
# data with bluetooth adapter off to file, as we are interested in
# just that data too. start_bluetoothd() already logs the error so
# not logging any error here.
if not bt_device.start_bluetoothd():
return
if not bt_device.set_powered(True):
logging.warning('Cannot turn on bluetooth adapter.')
return
time.sleep(bt_warmup_time)
if not bt_device._is_powered_on():
logging.warning('Bluetooth adapter is off.')
return
t1 = time.time()
time.sleep(idle_time)
self.checkpoint_measurements('bluetooth_adapter_on', t1)
bt_device.set_powered(False)
bt_device.stop_bluetoothd()