Skip to content

Commit

Permalink
tests/acceptance: allow console interaction with specific VMs
Browse files Browse the repository at this point in the history
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>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <159073587933.20809.5122618715976660635.stgit@pasha-ThinkPad-X280>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
  • Loading branch information
Dovgalyuk authored and philmd committed May 31, 2020
1 parent 2c9120a commit a5ba86d
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions tests/acceptance/avocado_qemu/__init__.py
Expand Up @@ -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()
Expand Down Expand Up @@ -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
Expand All @@ -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):
Expand Down

0 comments on commit a5ba86d

Please sign in to comment.