diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args new file mode 100644 index 0000000000..4f62cb1888 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args @@ -0,0 +1 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu-system-x86_64 -S -M pc-0.11 -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.xml b/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.xml new file mode 100644 index 0000000000..039abfd6d3 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.xml @@ -0,0 +1,22 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219200 + 219200 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index edd37441aa..afaf392258 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -190,6 +190,7 @@ mymain(int argc, char **argv) unsetenv("LD_LIBRARY_PATH"); DO_TEST("minimal", QEMUD_CMD_FLAG_NAME); + DO_TEST("machine-aliases1", 0); DO_TEST("boot-cdrom", 0); DO_TEST("boot-network", 0); DO_TEST("boot-floppy", 0); diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index d85e4c720e..ad58010a13 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -24,6 +24,35 @@ static virCapsGuestMachinePtr *testQemuAllocMachines(int *nmachines) return machines; } +/* Newer versions of qemu have versioned machine types to allow + * compatibility with older releases. + * The 'pc' machine type is an alias of the newest machine type. + */ +static virCapsGuestMachinePtr *testQemuAllocNewerMachines(int *nmachines) +{ + virCapsGuestMachinePtr *machines; + char *canonical; + static const char *const x86_machines[] = { + "pc-0.11", "pc", "pc-0.10", "isapc" + }; + + if ((canonical = strdup(x86_machines[0])) == NULL) + return NULL; + + machines = virCapabilitiesAllocMachines(x86_machines, + ARRAY_CARDINALITY(x86_machines)); + if (machines == NULL) { + VIR_FREE(canonical); + return NULL; + } + + machines[1]->canonical = canonical; + + *nmachines = ARRAY_CARDINALITY(x86_machines); + + return machines; +} + virCapsPtr testQemuCapsInit(void) { struct utsname utsname; virCapsPtr caps; @@ -56,7 +85,7 @@ virCapsPtr testQemuCapsInit(void) { NULL) == NULL) goto cleanup; - if ((machines = testQemuAllocMachines(&nmachines)) == NULL) + if ((machines = testQemuAllocNewerMachines(&nmachines)) == NULL) goto cleanup; if ((guest = virCapabilitiesAddGuest(caps, "hvm", "x86_64", 64,