From: Fabiano Rosas <farosas@suse.de>
To: Steve Sistare <steven.sistare@oracle.com>, qemu-devel@nongnu.org
Cc: Laurent Vivier <lvivier@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Steve Sistare <steven.sistare@oracle.com>
Subject: Re: [PATCH] tests/qtest: optimize qtest_get_machines
Date: Fri, 19 Sep 2025 12:47:50 -0300 [thread overview]
Message-ID: <87v7letpeh.fsf@suse.de> (raw)
In-Reply-To: <1758290310-349623-1-git-send-email-steven.sistare@oracle.com>
Steve Sistare <steven.sistare@oracle.com> writes:
> qtest_get_machines returns the machines supported by the QEMU binary
> described by an environment variable and caches the result. If the
> next call to qtest_get_machines passes the same variable name, the cached
> result is returned, but if the name changes, the caching is defeated.
> To make caching more effective, remember the path of the QEMU binary
> instead. Different env vars, eg QTEST_QEMU_BINARY_SRC and
> QTEST_QEMU_BINARY_DST, usually resolve to the same path.
>
> Before the optimization, the test /x86_64/migration/precopy/unix/plain
> exec's QEMU and calls query-machines 3 times. After optimization, that
> only happens once. This does not significantly speed up the tests, but
> it reduces QTEST_LOG output, and launches fewer QEMU instances, making
> it easier to debug problems.
>
> Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
> ---
> tests/qtest/libqtest.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
> index 94526b7..f3d4e08 100644
> --- a/tests/qtest/libqtest.c
> +++ b/tests/qtest/libqtest.c
> @@ -1630,7 +1630,8 @@ static void qtest_free_machine_list(struct MachInfo *machines)
> static struct MachInfo *qtest_get_machines(const char *var)
> {
> static struct MachInfo *machines;
> - static char *qemu_var;
> + static char *qemu_bin;
> + const char *new_qemu_bin;
> QDict *response, *minfo;
> QList *list;
> const QListEntry *p;
> @@ -1639,9 +1640,10 @@ static struct MachInfo *qtest_get_machines(const char *var)
> QTestState *qts;
> int idx;
>
> - if (g_strcmp0(qemu_var, var)) {
> - g_free(qemu_var);
> - qemu_var = g_strdup(var);
> + new_qemu_bin = qtest_qemu_binary(var);
> + if (g_strcmp0(qemu_bin, new_qemu_bin)) {
> + g_free(qemu_bin);
> + qemu_bin = g_strdup(new_qemu_bin);
>
> /* new qemu, clear the cache */
> qtest_free_machine_list(machines);
> @@ -1654,7 +1656,7 @@ static struct MachInfo *qtest_get_machines(const char *var)
>
> silence_spawn_log = !g_test_verbose();
>
> - qts = qtest_init_ext(qemu_var, "-machine none", NULL, true);
> + qts = qtest_init_ext(var, "-machine none", NULL, true);
> response = qtest_qmp(qts, "{ 'execute': 'query-machines' }");
> g_assert(response);
> list = qdict_get_qlist(response, "return");
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Thanks! Queued.
next prev parent reply other threads:[~2025-09-19 15:49 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-19 13:58 [PATCH] tests/qtest: optimize qtest_get_machines Steve Sistare
2025-09-19 15:47 ` Fabiano Rosas [this message]
2025-09-20 7:12 ` Markus Armbruster
2025-09-22 18:22 ` Steven Sistare
2025-09-23 5:49 ` Markus Armbruster
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=87v7letpeh.fsf@suse.de \
--to=farosas@suse.de \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=steven.sistare@oracle.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.