* [dts] [PATCH] framework: support create addtional sessions on crb
@ 2015-12-01 8:51 Yong Liu
2015-12-02 6:13 ` Tu, LijuanX A
2015-12-02 7:41 ` [dts] [PATCH v2] " Yong Liu
0 siblings, 2 replies; 3+ messages in thread
From: Yong Liu @ 2015-12-01 8:51 UTC (permalink / raw)
To: dts
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 <yong.liu@intel.com>
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dts] [PATCH] framework: support create addtional sessions on crb
2015-12-01 8:51 [dts] [PATCH] framework: support create addtional sessions on crb Yong Liu
@ 2015-12-02 6:13 ` Tu, LijuanX A
2015-12-02 7:41 ` [dts] [PATCH v2] " Yong Liu
1 sibling, 0 replies; 3+ messages in thread
From: Tu, LijuanX A @ 2015-12-02 6:13 UTC (permalink / raw)
To: Liu, Yong, dts
Hi yong,
There are no logs when sending cmds. I hope see logs as master session.
> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Yong Liu
> Sent: Tuesday, December 01, 2015 4:52 PM
> To: dts@dpdk.org
> Subject: [dts] [PATCH] framework: support create addtional sessions on
> crb
>
> 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 <yong.liu@intel.com>
>
> 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* [dts] [PATCH v2] framework: support create addtional sessions on crb
2015-12-01 8:51 [dts] [PATCH] framework: support create addtional sessions on crb Yong Liu
2015-12-02 6:13 ` Tu, LijuanX A
@ 2015-12-02 7:41 ` Yong Liu
1 sibling, 0 replies; 3+ messages in thread
From: Yong Liu @ 2015-12-02 7:41 UTC (permalink / raw)
To: dts
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.
Suite should appoint out which logfile used to save output message.
By default output message will be saved in dts.log.
Below is sample code for addtional session:
session = self.dut.new_session(suite="TestVlan")
session.send_expect("ls -al", "# ")
self.dut.close_session(session=session)
Signed-off-by: Marvin Liu <yong.liu@intel.com>
diff --git a/framework/crb.py b/framework/crb.py
index 3c158ec..5ea0d63 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,28 @@ 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.
+ """
+ logger = getLogger(name)
+ session = SSHConnection(self.get_ip_address(), name,
+ self.get_password())
+ session.init_log(logger)
+ self.sessions.append(session)
+ return session
+
+ def destroy_session(self, session=None):
+ """
+ Destroy addtional session.
+ """
+ for save_session in self.sessions:
+ if save_session == session:
+ save_session.close()
+ logger = getLogger(save_session.name)
+ logger.logger_exit()
+ 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..2101fc8 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,25 @@ class Dut(Crb):
self.host_session.init_log(self.logger)
self.host_init_flag = True
+ def new_session(self, suite=""):
+ """
+ Create new session for dut instance. Session name will be unique.
+ """
+ session_name = self.NAME + '_' + str(uuid4())
+ session = self.create_session(name=session_name)
+ if suite != "":
+ session.logger.config_suite(suite, self.NAME)
+ else:
+ session.logger.config_execution(self.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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-12-02 7:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-01 8:51 [dts] [PATCH] framework: support create addtional sessions on crb Yong Liu
2015-12-02 6:13 ` Tu, LijuanX A
2015-12-02 7:41 ` [dts] [PATCH v2] " Yong Liu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).