From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id CEE3718F for ; Wed, 14 Jan 2015 02:27:41 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 13 Jan 2015 17:24:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,753,1413270000"; d="scan'208";a="636928867" Received: from pgsmsx105.gar.corp.intel.com ([10.221.44.96]) by orsmga001.jf.intel.com with ESMTP; 13 Jan 2015 17:27:39 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by PGSMSX105.gar.corp.intel.com (10.221.44.96) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 14 Jan 2015 09:24:12 +0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.192]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.64]) with mapi id 14.03.0195.001; Wed, 14 Jan 2015 09:24:10 +0800 From: "Liu, Yong" To: "Qiu, Michael" , "dts@dpdk.org" Thread-Topic: [PATCH 4/6] framework/ssh: Add verify ability for command execution Thread-Index: AQHQLzblAwsARgJ+YkykQQNyi32uE5y+0l7w Date: Wed, 14 Jan 2015 01:24:10 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E10D4C260@SHSMSX103.ccr.corp.intel.com> References: <1421156540-25810-1-git-send-email-michael.qiu@intel.com> <1421156540-25810-5-git-send-email-michael.qiu@intel.com> In-Reply-To: <1421156540-25810-5-git-send-email-michael.qiu@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH 4/6] framework/ssh: Add verify ability for command execution X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Jan 2015 01:27:42 -0000 Thanks for this idea. DTS can check return status as it default behavior. A= nd when command return error, the output is still valuable. My suggestion is that function send_expect should return both output messag= e and command executed return value. > -----Original Message----- > From: Qiu, Michael > Sent: Tuesday, January 13, 2015 9:42 PM > To: dts@dpdk.org > Cc: Liu, Yong; Qiu, Michael > Subject: [PATCH 4/6] framework/ssh: Add verify ability for command > execution >=20 > ssh command exection never try to verify the failure or success, >=20 > It should be very dangerous when execute command both in dut and > tester machine without check the status, maybe unexpected error > happens. >=20 > This patch add this ability to verify the status. >=20 > Signed-off-by: Michael Qiu > --- > framework/ssh_connection.py | 4 ++-- > framework/ssh_pexpect.py | 13 ++++++++++++- > 2 files changed, 14 insertions(+), 3 deletions(-) >=20 > diff --git a/framework/ssh_connection.py b/framework/ssh_connection.py > index 4306162..1ff79b9 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) >=20 > - def send_expect(self, cmds, expected, timeout=3D15): > + def send_expect(self, cmds, expected, timeout=3D15, verify=3DFalse): > self.logger.info(cmds) > - out =3D self.session.send_expect(cmds, expected, timeout) > + out =3D self.session.send_expect(cmds, expected, timeout, verify= =3DFalse) > self.logger.debug(out) > return out >=20 > diff --git a/framework/ssh_pexpect.py b/framework/ssh_pexpect.py > index 9c353e7..2fad899 100644 > --- a/framework/ssh_pexpect.py > +++ b/framework/ssh_pexpect.py > @@ -29,12 +29,23 @@ class SSHPexpect(object): > self.logger.config_execution(name) > self.logger.info("ssh %s@%s" % (self.username, self.host)) >=20 > - def send_expect(self, command, expected, timeout=3D15): > + def send_expect_base(self, command, expected, timeout=3D15): > self.session.PROMPT =3D expected > self.__sendline(command) > self.__prompt(command, timeout) > return self.get_output_before() >=20 > + def send_expect(self, command, expected, timeout=3D15, verify=3DFals= e): > + ret =3D self.send_expect_base(command, expected, timeout) > + if verify: > + ret_status =3D self.send_expect_base("echo $?", expected) > + if not int(ret_status): > + return ret > + else: > + 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