Log remote SSH process error
Currently if the remote SSH process dies, the error only comes from
client not coming up. In this case, we lose the log from the SSH
process. Let's log it so that it's easier to debug.
BUG=None
TEST=Kill SSH process and see "Killed by signal 15" log.
Change-Id: I3fdc7e80ffaa1b0c684277eb9e54c134ec7dd954
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/51438
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/cros/servo_test.py b/server/cros/servo_test.py
index 99332ed..f8c9e82 100644
--- a/server/cros/servo_test.py
+++ b/server/cros/servo_test.py
@@ -112,11 +112,13 @@
logging.info('Client command: %s', self._REMOTE_COMMAND)
logging.info("Logging to %s", self._REMOTE_LOG_FILE)
- full_cmd = ['ssh -n -q %s root@%s \'%s &> %s\'' % (
+ full_cmd = ['ssh -n %s root@%s \'%s &> %s\'' % (
self._SSH_CONFIG, self._client.ip,
self._REMOTE_COMMAND, self._REMOTE_LOG_FILE)]
logging.info('Starting process %s', ' '.join(full_cmd))
- self._remote_process = subprocess.Popen(full_cmd, shell=True)
+ self._remote_process = subprocess.Popen(full_cmd, shell=True,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
# Connect to RPC object.
logging.info('Connecting to client RPC server...')
@@ -130,6 +132,14 @@
rpc_error = None
while timeout > 0 and not succeed:
time.sleep(1)
+ if self._remote_process.poll() is not None:
+ # The SSH process is gone. Log stderr.
+ logging.error('Remote process died!')
+ sout, serr = self._remote_process.communicate()
+ logging.error('Stdout: %s', sout)
+ logging.error('Stderr: %s', serr)
+ break
+
try:
self.faft_client.system.is_available()
succeed = True