67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
# Copyright 2014 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.
|
|
|
|
from autotest_lib.server.cros.faft.firmware_test import FirmwareTest
|
|
|
|
|
|
class firmware_FWtries(FirmwareTest):
|
|
"""
|
|
Boot with firmware B until fwb_tries/fw_try_count counts down to
|
|
0. vboot1 only needs to set fwb_tries in order to boot into FWB,
|
|
but vboot2 needs to set two fields: fw_try_next and fw_try_count
|
|
in order to do so.
|
|
|
|
Setup Steps:
|
|
1. Make the device in normal/dev mode.
|
|
|
|
Test Steps:
|
|
2. Set # of tries to 2 (through try_fwb)
|
|
a. For vboot1:
|
|
set fwb_tries=2
|
|
[fwb_tries can be > 0 and <= 15. Value will be auto reset to 15 If
|
|
the value is < 0 or > 15
|
|
b. For vboot2:
|
|
set fw_try_next=B fw_try_count=2
|
|
3. Reboot 1
|
|
4. Reboot 2
|
|
5. Reboot 3
|
|
|
|
Verification Steps:
|
|
1. After reboot 1, fw_tries_checker checks that
|
|
mainfw_act = B
|
|
fwb_tries/fw_try_count = 1
|
|
|
|
2. After reboot 2, fw_tries_checker checks that
|
|
mainfw_act = B
|
|
fwb_tries/fw_try_count = 0
|
|
|
|
3. After reboot 3, fw_tries_checker
|
|
mainfw_act = A
|
|
fwb_tries/fw_try_count = 0
|
|
"""
|
|
|
|
version = 1
|
|
|
|
def initialize(self, host, cmdline_args, dev_mode=False):
|
|
super(firmware_FWtries, self).initialize(host, cmdline_args)
|
|
self.switcher.setup_mode('dev' if dev_mode else 'normal')
|
|
|
|
def run_once(self, host):
|
|
"""Runs a single iteration of the test."""
|
|
self.check_state((self.checkers.fw_tries_checker, ('A', True, 0)))
|
|
|
|
self.try_fwb(2);
|
|
|
|
self.check_state((self.checkers.fw_tries_checker, ('A', True, 2)))
|
|
self.switcher.mode_aware_reboot()
|
|
|
|
# ChromeOS: Blocks init file on bootup from setting try_count to 0
|
|
# Thus, each reboot is never successful, thus when try_count
|
|
# decrements to 0, will reboot into FW A due to failure
|
|
self.check_state((self.checkers.fw_tries_checker, ('B', True, 1)))
|
|
self.switcher.mode_aware_reboot()
|
|
self.check_state((self.checkers.fw_tries_checker, ('B', True, 0)))
|
|
self.switcher.mode_aware_reboot()
|
|
self.check_state((self.checkers.fw_tries_checker, ('A', True, 0)))
|