1# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import logging 6from autotest_lib.server.cros.faft.firmware_test import FirmwareTest 7 8 9class firmware_TryFwB(FirmwareTest): 10 """ 11 Servo based RW firmware B boot test. 12 """ 13 version = 1 14 15 def initialize(self, host, cmdline_args, dev_mode=False, ec_wp=None): 16 super(firmware_TryFwB, self).initialize(host, cmdline_args, ec_wp=ec_wp) 17 self.switcher.setup_mode('dev' if dev_mode else 'normal', 18 allow_gbb_force=True) 19 self.setup_usbkey(usbkey=False) 20 if not self.fw_vboot2: 21 self.setup_tried_fwb(tried_fwb=False) 22 23 def cleanup(self): 24 try: 25 self.setup_tried_fwb(tried_fwb=False) 26 except Exception as e: 27 logging.error("Caught exception: %s", str(e)) 28 super(firmware_TryFwB, self).cleanup() 29 30 def run_once(self): 31 """Runs a single iteration of the test.""" 32 logging.info("Set fwb_tries flag") 33 self.check_state((self.checkers.fw_tries_checker, 'A')) 34 self.try_fwb() 35 self.switcher.mode_aware_reboot() 36 37 logging.info("Expected firmware B boot, reboot") 38 self.check_state((self.checkers.fw_tries_checker, 'B')) 39 self.switcher.mode_aware_reboot() 40 41 expected_slot = 'B' if self.fw_vboot2 else 'A' 42 logging.info("Expected firmware %s boot, done", expected_slot) 43 self.check_state((self.checkers.fw_tries_checker, expected_slot)) 44