[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