blob: f8fe236690987fa292734e8bdb44171c83d574ab [file] [log] [blame]
# Copyright (c) 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_FastbootReboot(FirmwareTest):
"""
Reboot testing through Fastboot.
Testing:
fastboot reboot
fastboot reboot-bootloader
This needs to be only enabled for Android tests.
"""
version = 1
def initialize(self, host, cmdline_args, dev_mode=False):
super(firmware_FastbootReboot, self).initialize(host, cmdline_args)
self.switcher.setup_mode('dev' if dev_mode else 'normal')
def in_fastboot_mode(self):
# make sure that we're in fastboot mode
result = self.faft_client.host.run_shell_command_get_output(
'fastboot devices')
if not result:
return False
else:
return True
def run_once(self, dev_mode=False):
if not self.faft_client.system.has_host():
raise error.TestNAError('DUT is not Android device. Skipping test')
self.faft_client.host.run_shell_command('adb reboot bootloader')
# make sure that DUT goes offline first
self.switcher.wait_for_client_offline()
self.switcher.wait_for_client_fastboot()
if not self.in_fastboot_mode():
raise error.TestFail("DUT not in fastboot mode!")
# try rebooting into OS
logging.info("Testing fastboot reboot")
self.faft_client.host.run_shell_command('fastboot reboot')
# make sure that DUT goes offline first
self.switcher.wait_for_client_offline()
self.switcher.wait_for_client()
# now reboot into fastboot again
self.faft_client.host.run_shell_command('adb reboot bootloader')
# make sure that DUT goes offline first
self.switcher.wait_for_client_offline()
self.switcher.wait_for_client_fastboot()
if not self.in_fastboot_mode():
raise error.TestFail("DUT not in fastboot mode!")
logging.info("Testing fastboot reboot-bootloader")
self.faft_client.host.run_shell_command('fastboot reboot-bootloader')
# make sure that DUT goes offline first
self.switcher.wait_for_client_offline()
self.switcher.wait_for_client_fastboot()
if not self.in_fastboot_mode():
raise error.TestFail("DUT not in fastboot mode!")
self.faft_client.host.run_shell_command('fastboot continue')
self.switcher.wait_for_client()