1. Removed the system() and system_output() implementations from client/bin/autotest_utils.py so that the ones in common_lib/utils.py are used throughout.
2. Add an optional parameter to system_output() in client/common_lib/utils.py to retain stdout and not throw it away.
3. Renamed ignorestatus to ignore_status to make it consistent with the rest of the code.
4. Modified the tests to use the renamed ignore_status option
5. Modifed the CmdError() implementation in client/common_lib/error.py and made sure all the places on the server side, that expect a AutoservRunError exception are changed to expect and handle a CmdError exception instead.
Signed-off-by: Ashwin Ganti <aganti@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@1499 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/server/git.py b/server/git.py
index fce92aa..ad9de34 100644
--- a/server/git.py
+++ b/server/git.py
@@ -89,7 +89,7 @@
rv = self.gitcmd(cmd, True)
if rv.exit_status != 0:
print rv.stderr
- raise CmdError('Failed to clone git url', rv.exit_status)
+ raise CmdError('Failed to clone git url', rv)
else:
print rv.stdout
@@ -101,7 +101,7 @@
if rv.exit_status != 0:
print rv.stderr
e_msg = 'Failed to pull git repo data'
- raise CmdError(e_msg, rv.exit_status)
+ raise CmdError(e_msg, rv)
else:
print 'repo up-to-date'
diff --git a/server/hosts/ssh_host.py b/server/hosts/ssh_host.py
index f6391d3..fafd409 100644
--- a/server/hosts/ssh_host.py
+++ b/server/hosts/ssh_host.py
@@ -327,7 +327,13 @@
env = " ".join("=".join(pair) for pair in self.env.iteritems())
full_cmd = '%s "%s %s"' % (self.ssh_command(connect_timeout),
env, utils.sh_escape(command))
- result = utils.run(full_cmd, timeout, True, stdout, stderr)
+ try:
+ result = utils.run(full_cmd, timeout, True, stdout, stderr)
+ # we get a CmdError here only if there is timeout of that command.
+ # Catch that and stuff it into AutoservRunError and raise it.
+ except error.CmdError, cmderr:
+ raise error.AutoservRunError(cmderr.args[0], cmderr.args[1])
+
if result.exit_status == 255: # ssh's exit status for timeout
if re.match(r'^ssh: connect to host .* port .*: ' +
r'Connection timed out\r$', result.stderr):