autotest: Set servo_type when init servo host.
This changes temporally till we upload deploy script and fill al missed servo_types in inventory.
BUG=chromium:1071524
TEST=run local
./server/autoserv -s --host-info-subdir host_info_store -m chromeos4-row9-rack8-host21 --lab True --local-only-host-info True -R -r /usr/local/google/home/otabek/test_result/
Change-Id: I1a85a5ee3df289d7986641368cc821a57b9b780b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2182035
Commit-Queue: Otabek Kasimov <[email protected]>
Tested-by: Otabek Kasimov <[email protected]>
Reviewed-by: Garry Wang <[email protected]>
diff --git a/server/cros/servo/servo.py b/server/cros/servo/servo.py
index 0c90203..15796c2 100644
--- a/server/cros/servo/servo.py
+++ b/server/cros/servo/servo.py
@@ -1142,6 +1142,10 @@
return servo_type
+ def get_servo_type(self):
+ return self._servo_type
+
+
def get_main_servo_device(self):
"""Return the main servo device"""
return self._servo_type.split('_with_')[-1].split('_and_')[0]
diff --git a/server/hosts/cros_host.py b/server/hosts/cros_host.py
index fb64f63..63ecbc3 100644
--- a/server/hosts/cros_host.py
+++ b/server/hosts/cros_host.py
@@ -1004,7 +1004,7 @@
servo_state = self._servo_host.get_servo_state()
else:
self.servo = None
-
+ self.set_servo_type()
self.set_servo_state(servo_state)
@@ -1031,6 +1031,30 @@
self.set_servo_host(self._servo_host)
+ def set_servo_type(self):
+ """Set servo info labels to dut host_info"""
+ if not self.servo:
+ logging.warning('Servo is not initialized to get servo_type.')
+ return
+ servo_type = self.servo.get_servo_type()
+ if not servo_type:
+ logging.warning('Cannot collect servo_type from servo'
+ ' by `dut-control servo_type`! Please file a bug'
+ ' and inform infra team as we are not expected '
+ ' to reach this point.')
+ return
+ host_info = self.host_info_store.get()
+ prefix = servo_constants.SERVO_TYPE_LABEL_PREFIX
+ old_type = host_info.get_label_value(prefix)
+ if old_type == servo_type:
+ # do not need update
+ return
+ host_info.set_version_label(prefix, servo_type)
+ self.host_info_store.commit(host_info)
+ logging.info('ServoHost: servo_type updated to %s '
+ '(previous: %s)', servo_type, old_type)
+
+
def set_servo_state(self, servo_state):
"""Set servo info labels to dut host_info"""
if servo_state is not None:
@@ -1051,6 +1075,7 @@
servo_state_prefix = servo_constants.SERVO_STATE_LABEL_PREFIX
return host_info.get_label_value(servo_state_prefix)
+
def repair(self):
"""Attempt to get the DUT to pass `self.verify()`.
diff --git a/server/hosts/cros_host_unittest.py b/server/hosts/cros_host_unittest.py
index cb7b1b5..924548d 100755
--- a/server/hosts/cros_host_unittest.py
+++ b/server/hosts/cros_host_unittest.py
@@ -125,7 +125,9 @@
host = MockHost()
host.servo = None
host._servo_host = mock.Mock()
- host._servo_host.get_servo.return_value = 'Not Empty'
+ servo = mock.Mock()
+ servo.get_servo_type.return_value = None
+ host._servo_host.get_servo.return_value = servo
host._servo_host.get_servo_state.return_value = 'SOME_STATE'
host.host_info_store = host_info.InMemoryHostInfoStore()
return host
@@ -169,7 +171,9 @@
def test_set_servo_host_update_servo_state_when_host_exist(self):
host = self.create_host()
host._servo_host = mock.Mock()
- host._servo_host.get_servo.return_value = 'Not Empty'
+ servo = mock.Mock()
+ servo.get_servo_type.return_value = None
+ host._servo_host.get_servo.return_value = servo
host._servo_host.get_servo_state.return_value = 'SOME_STATE'
self.assertEqual(host.host_info_store.get().get_label_value(SERVO_STATE_PREFIX), '')
@@ -190,7 +194,9 @@
def test_set_servo_host_use_servo_state_from_host_when_host_is_passed(self):
host = self.create_host()
servo_host = mock.Mock()
- servo_host.get_servo.return_value = 'Not Empty'
+ servo = mock.Mock()
+ servo.get_servo_type.return_value = None
+ servo_host.get_servo.return_value = servo
servo_host.get_servo_state.return_value = 'state_of_host'
host.set_servo_host(servo_host)