autotest: Update servo_state during DUT repair task
Updating servo_state during ServoHost.verify() and ServoHost.repair()
BUG=chromium:1045191,chromium:1012504
TEST=unittest
Change-Id: I794e90f0bbab554bd87fa89d8785eab9b0023f7c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2053074
Reviewed-by: Garry Wang <xianuowang@chromium.org>
Commit-Queue: Otabek Kasimov <otabek@google.com>
Tested-by: Otabek Kasimov <otabek@google.com>
Auto-Submit: Otabek Kasimov <otabek@google.com>
diff --git a/server/hosts/servo_host.py b/server/hosts/servo_host.py
index 87c0eb4..f479215 100644
--- a/server/hosts/servo_host.py
+++ b/server/hosts/servo_host.py
@@ -54,6 +54,10 @@
'SCHEDULER', 'drone_installation_directory',
default='/usr/local/autotest')
+SERVO_STATE_LABEL_PREFIX = 'servo_state'
+SERVO_STATE_WORKING = 'WORKING'
+SERVO_STATE_BROKEN = 'BROKEN'
+
class ServoHost(base_servohost.BaseServoHost):
"""Host class for a servo host(e.g. beaglebone, labstation)
@@ -70,6 +74,15 @@
# Ready test function
SERVO_READY_METHOD = 'get_version'
+ def _init_attributes(self):
+ self._servo_state = None
+ self.servo_port = None
+ self.servo_board = None
+ self.servo_model = None
+ self.servo_serial = None
+ self._servo = None
+ self._servod_server_proxy = None
+
def _initialize(self, servo_host='localhost',
servo_port=DEFAULT_PORT, servo_board=None,
@@ -93,12 +106,11 @@
"""
super(ServoHost, self)._initialize(hostname=servo_host,
is_in_lab=is_in_lab, *args, **dargs)
+ self._init_attributes()
self.servo_port = int(servo_port)
self.servo_board = servo_board
self.servo_model = servo_model
self.servo_serial = servo_serial
- self._servo = None
- self._servod_server_proxy = None
# Path of the servo host lock file.
self._lock_file = (self.TEMP_FILE_DIR + str(self.servo_port)
@@ -194,7 +206,11 @@
self.record('INFO', None, None, message)
try:
self._repair_strategy.verify(self, silent)
+ self._servo_state = SERVO_STATE_WORKING
+ self.record('INFO', None, None, 'ServoHost verify set servo_state as WORKING')
except:
+ self._servo_state = SERVO_STATE_BROKEN
+ self.record('INFO', None, None, 'ServoHost verify set servo_state as BROKEN')
self.disconnect_servo()
self.stop_servod()
raise
@@ -210,11 +226,15 @@
self.record('INFO', None, None, message)
try:
self._repair_strategy.repair(self, silent)
+ self._servo_state = SERVO_STATE_WORKING
+ self.record('INFO', None, None, 'ServoHost repair set servo_state as WORKING')
# If target is a labstation then try to withdraw any existing
# reboot request created by this servo because it passed repair.
if self.is_labstation():
self.withdraw_reboot_request()
except:
+ self._servo_state = SERVO_STATE_BROKEN
+ self.record('INFO', None, None, 'ServoHost repair set servo_state as BROKEN')
self.disconnect_servo()
self.stop_servod()
raise
@@ -356,6 +376,10 @@
super(ServoHost, self).close()
+ def get_servo_state(self):
+ return SERVO_STATE_BROKEN if self._servo_state is None else self._servo_state
+
+
def make_servo_hostname(dut_hostname):
"""Given a DUT's hostname, return the hostname of its servo.