From: "Alex Bennée" <alex.bennee@linaro.org>
To: Nicholas Piggin <npiggin@gmail.com>
Cc: qemu-devel@nongnu.org,
"Pavel Dovgalyuk" <Pavel.Dovgalyuk@ispras.ru>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"John Snow" <jsnow@redhat.com>, "Cleber Rosa" <crosa@redhat.com>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Beraldo Leal" <bleal@redhat.com>
Subject: Re: [PATCH v3 3/9] tests/avocado: excercise scripts/replay-dump.py in replay tests
Date: Tue, 27 Feb 2024 19:21:26 +0000 [thread overview]
Message-ID: <87frxdd87d.fsf@draig.linaro.org> (raw)
In-Reply-To: <20240226082945.1452499-4-npiggin@gmail.com> (Nicholas Piggin's message of "Mon, 26 Feb 2024 18:29:39 +1000")
Nicholas Piggin <npiggin@gmail.com> writes:
> This runs replay-dump.py after recording a trace, and fails the test if
> the script fails.
>
> replay-dump.py is modified to exit with non-zero if an error is
> encountered while parsing, to support this.
>
> Reviewed-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> scripts/replay-dump.py | 6 ++++--
> tests/avocado/replay_kernel.py | 16 ++++++++++++++++
> tests/avocado/replay_linux.py | 15 +++++++++++++++
> 3 files changed, 35 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/replay-dump.py b/scripts/replay-dump.py
> index b82659cfb6..4ce7ff51cc 100755
> --- a/scripts/replay-dump.py
> +++ b/scripts/replay-dump.py
> @@ -21,6 +21,7 @@
> import argparse
> import struct
> import os
> +import sys
> from collections import namedtuple
> from os import path
>
> @@ -100,7 +101,7 @@ def call_decode(table, index, dumpfile):
> print("Could not decode index: %d" % (index))
> print("Entry is: %s" % (decoder))
> print("Decode Table is:\n%s" % (table))
> - return False
> + raise(Exception("unknown event"))
> else:
> return decoder.fn(decoder.eid, decoder.name, dumpfile)
>
> @@ -121,7 +122,7 @@ def print_event(eid, name, string=None, event_count=None):
> def decode_unimp(eid, name, _unused_dumpfile):
> "Unimplemented decoder, will trigger exit"
> print("%s not handled - will now stop" % (name))
> - return False
> + raise(Exception("unhandled event"))
>
> def decode_plain(eid, name, _unused_dumpfile):
> "Plain events without additional data"
> @@ -434,6 +435,7 @@ def decode_file(filename):
> dumpfile)
> except Exception as inst:
> print(f"error {inst}")
> + sys.exit(1)
>
> finally:
> print(f"Reached {dumpfile.tell()} of {dumpsize} bytes")
> diff --git a/tests/avocado/replay_kernel.py b/tests/avocado/replay_kernel.py
> index 10d99403a4..9b3ee6726b 100644
> --- a/tests/avocado/replay_kernel.py
> +++ b/tests/avocado/replay_kernel.py
> @@ -13,6 +13,7 @@
> import shutil
> import logging
> import time
> +import subprocess
>
> from avocado import skip
> from avocado import skipUnless
> @@ -22,6 +23,11 @@
> from avocado.utils import process
> from boot_linux_console import LinuxKernelTest
>
> +from pathlib import Path
> +
> +self_dir = Path(__file__).parent
> +src_dir = self_dir.parent.parent
> +
Whats this for? It doesn't seem to be used.
> class ReplayKernelBase(LinuxKernelTest):
> """
> Boots a Linux kernel in record mode and checks that the console
> @@ -63,6 +69,8 @@ def run_vm(self, kernel_path, kernel_command_line, console_pattern,
> vm.shutdown()
> logger.info('finished the recording with log size %s bytes'
> % os.path.getsize(replay_path))
> + self.run_replay_dump(replay_path)
> + logger.info('successfully tested replay-dump.py')
> else:
> vm.wait()
> logger.info('successfully finished the replay')
> @@ -70,6 +78,14 @@ def run_vm(self, kernel_path, kernel_command_line, console_pattern,
> logger.info('elapsed time %.2f sec' % elapsed)
> return elapsed
>
> + def run_replay_dump(self, replay_path):
> + try:
> + subprocess.check_call(["./scripts/replay-dump.py",
> + "-f", replay_path],
> + cwd=src_dir, stdout=subprocess.DEVNULL)
> + except subprocess.CalledProcessError:
> + self.fail('replay-dump.py failed')
> +
> def run_rr(self, kernel_path, kernel_command_line, console_pattern,
> shift=7, args=None):
> replay_path = os.path.join(self.workdir, 'replay.bin')
> diff --git a/tests/avocado/replay_linux.py b/tests/avocado/replay_linux.py
> index f3a43dc98c..e4539c5551 100644
> --- a/tests/avocado/replay_linux.py
> +++ b/tests/avocado/replay_linux.py
> @@ -21,6 +21,11 @@
> from avocado.utils.path import find_command
> from avocado_qemu import LinuxTest
>
> +from pathlib import Path
> +
> +self_dir = Path(__file__).parent
> +src_dir = self_dir.parent.parent
> +
And here to.
> class ReplayLinux(LinuxTest):
> """
> Boots a Linux system, checking for a successful initialization
> @@ -94,6 +99,8 @@ def launch_and_wait(self, record, args, shift):
> vm.shutdown()
> logger.info('finished the recording with log size %s bytes'
> % os.path.getsize(replay_path))
> + self.run_replay_dump(replay_path)
> + logger.info('successfully tested replay-dump.py')
> else:
> vm.event_wait('SHUTDOWN', self.timeout)
> vm.wait()
> @@ -108,6 +115,14 @@ def run_rr(self, args=None, shift=7):
> logger = logging.getLogger('replay')
> logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))
>
> + def run_replay_dump(self, replay_path):
> + try:
> + subprocess.check_call(["./scripts/replay-dump.py",
> + "-f", replay_path],
> + cwd=src_dir, stdout=subprocess.DEVNULL)
> + except subprocess.CalledProcessError:
> + self.fail('replay-dump.py failed')
> +
> @skipUnless(os.getenv('AVOCADO_TIMEOUT_EXPECTED'), 'Test might timeout')
> class ReplayLinuxX8664(ReplayLinux):
> """
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2024-02-27 19:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-26 8:29 [PATCH v3 0/9] replay: fixes and new test cases Nicholas Piggin
2024-02-26 8:29 ` [PATCH v3 1/9] scripts/replay-dump.py: Update to current rr record format Nicholas Piggin
2024-02-27 15:57 ` Alex Bennée
2024-02-26 8:29 ` [PATCH v3 2/9] scripts/replay-dump.py: rejig decoders in event number order Nicholas Piggin
2024-02-27 15:57 ` Alex Bennée
2024-02-26 8:29 ` [PATCH v3 3/9] tests/avocado: excercise scripts/replay-dump.py in replay tests Nicholas Piggin
2024-02-27 19:21 ` Alex Bennée [this message]
2024-02-29 3:10 ` Nicholas Piggin
2024-02-26 8:29 ` [PATCH v3 4/9] replay: allow runstate shutdown->running when replaying trace Nicholas Piggin
2024-02-27 19:28 ` Alex Bennée
2024-02-26 8:29 ` [PATCH v3 5/9] Revert "replay: stop us hanging in rr_wait_io_event" Nicholas Piggin
2024-02-26 8:29 ` [PATCH v3 6/9] chardev: set record/replay on the base device of a muxed device Nicholas Piggin
2024-02-26 8:29 ` [PATCH v3 7/9] replay: Fix migration use of clock Nicholas Piggin
2024-02-26 8:29 ` [PATCH v3 8/9] replay: Fix migration replay_mutex locking Nicholas Piggin
2024-02-26 8:29 ` [PATCH v3 9/9] tests/avocado/reverse_debugging.py: mark aarch64 and pseries as not flaky Nicholas Piggin
2024-02-27 19:36 ` 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=87frxdd87d.fsf@draig.linaro.org \
--to=alex.bennee@linaro.org \
--cc=Pavel.Dovgalyuk@ispras.ru \
--cc=bleal@redhat.com \
--cc=crosa@redhat.com \
--cc=jsnow@redhat.com \
--cc=npiggin@gmail.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=wainersm@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.