From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 89C488D85 for ; Tue, 1 Dec 2015 09:52:08 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP; 01 Dec 2015 00:52:07 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,368,1444719600"; d="scan'208";a="831650641" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga001.jf.intel.com with ESMTP; 01 Dec 2015 00:51:50 -0800 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id tB18pmPH022276; Tue, 1 Dec 2015 16:51:48 +0800 Received: from shecgisg003.sh.intel.com (localhost [127.0.0.1]) by shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id tB18pjVf023943; Tue, 1 Dec 2015 16:51:47 +0800 Received: (from yliu84x@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id tB18pj2O023939; Tue, 1 Dec 2015 16:51:45 +0800 From: Yong Liu To: dts@dpdk.org Date: Tue, 1 Dec 2015 16:51:44 +0800 Message-Id: <1448959904-23907-1-git-send-email-yong.liu@intel.com> X-Mailer: git-send-email 1.7.4.1 Subject: [dts] [PATCH] framework: support create addtional sessions on crb 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: Tue, 01 Dec 2015 08:52:08 -0000 Add session create/destroy functions in crb module. Suite can create addtional session in dut by this function. When session useless, suite should close the session definitely. Below is sample code addtional session: session = self.dut.new_session() session.send_expect("ls -al", "# ") self.dut.close_session(session=session) Signed-off-by: Marvin Liu diff --git a/framework/crb.py b/framework/crb.py index 3c158ec..68fe399 100644 --- a/framework/crb.py +++ b/framework/crb.py @@ -56,6 +56,7 @@ class Crb(object): self.skip_setup = False self.serializer = serializer self.ports_info = None + self.sessions = [] self.logger = getLogger(name) self.session = SSHConnection(self.get_ip_address(), name, @@ -81,6 +82,24 @@ class Crb(object): return self.session.send_expect(cmds, expected, timeout, verify) + def create_session(self, name=""): + """ + Create new session for addtional useage. This session will not enable log. + """ + session = SSHConnection(self.get_ip_address(), name, + self.get_password()) + self.sessions.append(session) + return session.session + + def destroy_session(self, session=None): + """ + Destroy addtional session. + """ + for save_session in self.sessions: + if save_session.session == session: + save_session.close() + self.sessions.remove(save_session) + def send_command(self, cmds, timeout=TIMEOUT, alt_session=False): """ Send commands to crb and return string before timeout. diff --git a/framework/dut.py b/framework/dut.py index c75f325..2cea7fb 100644 --- a/framework/dut.py +++ b/framework/dut.py @@ -41,6 +41,7 @@ from crb import Crb from net_device import NetDevice from virt_resource import VirtResource from utils import RED +from uuid import uuid4 class Dut(Crb): @@ -85,6 +86,21 @@ class Dut(Crb): self.host_session.init_log(self.logger) self.host_init_flag = True + def new_session(self): + """ + Create new session for dut instance. Session name will be unique. + """ + session_name = str(uuid4()) + session = self.create_session(name=session_name) + session.send_expect("cd %s" % self.base_dir, "# ") + return session + + def close_session(self, session): + """ + close new session in dut instance + """ + self.destroy_session(session) + def change_config_option(self, target, parameter, value): """ This function change option in the config file -- 1.9.3