# Copyright 2015 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.server.cros.faft.firmware_test import FirmwareTest class firmware_ECKeyboardReboot(FirmwareTest): """ Test the dut-control ec_uart_cmd:reboot command. This simulate the Power+refresh reboot but not exactly. The F3 + power EC reset is triggered by the Silego IC, and it taps directly into the KB row column lines to check the trigger (requires physical presence). see test case: 1.3.8 Power+refresh; System reboots https://testtracker.googleplex.com/efforts/testcase/detail/721602 """ version = 1 # Delay between commands CMD_DELAY = 1 def initialize(self, host, cmdline_args): super(firmware_ECKeyboardReboot, self).initialize(host, cmdline_args) # Only run in normal mode self.switcher.setup_mode('normal') self.host = host def confirm_dut_off(self): if not self.host.ping_wait_down(timeout=10): raise error.TestFail('DUT is on, expected off') logging.info('DUT is off as expected') def confirm_dut_on(self): if not self.host.wait_up(timeout=60): raise error.TestFail('DUT is off, expected on') logging.info('DUT is on as expected') def run_once(self): if not self.check_ec_capability(['keyboard']): raise error.TestNAError("Nothing needs to be tested on this device") logging.info("Test dut-control ec_uart_cmd:reboot command.") self.ec.reboot() self.confirm_dut_off() self.confirm_dut_on() self.ec.reboot('hard') self.confirm_dut_off() self.confirm_dut_on() self.ec.reboot('ap-off') self.confirm_dut_off() self.ec.reboot() self.confirm_dut_on()