faft: Make the recovery mode switching in one method
To reflect the new change of recovery mode switching, i.e. pressing Power +
Esc + Refresh. Make it in one method to prevent calling wrong underlying
methods.
BUG=chrome-os-partner:11694
TEST=Run firmware_RecoveryButton on Snow passed.
Change-Id: I1a34fcb9b20562c2d6a107376f34902d01e2bd52
Reviewed-on: https://gerrit.chromium.org/gerrit/28901
Reviewed-by: Vic Yang <victoryang@chromium.org>
Commit-Ready: Tom Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/cros/faftsequence.py b/server/cros/faftsequence.py
index 9b85c68..7a6042e 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -737,6 +737,19 @@
self.run_faft_step({})
+ def enable_rec_mode_and_reboot(self):
+ """Switch to rec mode and reboot.
+
+ This method emulates the behavior of the old physical recovery switch,
+ i.e. switch ON + reboot + switch OFF, and the new keyboard controlled
+ recovery mode, i.e. just press Power + Esc + Refresh.
+ """
+ self.servo.enable_recovery_mode()
+ self.cold_reboot()
+ time.sleep(self.EC_REBOOT_DELAY)
+ self.servo.disable_recovery_mode()
+
+
def enable_dev_mode_and_reboot(self):
"""Switch to developer mode and reboot."""
if self.client_attr.keyboard_dev:
@@ -777,10 +790,8 @@
# Plug out USB disk for preventing recovery boot without warning
self.servo.set('usb_mux_sel1', 'servo_sees_usbkey')
# Rebooting EC with rec mode on. Should power on AP.
- self.servo.enable_recovery_mode()
- self.cold_reboot()
+ self.enable_rec_mode_and_reboot()
self.wait_fw_screen_and_switch_keyboard_dev_mode(dev=True)
- self.servo.disable_recovery_mode()
def disable_keyboard_dev_mode(self):
diff --git a/server/site_tests/firmware_RecoveryButton/firmware_RecoveryButton.py b/server/site_tests/firmware_RecoveryButton/firmware_RecoveryButton.py
index 34fc0c5..2f250d9 100644
--- a/server/site_tests/firmware_RecoveryButton/firmware_RecoveryButton.py
+++ b/server/site_tests/firmware_RecoveryButton/firmware_RecoveryButton.py
@@ -47,13 +47,13 @@
remove_usb = (self.faft_client.get_platform_name() in
('Mario', 'Alex', 'ZGB', 'Aebl', 'Kaen'))
self.register_faft_sequence((
- { # Step 1, press recovery button and reboot
+ { # Step 1, switch to recovery mode and reboot
'state_checker': (self.crossystem_checker, {
'mainfw_type': 'developer' if dev_mode else 'normal',
'recoverysw_boot': '0',
}),
- 'userspace_action': self.servo.enable_recovery_mode,
- 'reboot_action': self.sync_and_cold_reboot,
+ 'userspace_action': self.enable_rec_mode_and_reboot,
+ 'reboot_action': None,
# When dev_mode ON, directly boot to USB stick if presented.
# When dev_mode OFF,
# the old models need users to remove and insert the USB;
@@ -62,13 +62,12 @@
self.wait_fw_screen_and_plug_usb,
'install_deps_after_boot': True,
},
- { # Step 2, expected recovery boot and release recovery button
+ { # Step 2, expected recovery boot and reboot
'state_checker': (self.crossystem_checker, {
'mainfw_type': 'recovery',
'recovery_reason' : self.RECOVERY_REASON['RO_MANUAL'],
'recoverysw_boot': '1',
}),
- 'userspace_action': self.servo.disable_recovery_mode,
},
{ # Step 3, expected normal boot
'state_checker': (self.crossystem_checker, {