On 6/7/21 3:16 PM, Thomas Huth wrote: > On 04/06/2021 17.51, Alex Bennée wrote: >> From: Philippe Mathieu-Daudé <phi...@redhat.com> >> >> Introduce the qtest_has_accel() method which allows a runtime >> query on whether a QEMU instance has an accelerator built-in. >> >> Reviewed-by: Eric Blake <ebl...@redhat.com> >> Reviewed-by: Alex Bennée <alex.ben...@linaro.org> >> Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> >> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> >> Message-Id: <20210505125806.1263441-4-phi...@redhat.com> >> --- >> tests/qtest/libqos/libqtest.h | 8 ++++++++ >> tests/qtest/libqtest.c | 29 +++++++++++++++++++++++++++++ >> 2 files changed, 37 insertions(+)
>> +bool qtest_has_accel(const char *accel_name) >> +{ >> + bool has_accel = false; >> + QDict *response; >> + QList *accels; >> + QListEntry *accel; >> + QTestState *qts; >> + >> + qts = qtest_initf("-accel qtest -machine none"); >> + response = qtest_qmp(qts, "{'execute': 'query-accels'}"); >> + accels = qdict_get_qlist(response, "return"); >> + >> + QLIST_FOREACH_ENTRY(accels, accel) { >> + QDict *accel_dict = qobject_to(QDict, qlist_entry_obj(accel)); >> + const char *name = qdict_get_str(accel_dict, "name"); >> + >> + if (g_str_equal(name, accel_name)) { >> + has_accel = true; >> + break; >> + } >> + } >> + qobject_unref(response); >> + >> + qtest_quit(qts); >> + >> + return has_accel; >> +} > > This spawns a new instance of QEMU each time the function is called - > which could slow down testing quite a bit if a test calls this function > quite often. Would it be feasible to cache this information, so that you > only have to run a new instance of QEMU once? Good idea!