All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>, Thomas Huth <thuth@redhat.com>
Subject: Re: running a single functional test: where do the logs go?
Date: Mon, 9 Mar 2026 12:40:39 +0000	[thread overview]
Message-ID: <aa6_x250FtIdy1iw@redhat.com> (raw)
In-Reply-To: <CAFEAcA8FhiJZy6NqRUVnWQ+L6=fE8Ssqs9FEW2eO2eAVTrL=_w@mail.gmail.com>

On Mon, Mar 09, 2026 at 11:55:58AM +0000, Peter Maydell wrote:
> The functional test documentation suggests running a single test
> with the build/run script. But if you do this where do the logfiles go?

They should always go in the build directory

> As you can see from this transcript, they don't seem to get written
> into the place that a "make check-functional" run puts them:
> 
> $ ls -l build/san/tests/functional/arm/test_emcraft_sf2.EmcraftSf2Machine.test_arm_emcraft_sf2/
> total 16
> -rw-r--r-- 1 pm215 pm215 3084 Mar  9 10:51 base.log
> -rw-r--r-- 1 pm215 pm215  825 Mar  9 10:51 console.log
> -rw-r--r-- 1 pm215 pm215  235 Mar  9 10:54 default.log
> drwxr-xr-x 3 pm215 pm215 4096 Mar  9 10:51 scratch
> $ date
> Mon Mar  9 11:20:13 GMT 2026
> $ time QEMU_TEST_QEMU_BINARY=./build/san/qemu-system-arm
> ./build/san/run tests/functional/arm/test_emcraft_sf2.py
> TAP version 13
> ok 1 test_emcraft_sf2.EmcraftSf2Machine.test_arm_emcraft_sf2
> 1..1
> 
> real    3m24.394s
> user    3m21.314s
> sys     0m3.100s
> $ ls -l build/san/tests/functional/arm/test_emcraft_sf2.EmcraftSf2Machine.test_arm_emcraft_sf2/
> total 16
> -rw-r--r-- 1 pm215 pm215 3084 Mar  9 10:51 base.log
> -rw-r--r-- 1 pm215 pm215  825 Mar  9 10:51 console.log
> -rw-r--r-- 1 pm215 pm215  235 Mar  9 10:54 default.log
> drwxr-xr-x 3 pm215 pm215 4096 Mar  9 10:51 scratch

That seems different from the behaviour I get


$ ls -al build/tests/functional/arm/test_emcraft_sf2.EmcraftSf2Machine.test_arm_emcraft_sf2/
total 28
drwxr-xr-x. 2 berrange berrange 4096 Mar  9 12:31 .
drwxr-xr-x. 3 berrange berrange 4096 Mar  9 12:30 ..
-rw-r--r--. 1 berrange berrange 6449 Mar  9 12:31 base.log
-rw-r--r--. 1 berrange berrange 8200 Mar  9 12:31 console.log
-rw-r--r--. 1 berrange berrange    0 Mar  9 12:30 default.log

$ time QEMU_TEST_QEMU_BINARY=qemu-system-arm ./build/run tests/functional/arm/test_emcraft_sf2.py
TAP version 13
ok 1 test_emcraft_sf2.EmcraftSf2Machine.test_arm_emcraft_sf2
1..1

real	0m10.731s
user	0m10.597s
sys	0m0.130s
$ ls -al build/tests/functional/arm/test_emcraft_sf2.EmcraftSf2Machine.test_arm_emcraft_sf2/
total 28
drwxr-xr-x. 2 berrange berrange 4096 Mar  9 12:32 .
drwxr-xr-x. 3 berrange berrange 4096 Mar  9 12:30 ..
-rw-r--r--. 1 berrange berrange 7253 Mar  9 12:32 base.log
-rw-r--r--. 1 berrange berrange 8200 Mar  9 12:32 console.log
-rw-r--r--. 1 berrange berrange    0 Mar  9 12:32 default.log


but in my case I'm just using ./build, where as you are using
./build/san, and I think that's tripping us up


def _build_dir():
    root = os.getenv('QEMU_BUILD_ROOT')
    if root is not None:
        return Path(root)
    # Makefile.mtest only exists in build dir, so if it is available, use CWD
    if os.path.exists('Makefile.mtest'):
        return Path(os.getcwd())

    root = os.path.join(_source_dir(), 'build')
    if os.path.exists(root):
        return Path(root)

    raise Exception("Cannot identify build dir, set QEMU_BUILD_ROOT")


The $CWD is the directory from which you are invoking the scripts,
so that Makefile.mtest check won't pass.

The _source_dir() / 'build'  test will pass, but that's not your
actual build dir, so that's not really correct.

The QEMU_BUILD_ROOT env was a special hack to allow overrides, but
we never set that by default.

These days, we do, however, set MESON_BUILD_ROOT in the meson devenv,
so the 'run' script should see that.

IOW, we should fix the _build_dir() method to look at MESON_BUILD_ROOT
instead of QEMU_BUILD_ROOT.

Meanwhile your logs are likely in build/tests/functional/... instead
of build/san/tests/functional.

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



  parent reply	other threads:[~2026-03-09 12:41 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-09 11:55 running a single functional test: where do the logs go? Peter Maydell
2026-03-09 12:03 ` Thomas Huth
2026-03-09 12:06   ` Peter Maydell
2026-03-09 12:08     ` Thomas Huth
2026-03-09 12:40 ` Daniel P. Berrangé [this message]
2026-03-09 13:08   ` Peter Maydell
2026-03-09 15:44 ` Daniel P. Berrangé

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=aa6_x250FtIdy1iw@redhat.com \
    --to=berrange@redhat.com \
    --cc=peter.maydell@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 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.