autotest: Check servo-host by ping before check if it labstation.
When we create servo_topology we can fail if servo_host is not sshable.
Move init topology for late step if labstation will come back during
repair.
BUG=b:166680257
TEST=run local test agains the bad labstation
./server/autoserv -s --host-info-subdir host_info_store -m chromeos6-row7-rack13-host7 --lab True --local-only-host-info True -R -r /tr/
./server/autoserv -s --host-info-subdir host_info_store -m chromeos6-row1-rack19-host17 --lab True --local-only-host-info True -R -r /tr/
Change-Id: I54fd18f876b5bc83a8ca52ebef10b8d7107f902c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2561561
Tested-by: Otabek Kasimov <otabek@google.com>
Reviewed-by: Gregory Nisbet <gregorynisbet@google.com>
Reviewed-by: Garry Wang <xianuowang@chromium.org>
Commit-Queue: Otabek Kasimov <otabek@google.com>
diff --git a/server/hosts/servo_host.py b/server/hosts/servo_host.py
index fac2990..d127071 100644
--- a/server/hosts/servo_host.py
+++ b/server/hosts/servo_host.py
@@ -208,9 +208,6 @@
self.servo_setup = servo_setup
self.additional_servod_args = additional_servod_args
- if self.is_servo_topology_supported():
- self._topology = servo_topology.ServoTopology(self)
-
# The location of the log files on the servo host for this instance.
self.remote_log_dir = '%s_%s' % (self.SERVOD_LOG_PREFIX,
self.servo_port)
@@ -340,7 +337,8 @@
self._servo_state = servo_constants.SERVO_STATE_WORKING
self.record('INFO', None, None,
'ServoHost verify set servo_state as WORKING')
- if self._topology:
+ if self.is_servo_topology_supported():
+ self._topology = servo_topology.ServoTopology(self)
self._topology.generate()
except Exception as e:
if not self.is_localhost():
@@ -578,7 +576,8 @@
# reboot request created by this servo because it passed repair.
if self.is_labstation():
self.withdraw_reboot_request()
- if self._topology:
+ if self.is_servo_topology_supported():
+ self._topology = servo_topology.ServoTopology(self)
self._topology.generate()
except Exception as e:
if not self.is_localhost():
@@ -1453,6 +1452,9 @@
def is_servo_topology_supported(self):
"""Check if servo_topology is supported."""
+ if not self.is_up_fast():
+ logging.info('Servo-Host is not reachable.')
+ return False
if not self.is_labstation():
logging.info('Servo-topology supported only for labstation.')
return False