Improve Huddly Updater test by using power_cycle_usb_util instead of
manipulating gpio nodes.
This will also add support for running the test on fizz devices.
BUG=b:78138651
TEST=None
Change-Id: I4e755a1d66c9eb0038ab0c1c79c4878d5248d474
Reviewed-on: https://chromium-review.googlesource.com/1065585
Reviewed-by: Jarkko Oikarinen <jtho@google.com>
Reviewed-by: Zhongze Hu <frankhu@google.com>
Tested-by: Liang Li <dianwa@chromium.org>
diff --git a/server/site_tests/enterprise_CFM_HuddlyUpdater/enterprise_CFM_HuddlyUpdater.py b/server/site_tests/enterprise_CFM_HuddlyUpdater/enterprise_CFM_HuddlyUpdater.py
index 066b9cf..bbbadf1 100644
--- a/server/site_tests/enterprise_CFM_HuddlyUpdater/enterprise_CFM_HuddlyUpdater.py
+++ b/server/site_tests/enterprise_CFM_HuddlyUpdater/enterprise_CFM_HuddlyUpdater.py
@@ -8,12 +8,10 @@
import time
from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib.cros import power_cycle_usb_util
from autotest_lib.server import test
import parse
-GUADO_GPIO = 218 # For Front-Left USB port
-POWER_RECYCLE_WAIT_TIME = 1 # sec
-
class enterprise_CFM_HuddlyUpdater(test.test):
"""Tests the firmware updatability of HuddlyGo camera.
@@ -69,8 +67,6 @@
def _shcmd(self, cmd):
"""A simple wrapper for remote shell command execution."""
logging.info('CMD: [%s]', cmd)
- result = self._client.run(cmd)
-
# result is an object with following attributes:
# ['__class__', '__delattr__', '__dict__', '__doc__', '__eq__',
# '__format__', '__getattribute__', '__hash__', '__init__',
@@ -80,14 +76,13 @@
# 'exit_status', 'stderr', 'stdout']
try:
result = self._client.run(cmd)
+ if result.stderr:
+ logging.info('CMD ERR:\n' + result.stderr)
+ logging.info('CMD OUT:\n' + result.stdout)
+ return result
except:
pass
- if result.stderr:
- logging.info('CMD ERR:\n' + result.stderr)
- logging.info('CMD OUT:\n' + result.stdout)
- return result
-
def copy_firmware(self):
"""Copy test firmware package from server to the DUT."""
current_dir = os.path.dirname(os.path.realpath(__file__))
@@ -229,27 +224,16 @@
def usb_power_recycle(self):
"""Recycle the power to a USB port.
- # TODO(frankhu): This code supports Guado, at a specific test
- # configuration. Develop an independent tool to perform this task
- # with minimal dependency.
+ # Use Power cycle usb util to recycle power.
"""
try:
- # Ignorant handling of GPIO export.
- cmd = 'echo {} > /sys/class/gpio/export'.format(GUADO_GPIO)
- self._shcmd(cmd)
- except error.AutoservRunError:
- pass
+ power_cycle_usb_util.power_cycle_usb_vidpid(self.host,
+ self.board, self.vid, self.pid)
+ except KeyError:
+ raise error.TestFail('Couldn\'t find target device: '
+ 'vid:pid {}:{}'.format(self.vid, self.pid))
- cmd = 'echo out > /sys/class/gpio/gpio{}/direction'.format(GUADO_GPIO)
- self._shcmd(cmd)
- cmd = 'echo 0 > /sys/class/gpio/gpio{}/value'.format(GUADO_GPIO)
- self._shcmd(cmd)
-
- # Wait for 1 second to avoid too fast removal and reconnection.
- time.sleep(POWER_RECYCLE_WAIT_TIME)
- cmd = 'echo 1 > /sys/class/gpio/gpio{}/value'.format(GUADO_GPIO)
- self._shcmd(cmd)
def is_filesystem_readwrite(self):
"""Check if the root file system is read-writable.