FAFT: Cold reset client on clean up if necessary
If the client is offline during clean up, cold reset it so that autoserv
ends gracefully. This saves us nearly 9 minutes in this kind of failures.
BUG=chrome-os-partner:23309
TEST=Turn off client during a test. Check client is reset before test
ends.
Change-Id: Ie5bf4a851134091f9d8450661119727b85bbac56
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/33180
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/cros/faftsequence.py b/server/cros/faftsequence.py
index 3a205de..7222463 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -305,6 +305,15 @@
super(FAFTSequence, self).cleanup()
+ def reset_client(self):
+ """Reset client if necessary."""
+ # TODO(crosbug/23309): Implement complete reset.
+ if not self._ping_test(self._client.ip, timeout=1):
+ # Client is offline. Cold reset it.
+ self.cold_reboot()
+ self.wait_for_client()
+
+
def assert_test_image_in_usb_disk(self, usb_dev=None):
"""Assert an USB disk plugged-in on servo and a test image inside.
@@ -1372,11 +1381,15 @@
self.wait_for_client_offline()
self._call_action(test['firmware_action'])
- if 'install_deps_after_boot' in test:
- self.wait_for_client(
- install_deps=test['install_deps_after_boot'])
- else:
- self.wait_for_client()
+ try:
+ if 'install_deps_after_boot' in test:
+ self.wait_for_client(
+ install_deps=test['install_deps_after_boot'])
+ else:
+ self.wait_for_client()
+ except AssertionError:
+ self.reset_client()
+ raise
def run_faft_sequence(self):