avocado_qemu: add exec_command function

Sometimes a test needs to send a command to a console without waiting
for a pattern as a result, or the command issued do not produce any kind
of output, like, for example, a `mount` command.

This introduces the `exec_command` function to the avocado_qemu,
allowing the test to send a command to the console without the need to
match a pattern produced as a result.

Signed-off-by: Willian Rampazzo <willianr@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
Message-Id: <20210303205320.146047-2-willianr@redhat.com>
Signed-off-by: Cleber Rosa <crosa@redhat.com>
This commit is contained in:
Willian Rampazzo 2021-03-03 17:53:19 -03:00 committed by Cleber Rosa
parent f9cc00346d
commit cd093d5a2c

View file

@ -93,7 +93,7 @@ def _console_interaction(test, success_message, failure_message,
if not msg:
continue
console_logger.debug(msg)
if success_message in msg:
if success_message is None or success_message in msg:
break
if failure_message and failure_message in msg:
console.close()
@ -140,6 +140,18 @@ def wait_for_console_pattern(test, success_message, failure_message=None,
"""
_console_interaction(test, success_message, failure_message, None, vm=vm)
def exec_command(test, command):
"""
Send a command to a console (appending CRLF characters), while logging
the content.
:param test: an Avocado test containing a VM.
:type test: :class:`avocado_qemu.Test`
:param command: the command to send
:type command: str
"""
_console_interaction(test, None, None, command + '\r')
def exec_command_and_wait_for_pattern(test, command,
success_message, failure_message=None):
"""