diff mbox series

[v2,01/11] tests/acceptance: allow console interaction with specific VMs

Message ID 159057544414.16818.6329438674514481731.stgit@pasha-ThinkPad-X280
State New
Headers show
Series Record/replay acceptance tests | expand

Commit Message

Pavel Dovgalyuk May 27, 2020, 10:30 a.m. UTC
Console interaction in avocado scripts was possible only with single
default VM.
This patch modifies the function parameters to allow passing a specific
VM as a parameter to interact with it.

Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
Reviewed-by: Willian Rampazzo <willianr@redhat.com>
---
 0 files changed

Comments

Alex Bennée May 27, 2020, 2:20 p.m. UTC | #1
Pavel Dovgalyuk <Pavel.Dovgaluk@gmail.com> writes:

> Console interaction in avocado scripts was possible only with single
> default VM.
> This patch modifies the function parameters to allow passing a specific
> VM as a parameter to interact with it.
>
> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
> Reviewed-by: Willian Rampazzo <willianr@redhat.com>
> ---
>  0 files changed
>
> diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
> index 59e7b4f763..77d1c1d9ff 100644
> --- a/tests/acceptance/avocado_qemu/__init__.py
> +++ b/tests/acceptance/avocado_qemu/__init__.py
> @@ -69,13 +69,15 @@ def pick_default_qemu_bin(arch=None):
>  
>  
>  def _console_interaction(test, success_message, failure_message,
> -                         send_string, keep_sending=False):
> +                         send_string, keep_sending=False, vm=None):

is it not possible to make vm=test.vm to avoid having...

>      assert not keep_sending or send_string
> -    console = test.vm.console_socket.makefile()
> +    if vm is None:
> +        vm = test.vm

to do this here?

> +    console = vm.console_socket.makefile()
>      console_logger = logging.getLogger('console')
>      while True:
>          if send_string:
> -            test.vm.console_socket.sendall(send_string.encode())
> +            vm.console_socket.sendall(send_string.encode())
>              if not keep_sending:
>                  send_string = None # send only once
>          msg = console.readline().strip()
> @@ -115,7 +117,8 @@ def interrupt_interactive_console_until_pattern(test, success_message,
>      _console_interaction(test, success_message, failure_message,
>                           interrupt_string, True)
>  
> -def wait_for_console_pattern(test, success_message, failure_message=None):
> +def wait_for_console_pattern(test, success_message, failure_message=None,
> +                             vm=None):
>      """
>      Waits for messages to appear on the console, while logging the content
>  
> @@ -125,7 +128,7 @@ def wait_for_console_pattern(test, success_message, failure_message=None):
>      :param success_message: if this message appears, test succeeds
>      :param failure_message: if this message appears, test fails
>      """
> -    _console_interaction(test, success_message, failure_message, None)
> +    _console_interaction(test, success_message, failure_message, None, vm=vm)
>  
>  def exec_command_and_wait_for_pattern(test, command,
>                                        success_message, failure_message=None):

Otherwise:

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Willian Rampazzo May 27, 2020, 2:42 p.m. UTC | #2
On Wed, May 27, 2020 at 11:20 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
>
> Pavel Dovgalyuk <Pavel.Dovgaluk@gmail.com> writes:
>
> > Console interaction in avocado scripts was possible only with single
> > default VM.
> > This patch modifies the function parameters to allow passing a specific
> > VM as a parameter to interact with it.
> >
> > Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
> > Reviewed-by: Willian Rampazzo <willianr@redhat.com>
> > ---
> >  0 files changed
> >
> > diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
> > index 59e7b4f763..77d1c1d9ff 100644
> > --- a/tests/acceptance/avocado_qemu/__init__.py
> > +++ b/tests/acceptance/avocado_qemu/__init__.py
> > @@ -69,13 +69,15 @@ def pick_default_qemu_bin(arch=None):
> >
> >
> >  def _console_interaction(test, success_message, failure_message,
> > -                         send_string, keep_sending=False):
> > +                         send_string, keep_sending=False, vm=None):
>
> is it not possible to make vm=test.vm to avoid having...

This will cause a NameError as `test` is also a parameter here.

>
> >      assert not keep_sending or send_string
> > -    console = test.vm.console_socket.makefile()
> > +    if vm is None:
> > +        vm = test.vm
>
> to do this here?
>
> > +    console = vm.console_socket.makefile()
> >      console_logger = logging.getLogger('console')
> >      while True:
> >          if send_string:
> > -            test.vm.console_socket.sendall(send_string.encode())
> > +            vm.console_socket.sendall(send_string.encode())
> >              if not keep_sending:
> >                  send_string = None # send only once
> >          msg = console.readline().strip()
> > @@ -115,7 +117,8 @@ def interrupt_interactive_console_until_pattern(test, success_message,
> >      _console_interaction(test, success_message, failure_message,
> >                           interrupt_string, True)
> >
> > -def wait_for_console_pattern(test, success_message, failure_message=None):
> > +def wait_for_console_pattern(test, success_message, failure_message=None,
> > +                             vm=None):
> >      """
> >      Waits for messages to appear on the console, while logging the content
> >
> > @@ -125,7 +128,7 @@ def wait_for_console_pattern(test, success_message, failure_message=None):
> >      :param success_message: if this message appears, test succeeds
> >      :param failure_message: if this message appears, test fails
> >      """
> > -    _console_interaction(test, success_message, failure_message, None)
> > +    _console_interaction(test, success_message, failure_message, None, vm=vm)
> >
> >  def exec_command_and_wait_for_pattern(test, command,
> >                                        success_message, failure_message=None):
>
> Otherwise:
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
>
> --
> Alex Bennée
>
diff mbox series

Patch

diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
index 59e7b4f763..77d1c1d9ff 100644
--- a/tests/acceptance/avocado_qemu/__init__.py
+++ b/tests/acceptance/avocado_qemu/__init__.py
@@ -69,13 +69,15 @@  def pick_default_qemu_bin(arch=None):
 
 
 def _console_interaction(test, success_message, failure_message,
-                         send_string, keep_sending=False):
+                         send_string, keep_sending=False, vm=None):
     assert not keep_sending or send_string
-    console = test.vm.console_socket.makefile()
+    if vm is None:
+        vm = test.vm
+    console = vm.console_socket.makefile()
     console_logger = logging.getLogger('console')
     while True:
         if send_string:
-            test.vm.console_socket.sendall(send_string.encode())
+            vm.console_socket.sendall(send_string.encode())
             if not keep_sending:
                 send_string = None # send only once
         msg = console.readline().strip()
@@ -115,7 +117,8 @@  def interrupt_interactive_console_until_pattern(test, success_message,
     _console_interaction(test, success_message, failure_message,
                          interrupt_string, True)
 
-def wait_for_console_pattern(test, success_message, failure_message=None):
+def wait_for_console_pattern(test, success_message, failure_message=None,
+                             vm=None):
     """
     Waits for messages to appear on the console, while logging the content
 
@@ -125,7 +128,7 @@  def wait_for_console_pattern(test, success_message, failure_message=None):
     :param success_message: if this message appears, test succeeds
     :param failure_message: if this message appears, test fails
     """
-    _console_interaction(test, success_message, failure_message, None)
+    _console_interaction(test, success_message, failure_message, None, vm=vm)
 
 def exec_command_and_wait_for_pattern(test, command,
                                       success_message, failure_message=None):