# Copyright (c) 2010 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 glob import logging import os from autotest_lib.client.bin import test from autotest_lib.client.common_lib import error, utils from autotest_lib.client.cros.power import power_status, power_utils class power_ProbeDriver(test.test): """Confirms that AC driver is loaded and functioning unless device is AC only.""" version = 1 def run_once(self, test_which='Mains'): # This test doesn't apply to systems that run on AC only. if not power_utils.has_battery(): return # Gather power supplies status = power_status.get_status() run_dict = { 'Mains': self.run_ac, 'Battery': self.run_bat } run = run_dict.get(test_which) if run: run(status) else: raise error.TestNAError('Unknown test type: %s' % test_which) def run_ac(self, status): """Checks AC driver. @param status: power_status.SysStat object """ if not status.linepower: raise error.TestFail('No line power devices found') if not status.on_ac(): raise error.TestFail('Line power is not connected') if not status.battery_discharging(): return if status.battery_discharge_ok_on_ac(): logging.info('DUT battery discharging but deemed ok') return raise error.TestFail('Battery is discharging') def run_bat(self, status): """ Checks batteries. @param status: power_status.SysStat object """ if not status.battery: raise error.TestFail('No battery found') if not status.battery[0].present: raise error.TestFail('No battery present') if not status.battery_discharging(): raise error.TestFail('No battery discharging') if status.on_ac(): raise error.TestFail('One of ACs is online')