]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Test qemu machine aliases
authorMark McLoughlin <markmc@redhat.com>
Thu, 10 Sep 2009 10:19:12 +0000 (11:19 +0100)
committerMark McLoughlin <markmc@redhat.com>
Thu, 10 Sep 2009 11:37:42 +0000 (12:37 +0100)
* 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.

tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.xml [new file with mode: 0644]
tests/qemuxml2argvtest.c
tests/testutilsqemu.c

diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-aliases1.args
new file mode 100644 (file)
index 0000000..4f62cb1
--- /dev/null
@@ -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 (file)
index 0000000..039abfd
--- /dev/null
@@ -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>
index edd37441aaa51af03a14c82e581771689bce2bf4..afaf3922583952de2bfa84fc013625280ce661bf 100644 (file)
@@ -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);
index d85e4c720e544c01a9f136bad271b1abd8403967..ad58010a133b4ab6fcc63e2dd387910e9061b64e 100644 (file)
@@ -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,