Hi Cleber,
On 1/17/19 7:56 PM, Cleber Rosa wrote:
> This introduces a utility method that monitors the console device and
> looks for either a message that signals the test success or failure.
>
> Signed-off-by: Cleber Rosa <crosa@redhat.com>
> ---
> tests/acceptance/boot_linux_console.py | 30 ++++++++++++++++++--------
> 1 file changed, 21 insertions(+), 9 deletions(-)
>
> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
> index 35b31162d4..278bb2be3d 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -23,6 +23,25 @@ class BootLinuxConsole(Test):
>
> timeout = 60
>
> + def wait_for_console_pattern(self, success_message,
> + failure_message='Kernel panic - not syncing'):
> + """
> + Waits for messages to appear on the console, while logging the content
> +
> + :param success_message: if this message appears, test succeeds
> + :param failure_message: if this message appears, test fails
> + """
> + console = self.vm.console_socket.makefile()
> + console_logger = logging.getLogger('console')
> + while True:
> + msg = console.readline()
> + console_logger.debug(msg.strip())
> + if success_message in msg:
> + break
> + if failure_message in msg:
> + fail = 'Failure message found in console: %s' % failure_message
> + self.fail(fail)
> +
This helper is more generic than the BootLinuxConsole class, can you
move it out? I'd like to use it in test_uefi_ovmf_x86_64_pc and
test_uefi_armvirtqemu_aarch64_virt.
Anyway this can be a follow-up patch, so regardless:
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> def test_x86_64_pc(self):
> """
> :avocado: tags=arch:x86_64
> @@ -39,12 +58,5 @@ class BootLinuxConsole(Test):
> self.vm.add_args('-kernel', kernel_path,
> '-append', kernel_command_line)
> self.vm.launch()
> - console = self.vm.console_socket.makefile()
> - console_logger = logging.getLogger('console')
> - while True:
> - msg = console.readline()
> - console_logger.debug(msg.strip())
> - if 'Kernel command line: %s' % kernel_command_line in msg:
> - break
> - if 'Kernel panic - not syncing' in msg:
> - self.fail("Kernel panic reached")
> + console_pattern = 'Kernel command line: %s' % kernel_command_line
> + self.wait_for_console_pattern(console_pattern)
>