[dts] [PATCH v2] framework/ssh: Add verify ability for command execution
Michael Qiu
michael.qiu at intel.com
Tue Jan 27 06:22:33 CET 2015
ssh command exection never try to verify the failure or success,
It should be very dangerous when execute command both in dut and
tester machine without check the status, maybe unexpected error
happens.
This patch add this ability to verify the status.
Signed-off-by: Michael Qiu <michael.qiu at intel.com>
---
v2 --> v1
add error log when return error code for that
can be track in log.
framework/ssh_connection.py | 4 ++--
framework/ssh_pexpect.py | 14 +++++++++++++-
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/framework/ssh_connection.py b/framework/ssh_connection.py
index 4306162..d0b5e07 100644
--- a/framework/ssh_connection.py
+++ b/framework/ssh_connection.py
@@ -49,9 +49,9 @@ class SSHConnection(object):
self.logger.config_execution(self.name)
self.session.init_log(logger, self.name)
- def send_expect(self, cmds, expected, timeout=15):
+ def send_expect(self, cmds, expected, timeout=15, verify=False):
self.logger.info(cmds)
- out = self.session.send_expect(cmds, expected, timeout)
+ out = self.session.send_expect(cmds, expected, timeout, verify=False)
self.logger.debug(out)
return out
diff --git a/framework/ssh_pexpect.py b/framework/ssh_pexpect.py
index 9c353e7..b7d3475 100644
--- a/framework/ssh_pexpect.py
+++ b/framework/ssh_pexpect.py
@@ -29,12 +29,24 @@ class SSHPexpect(object):
self.logger.config_execution(name)
self.logger.info("ssh %s@%s" % (self.username, self.host))
- def send_expect(self, command, expected, timeout=15):
+ def send_expect_base(self, command, expected, timeout=15):
self.session.PROMPT = expected
self.__sendline(command)
self.__prompt(command, timeout)
return self.get_output_before()
+ def send_expect(self, command, expected, timeout=15, verify=False):
+ ret = self.send_expect_base(command, expected, timeout)
+ if verify:
+ ret_status = self.send_expect_base("echo $?", expected)
+ if not int(ret_status):
+ return ret
+ else:
+ self.logger.error("Command: %s failure!" % command)
+ return -1
+ else:
+ return ret
+
def __prompt(self, command, timeout):
if not self.session.prompt(timeout):
raise TimeoutException(command, self.get_output_all())
--
1.9.3
More information about the dts
mailing list