faft: Support a customized recovery reboot command
In some devices, the servo rec mode line doesn't work. A work-around is to
support a customized recovery reboot command instead of controlling servo.
This command may be printing some warning messges to tell a tester to press
Power + Esc + F3 manually, or controlling an external keyboard-pressing device
to press this key combination.
BUG=chrome-os-partner:8572,chrome-os-partner:11585
TEST=manual
Create a script for rec reboot command, like:
$ cat /tmp/rec_reboot.sh
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo "@@@@@@@@ PRESS POWER + ESC + F3 @@@@@@@@"
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
Run the test and manually press Power + Esc + F3 when the messages show:
$ run_remote_tests.sh --remote=$REMOTE_IP --board $BOARD --servo \
-a "rec_reboot_cmd=/tmp/rec_reboot.sh" firmware_DevMode
Change-Id: I2f18fddcece326ad0809133c646de563c4429df5
Reviewed-on: https://gerrit.chromium.org/gerrit/28903
Reviewed-by: Vic Yang <victoryang@chromium.org>
Commit-Ready: 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 7251aa7..bfa72a1 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -72,6 +72,9 @@
instead of sending key via servo board.
_customized_enter_key_command: The customized Enter key command instead
of sending key via servo board.
+ _customized_rec_reboot_command: The customized recovery reboot command
+ instead of sending key combination of Power + Esc + F3 for
+ triggering recovery reboot.
_install_image_path: The path of Chrome OS test image to be installed.
_firmware_update: Boolean. True if firmware update needed after
installing the image.
@@ -199,6 +202,7 @@
_customized_ctrl_d_key_command = None
_customized_enter_key_command = None
+ _customized_rec_reboot_command = None
_install_image_path = None
_firmware_update = False
@@ -220,6 +224,10 @@
self._customized_enter_key_command = args['enter_cmd']
logging.info('Customized Enter key command: %s' %
self._customized_enter_key_command)
+ if 'rec_reboot_cmd' in args:
+ self._customized_rec_reboot_command = args['rec_reboot_cmd']
+ logging.info('Customized recovery reboot command: %s' %
+ self._customized_rec_reboot_command)
if 'image' in args:
self._install_image_path = args['image']
logging.info('Install Chrome OS test image path: %s' %
@@ -744,10 +752,14 @@
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()
+ if self._customized_rec_reboot_command:
+ logging.info('running the customized rec reboot command')
+ os.system(self._customized_rec_reboot_command)
+ else:
+ 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):