Skip to content

Commit

Permalink
test: pass -vvv to ssh to debug connection failures
Browse files Browse the repository at this point in the history
When doing `_init_connection`, set SSHs debug level to most verbose, so
that in case a connection failure occurs, we can look at the SSH logs
(both local and remote, see man ssh(1)).

Usually, SSH debug logs would clobber with output from the actual
command being run over the SSH connection, however since we're just
running `true`, and are not trying to do anything with its output,
that's fine in this case.

Signed-off-by: Patrick Roy <[email protected]>
  • Loading branch information
roypat committed Oct 16, 2024
1 parent a31c79a commit 0a3c6fa
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions tests/host_tools/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,24 +90,33 @@ def _init_connection(self):
We'll keep trying to execute a remote command that can't fail
(`/bin/true`), until we get a successful (0) exit code.
"""
self.check_output("true", timeout=10)
self.check_output("true", timeout=10, debug=True)

def run(self, cmd_string, timeout=None, *, check=False, debug=False):
"""
Execute the command passed as a string in the ssh context.
If `debug` is set, pass `-vvv` to `ssh`. Note that this will clobber stderr.
"""
command = [
"ssh",
*self.options,
f"{self.user}@{self.host}",
cmd_string,
]

if debug:
command.insert(1, "-vvv")

def run(self, cmd_string, timeout=None, *, check=False):
"""Execute the command passed as a string in the ssh context."""
return self._exec(
[
"ssh",
*self.options,
f"{self.user}@{self.host}",
cmd_string,
],
command,
timeout,
check=check,
)

def check_output(self, cmd_string, timeout=None):
def check_output(self, cmd_string, timeout=None, *, debug=False):
"""Same as `run`, but raises an exception on non-zero return code of remote command"""
return self.run(cmd_string, timeout, check=True)
return self.run(cmd_string, timeout, check=True, debug=debug)

def _exec(self, cmd, timeout=None, check=False):
"""Private function that handles the ssh client invocation."""
Expand Down

0 comments on commit 0a3c6fa

Please sign in to comment.