tests/acceptance: allow console interaction with specific VMs

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>
This commit is contained in:
Pavel Dovgalyuk 2020-05-29 10:04:39 +03:00 committed by Philippe Mathieu-Daudé
parent 2c9120a223
commit a5ba86d423
1 changed files with 8 additions and 5 deletions

View File

@ -69,13 +69,15 @@ def pick_default_qemu_bin(arch=None):
def _console_interaction(test, success_message, failure_message, 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 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') console_logger = logging.getLogger('console')
while True: while True:
if send_string: if send_string:
test.vm.console_socket.sendall(send_string.encode()) vm.console_socket.sendall(send_string.encode())
if not keep_sending: if not keep_sending:
send_string = None # send only once send_string = None # send only once
msg = console.readline().strip() msg = console.readline().strip()
@ -115,7 +117,8 @@ def interrupt_interactive_console_until_pattern(test, success_message,
_console_interaction(test, success_message, failure_message, _console_interaction(test, success_message, failure_message,
interrupt_string, True) 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 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 success_message: if this message appears, test succeeds
:param failure_message: if this message appears, test fails :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, def exec_command_and_wait_for_pattern(test, command,
success_message, failure_message=None): success_message, failure_message=None):