From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Thomas Huth" <thuth@redhat.com>,
"Ani Sinha" <anisinha@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Daniel P. Berrangé" <berrange@redhat.com>
Subject: [PATCH v2 16/18] tests/functional: remove time.sleep usage from tuxrun tests
Date: Thu, 21 Nov 2024 15:42:16 +0000 [thread overview]
Message-ID: <20241121154218.1423005-17-berrange@redhat.com> (raw)
In-Reply-To: <20241121154218.1423005-1-berrange@redhat.com>
The tuxrun tests send a series of strings to the guest to login
and then run commands. Since we have been unable to match on
console output that isn't followed by a newline, the test used
many time.sleep() statements to pretend to synchronize with
the guest.
This has proved to be unreliable for the aarch64be instance of
the tuxrun tests, with the test often hanging. The hang is a
very subtle timing problem, and it is suspected that some
(otherwise apparently harmless) I/O error messages could be
resulting in full FIFO buffers, stalling interaction with
the guest.
With the newly rewritten console interaction able to match
strings that don't have a following newline, the tux run
tests can now match directly on the login prompt, and/or
shell PS1 prompt.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2689
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
tests/functional/qemu_test/tuxruntest.py | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/tests/functional/qemu_test/tuxruntest.py b/tests/functional/qemu_test/tuxruntest.py
index ed2b238c92..ab3b27da43 100644
--- a/tests/functional/qemu_test/tuxruntest.py
+++ b/tests/functional/qemu_test/tuxruntest.py
@@ -124,16 +124,12 @@ def run_tuxtest_tests(self, haltmsg):
then do a few things on the console. Trigger a shutdown and
wait to exit cleanly.
"""
- self.wait_for_console_pattern("Welcome to TuxTest")
- time.sleep(0.2)
- exec_command(self, 'root')
- time.sleep(0.2)
- exec_command(self, 'cat /proc/interrupts')
- time.sleep(0.1)
- exec_command(self, 'cat /proc/self/maps')
- time.sleep(0.1)
- exec_command(self, 'uname -a')
- time.sleep(0.1)
+ ps1='root@tuxtest:~#'
+ self.wait_for_console_pattern('tuxtest login:')
+ exec_command_and_wait_for_pattern(self, 'root', ps1)
+ exec_command_and_wait_for_pattern(self, 'cat /proc/interrupts', ps1)
+ exec_command_and_wait_for_pattern(self, 'cat /proc/self/maps', ps1)
+ exec_command_and_wait_for_pattern(self, 'uname -a', ps1)
exec_command_and_wait_for_pattern(self, 'halt', haltmsg)
# Wait for VM to shut down gracefully if it can
--
2.46.0
next prev parent reply other threads:[~2024-11-21 15:48 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-21 15:42 [PATCH v2 00/18] test/functional: improve functional test debugging & fix tuxrun Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 01/18] tests/functional: fix mips64el test to honour workdir Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 02/18] tests/functional: automatically clean up scratch files after tests Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 03/18] tests/functional: remove "AVOCADO" from env variable name Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 04/18] tests/functional: remove todo wrt avocado.utils.wait_for Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 05/18] tests/functional: remove leftover :avocado: tags Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 06/18] tests/functional: remove obsolete reference to avocado bug Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 07/18] tests/functional: remove comments talking about avocado Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 08/18] tests/functional: honour self.workdir in ACPI bits tests Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 09/18] tests/functional: put QEMUMachine logs in testcase log directory Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 10/18] tests/functional: honour requested test VM name in QEMUMachine Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 11/18] tests/functional: enable debug logging for QEMUMachine Daniel P. Berrangé
2024-11-21 19:01 ` Thomas Huth
2024-11-21 15:42 ` [PATCH v2 12/18] tests/functional: logs details of console interaction operations Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 13/18] tests/functional: don't try to wait for the empty string Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 14/18] tests/functional: require non-NULL success_message for console wait Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 15/18] tests/functional: rewrite console handling to be bytewise Daniel P. Berrangé
2024-11-21 15:42 ` Daniel P. Berrangé [this message]
2024-11-21 15:42 ` [PATCH v2 17/18] tests/functional: add a QMP backdoor for debugging stalled tests Daniel P. Berrangé
2024-11-21 15:42 ` [PATCH v2 18/18] tests/functional: avoid accessing log_filename on earlier failures Daniel P. Berrangé
2024-11-21 16:41 ` [PATCH v2 00/18] test/functional: improve functional test debugging & fix tuxrun Alex Bennée
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=20241121154218.1423005-17-berrange@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=anisinha@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.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).