Disable dev mode by default and some refactoring.
Refactoring includes:
- Add setup_dev_mode() to ensure the system in the normal/dev mode.
- Move wait_fw_screen_and_ctrl_d() to FAFTSequence base class.
- Move delay timing to FAFTSequence base class.
- Increase the USB unplug and plug delay in order to see the INSERT screen.
BUG=chromium-os:22712
TEST=manaul run on Kaen
$ run_remote_tests.sh --remote=$REMOTE_IP -a \
"xml_config=servo_tegra2_kaen_overlay.xml \
servo_vid=0x18d1 servo_pid=0x5001" firmware_DevMode
$ run_remote_tests.sh --remote=$REMOTE_IP -a \
"xml_config=servo_tegra2_kaen_overlay.xml \
servo_vid=0x18d1 servo_pid=0x5001" firmware_DevTriggerRecovery
$ run_remote_tests.sh --remote=$REMOTE_IP -a \
"xml_config=servo_tegra2_kaen_overlay.xml \
servo_vid=0x18d1 servo_pid=0x5001" firmware_RecoveryButton
Change-Id: I7e2c0d91bb315a41863a68f35b15b6e2d65f2eba
Reviewed-on: https://gerrit.chromium.org/gerrit/11430
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 8fefc15..f19317f 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -70,6 +70,10 @@
OTHER_KERNEL_MAP = {'a':'4', 'b':'2', '2':'4', '4':'2', '3':'4', '5':'2'}
OTHER_ROOTFS_MAP = {'a':'5', 'b':'3', '2':'5', '4':'3', '3':'5', '5':'3'}
+ # Delay timing
+ FIRMWARE_SCREEN_DELAY = 10
+ TEXT_SCREEN_DELAY = 20
+ USB_PLUG_DELAY = 5
_faft_template = None
_faft_sequence = ()
@@ -99,7 +103,7 @@
"""Assert an USB disk plugged-in on servo and a test image inside.
Raises:
- error.TestError: if USB disk not detected or not a test image.
+ error.TestError: if USB disk not detected or not a test image.
"""
self.servo.set('usb_mux_sel1', 'servo_sees_usbkey')
usb_dev = self.probe_host_usb_dev()
@@ -237,7 +241,7 @@
and sets the requested higher priority to ensure it boot.
Args:
- part: A string of kernel partition number or 'a'/'b'.
+ part: A string of kernel partition number or 'a'/'b'.
"""
if not self.root_part_checker(part):
self.copy_kernel_and_rootfs(from_part=self.OTHER_KERNEL_MAP[part],
@@ -248,6 +252,46 @@
self.wait_for_client()
+ def wait_fw_screen_and_ctrl_d(self):
+ """Wait for firmware warning screen and press Ctrl-D."""
+ time.sleep(self.FIRMWARE_SCREEN_DELAY)
+ self.servo.ctrl_d()
+
+
+ def setup_dev_mode(self, dev_mode):
+ """Setup for development mode.
+
+ It makes sure the system in the request normal/dev mode. If not, i
+ tries to do so.
+
+ Args:
+ dev_mode: True if requested in dev mode; False if normal mode.
+ """
+ if dev_mode:
+ if not self.crossystem_checker({'devsw_cur': '1'}):
+ logging.info('Dev switch is not on. Now switch it on.')
+ self.servo.enable_development_mode()
+ if not self.crossystem_checker({'devsw_boot': '1',
+ 'mainfw_type': 'developer'}):
+ logging.info('System is not in dev mode. Reboot into it.')
+ self.faft_client.run_shell_command(
+ 'chromeos-firmwareupdate --mode todev && reboot')
+ self.wait_for_client_offline()
+ self.wait_fw_screen_and_ctrl_d()
+ self.wait_for_client()
+ else:
+ if not self.crossystem_checker({'devsw_cur': '0'}):
+ logging.info('Dev switch is not off. Now switch it off.')
+ self.servo.disable_development_mode()
+ if not self.crossystem_checker({'devsw_boot': '0',
+ 'mainfw_type': 'normal'}):
+ logging.info('System is not in normal mode. Reboot into it.')
+ self.faft_client.run_shell_command(
+ 'chromeos-firmwareupdate --mode tonormal && reboot')
+ self.wait_for_client_offline()
+ self.wait_for_client()
+
+
def setup_kernel(self, part):
"""Setup for kernel test.
@@ -255,7 +299,7 @@
the requested kernel part.
Args:
- part: A string of kernel partition number or 'a'/'b'.
+ part: A string of kernel partition number or 'a'/'b'.
"""
self.ensure_kernel_boot(part)
self.copy_kernel_and_rootfs(from_part=part,
@@ -269,7 +313,7 @@
This function also reset kerenl A and B to bootable.
Args:
- part: A string of partition number to be prioritized.
+ part: A string of partition number to be prioritized.
"""
root_dev = self.faft_client.get_root_dev()
# Reset kernel A and B to bootable.
@@ -364,7 +408,7 @@
"""Run FAFT sequence.
Raises:
- error.TestFail: An error when the test failed.
+ error.TestFail: An error when the test failed.
"""
default_test = self._faft_template
sequence = self._faft_sequence