mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
tests/qtest: Allow qtest_get_machines to use an alternate QEMU binary
We're adding support for using more than one QEMU binary in tests. Modify qtest_get_machines() to take an environment variable that contains the QEMU binary path. Since the function keeps a cache of the machines list in the form of a static variable, refresh it any time the environment variable changes. Reviewed-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231018192741.25885-4-farosas@suse.de>
This commit is contained in:
parent
9931215bd3
commit
41b2eba4e5
1 changed files with 25 additions and 4 deletions
|
@ -1468,13 +1468,26 @@ struct MachInfo {
|
||||||
char *alias;
|
char *alias;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void qtest_free_machine_list(struct MachInfo *machines)
|
||||||
|
{
|
||||||
|
if (machines) {
|
||||||
|
for (int i = 0; machines[i].name != NULL; i++) {
|
||||||
|
g_free(machines[i].name);
|
||||||
|
g_free(machines[i].alias);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(machines);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns an array with pointers to the available machine names.
|
* Returns an array with pointers to the available machine names.
|
||||||
* The terminating entry has the name set to NULL.
|
* The terminating entry has the name set to NULL.
|
||||||
*/
|
*/
|
||||||
static struct MachInfo *qtest_get_machines(void)
|
static struct MachInfo *qtest_get_machines(const char *var)
|
||||||
{
|
{
|
||||||
static struct MachInfo *machines;
|
static struct MachInfo *machines;
|
||||||
|
static char *qemu_var;
|
||||||
QDict *response, *minfo;
|
QDict *response, *minfo;
|
||||||
QList *list;
|
QList *list;
|
||||||
const QListEntry *p;
|
const QListEntry *p;
|
||||||
|
@ -1483,11 +1496,19 @@ static struct MachInfo *qtest_get_machines(void)
|
||||||
QTestState *qts;
|
QTestState *qts;
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
|
if (g_strcmp0(qemu_var, var)) {
|
||||||
|
qemu_var = g_strdup(var);
|
||||||
|
|
||||||
|
/* new qemu, clear the cache */
|
||||||
|
qtest_free_machine_list(machines);
|
||||||
|
machines = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (machines) {
|
if (machines) {
|
||||||
return machines;
|
return machines;
|
||||||
}
|
}
|
||||||
|
|
||||||
qts = qtest_init("-machine none");
|
qts = qtest_init_with_env(qemu_var, "-machine none");
|
||||||
response = qtest_qmp(qts, "{ 'execute': 'query-machines' }");
|
response = qtest_qmp(qts, "{ 'execute': 'query-machines' }");
|
||||||
g_assert(response);
|
g_assert(response);
|
||||||
list = qdict_get_qlist(response, "return");
|
list = qdict_get_qlist(response, "return");
|
||||||
|
@ -1528,7 +1549,7 @@ void qtest_cb_for_every_machine(void (*cb)(const char *machine),
|
||||||
struct MachInfo *machines;
|
struct MachInfo *machines;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
machines = qtest_get_machines();
|
machines = qtest_get_machines(NULL);
|
||||||
|
|
||||||
for (i = 0; machines[i].name != NULL; i++) {
|
for (i = 0; machines[i].name != NULL; i++) {
|
||||||
/* Ignore machines that cannot be used for qtests */
|
/* Ignore machines that cannot be used for qtests */
|
||||||
|
@ -1549,7 +1570,7 @@ bool qtest_has_machine(const char *machine)
|
||||||
struct MachInfo *machines;
|
struct MachInfo *machines;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
machines = qtest_get_machines();
|
machines = qtest_get_machines(NULL);
|
||||||
|
|
||||||
for (i = 0; machines[i].name != NULL; i++) {
|
for (i = 0; machines[i].name != NULL; i++) {
|
||||||
if (g_str_equal(machine, machines[i].name) ||
|
if (g_str_equal(machine, machines[i].name) ||
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue