On Thu, Sep 10, 2009 at 12:35:13PM +0100, Mark McLoughlin wrote:
* tests/testutilsqemu.c: make 'pc' an alias for
qemu-system-x86_64
* tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.*,
tests/qemuxml2argvtest.c: add a test which uses qemu-system-x86_64
and make sure the machine type is canonicalized.
---
.../qemuxml2argv-machine-aliases1.args | 1 +
.../qemuxml2argv-machine-aliases1.xml | 22 ++++++++++++++
tests/qemuxml2argvtest.c | 1 +
tests/testutilsqemu.c | 31 +++++++++++++++++++-
4 files changed, 54 insertions(+), 1 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.xml
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args
b/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args
new file mode 100644
index 0000000..4f62cb1
--- /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 0000000..039abfd
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.xml
@@ -0,0 +1,22 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index edd3744..afaf392 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 d85e4c7..ad58010 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,
ACK, more tests is good,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/