qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Amador Pahim" <apahim@redhat.com>,
	"Stefan Hajnoczi" <stefanha@gmail.com>,
	"Lukáš Doktor" <ldoktor@redhat.com>,
	"Alistair Francis" <alistair23@gmail.com>,
	"Cleber Rosa" <crosa@redhat.com>, "Fam Zheng" <famz@redhat.com>
Subject: [Qemu-devel] [RFC 09/24] avocado_qemu: Ignore kernel messages on get_console
Date: Fri, 20 Apr 2018 15:19:36 -0300	[thread overview]
Message-ID: <20180420181951.7252-10-ehabkost@redhat.com> (raw)
In-Reply-To: <20180420181951.7252-1-ehabkost@redhat.com>

From: Lukáš Doktor <ldoktor@redhat.com>

The get_console (and _handle_prompt) uses the last non-empty line to
check what is going on, but when debug is enabled, kernel produces lots
of lines spoiling the output. Let's also ignore the messages that looks
like kernel debugs ([  $float] $msg).

This significantly improves the results on my machine with JeOS and
enabled debug.

Signed-off-by: Lukáš Doktor <ldoktor@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 tests/avocado/avocado_qemu/test.py | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/tests/avocado/avocado_qemu/test.py b/tests/avocado/avocado_qemu/test.py
index 9dc6c1ef91..966936a52f 100644
--- a/tests/avocado/avocado_qemu/test.py
+++ b/tests/avocado/avocado_qemu/test.py
@@ -26,6 +26,7 @@ extra features intended for Qemu testing.
 
 import logging
 import os
+import re
 import sys
 import time
 import uuid
@@ -120,6 +121,17 @@ def _handle_prompts(session, username, password, prompt, timeout=60,
     :return: If connect succeed return the output text to script for further
              debug.
     """
+    re_kernel_message = re.compile(r"^\[\s*\d+.\d+\] ")
+
+    def get_last_nonempty_line(cont):
+        """Return last non-empty non-kernel line"""
+        nonempty_lines = [_ for _ in cont.splitlines()
+                          if _.strip() and not re_kernel_message.match(_)]
+        if nonempty_lines:
+            return nonempty_lines[-1]
+        else:
+            return ""
+
     password_prompt_count = 0
     login_prompt_count = 0
     last_chance = False
@@ -128,7 +140,7 @@ def _handle_prompts(session, username, password, prompt, timeout=60,
     output = ""
     while True:
         try:
-            match, text = session.read_until_last_line_matches(
+            match, text = session.read_until_output_matches(
                 [r"[Aa]re you sure", r"[Pp]assword:\s*",
                  # Prompt of rescue mode for Red Hat.
                  r"\(or (press|type) Control-D to continue\):\s*",
@@ -137,7 +149,7 @@ def _handle_prompts(session, username, password, prompt, timeout=60,
                  r"[Cc]onnection.*closed", r"[Cc]onnection.*refused",
                  r"[Pp]lease wait", r"[Ww]arning", r"[Ee]nter.*username",
                  r"[Ee]nter.*password", r"[Cc]onnection timed out", prompt,
-                 r"Escape character is.*"],
+                 r"Escape character is.*"], get_last_nonempty_line,
                 timeout=timeout, internal_timeout=0.5)
             output += text
             if match == 0:  # "Are you sure you want to continue connecting"
-- 
2.14.3

  parent reply	other threads:[~2018-04-20 18:21 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-20 18:19 [Qemu-devel] [RFC 00/24] Avocado-based functional tests Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 01/24] qemu.py: Introduce _create_console() method Eduardo Habkost
2018-04-20 19:56   ` Eduardo Habkost
2018-04-23  3:26     ` Thomas Huth
2018-04-23 19:47       ` Eduardo Habkost
2018-05-11 15:37     ` Cleber Rosa
2018-04-20 18:19 ` [Qemu-devel] [RFC 02/24] Introduce the basic framework to run Avocado tests Eduardo Habkost
2018-04-20 19:59   ` Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 03/24] avocado_qemu: Improve handle_prompts to allow login after booted vm Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 04/24] avocado_qemu: Be lenient towards poluted serial console Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 05/24] avocado_qemu: Increase the login timeout to 60s Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 06/24] avocado_qemu: Add " " after the default prompt regexp Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 07/24] avocado_qemu: Store "arch" in VM Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 08/24] avocado_qemu: Provide defaults for user and pass Eduardo Habkost
2018-04-20 18:19 ` Eduardo Habkost [this message]
2018-04-20 18:19 ` [Qemu-devel] [RFC 10/24] avocado_qemu: Add support to request image for testing Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 11/24] avocado_qemu: Fix exception name in caller Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 12/24] avocado_qemu: Improve migration error message Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 13/24] avocado_qemu: Functional test for RHBZ#1431939 Eduardo Habkost
2018-04-30 13:02   ` Stefan Hajnoczi
2018-05-07 14:03     ` Eduardo Habkost
2018-05-10  9:14       ` Stefan Hajnoczi
2018-04-20 18:19 ` [Qemu-devel] [RFC 14/24] avocado_qemu: Functional test for RHBZ#1447027 Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 15/24] avocado_qemu: Functional test for RHBZ#1436616 Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 16/24] avocado_qemu: Functional test for RHBZ1473203 Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 17/24] avocado_qemu: Remove duplicate PortTracker implementation Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 18/24] avocado_qemu: Simplify the installation instructions Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 19/24] avocado_qemu: Clean unneeded 'pass' Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 20/24] avocado_qemu: Set QMP log level to INFO Eduardo Habkost
2018-04-20 20:03   ` Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 21/24] avocado_qemu: Introduce the add_image() VM API Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 22/24] avocado_qemu: Tests fixes Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 23/24] avocado_qemu: Force vmimage distro Eduardo Habkost
2018-04-20 18:19 ` [Qemu-devel] [RFC 24/24] avocado_qemu: Add a few VNC related tests Eduardo Habkost
2018-04-20 18:47 ` [Qemu-devel] [RFC 00/24] Avocado-based functional tests no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180420181951.7252-10-ehabkost@redhat.com \
    --to=ehabkost@redhat.com \
    --cc=alistair23@gmail.com \
    --cc=apahim@redhat.com \
    --cc=crosa@redhat.com \
    --cc=famz@redhat.com \
    --cc=ldoktor@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).