test suite reviews and discussions
 help / color / mirror / Atom feed
* [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).