render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
Blob Blame History Raw
From: Jiri Denemark <jdenemar@redhat.com>
Date: Wed, 12 Nov 2014 16:49:59 +0100
Subject: [PATCH] qemu: Don't try to parse -help for new QEMU

Since QEMU 1.2.0, we switched to QMP probing instead of parsing -help
(and other commands, such as -cpu ?) output. However, if QMP probing
failed, we still tried starting QEMU with various options and parsing
the output, which was guaranteed to fail because the output changed.
Let's just refuse parsing -help for QEMU >= 1.2.0.

https://bugzilla.redhat.com/show_bug.cgi?id=1160318
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
(cherry picked from commit ae3e29e6e7a9a208732f22721e735d238b2aa8cb)
---
 src/qemu/qemu_capabilities.c             |  10 ++
 tests/qemuhelpdata/qemu-kvm-1.2.0-device | 238 ------------------------------
 tests/qemuhelptest.c                     | 246 ++-----------------------------
 3 files changed, 24 insertions(+), 470 deletions(-)
 delete mode 100644 tests/qemuhelpdata/qemu-kvm-1.2.0-device

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index b6c0f1b..6eb2955 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -1383,6 +1383,16 @@ int virQEMUCapsParseHelpStr(const char *qemu,
 
     *version = (major * 1000 * 1000) + (minor * 1000) + micro;
 
+    /* Refuse to parse -help output for QEMU releases >= 1.2.0 that should be
+     * using QMP probing.
+     */
+    if (*version >= 1002000) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("QEMU %u.%u.%u is too new for help parsing"),
+                       major, minor, micro);
+        goto cleanup;
+    }
+
     if (virQEMUCapsComputeCmdFlags(help, *version, *is_kvm, *kvm_version,
                                    qemuCaps, check_yajl) < 0)
         goto cleanup;
diff --git a/tests/qemuhelpdata/qemu-kvm-1.2.0-device b/tests/qemuhelpdata/qemu-kvm-1.2.0-device
deleted file mode 100644
index f4bfd68..0000000
--- a/tests/qemuhelpdata/qemu-kvm-1.2.0-device
+++ /dev/null
@@ -1,238 +0,0 @@
-name "VGA", bus PCI
-name "usb-storage", bus usb-bus
-name "scsi-hd", bus SCSI, desc "virtual SCSI disk"
-name "i82559a", bus PCI, desc "Intel i82559A Ethernet"
-name "i82559b", bus PCI, desc "Intel i82559B Ethernet"
-name "i82559c", bus PCI, desc "Intel i82559C Ethernet"
-name "esp", bus System
-name "sysbus-ohci", bus System, desc "OHCI USB Controller"
-name "virtio-blk-pci", bus PCI, alias "virtio-blk"
-name "usb-uas", bus usb-bus
-name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
-name "ide-drive", bus IDE, desc "virtual IDE disk or CD-ROM (legacy)"
-name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch"
-name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
-name "ide-hd", bus IDE, desc "virtual IDE disk"
-name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370"
-name "ioh3420", bus PCI, desc "Intel IOH device id 3420 PCIE Root Port"
-name "sga", bus ISA, desc "Serial Graphics Adapter"
-name "scsi-block", bus SCSI, desc "SCSI block device passthrough"
-name "usb-serial", bus usb-bus
-name "pc-sysfw", bus System, desc "PC System Firmware"
-name "usb-mouse", bus usb-bus
-name "usb-net", bus usb-bus
-name "usb-hub", bus usb-bus
-name "ccid-card-emulated", bus ccid-bus, desc "emulated smartcard"
-name "ne2k_isa", bus ISA
-name "pci-assign", bus PCI
-name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
-name "pcnet", bus PCI
-name "lsi53c895a", bus PCI, alias "lsi"
-name "scsi-disk", bus SCSI, desc "virtual SCSI disk or CD-ROM (legacy)"
-name "hda-micro", bus HDA, desc "HDA Audio Codec, duplex (speaker, microphone)"
-name "pci-ohci", bus PCI, desc "Apple USB Controller"
-name "nec-usb-xhci", bus PCI
-name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch"
-name "virtserialport", bus virtio-serial-bus
-name "usb-redir", bus usb-bus
-name "usb-braille", bus usb-bus
-name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM"
-name "usb-wacom-tablet", bus usb-bus, desc "QEMU PenPartner Tablet"
-name "isa-serial", bus ISA
-name "i82550", bus PCI, desc "Intel i82550 Ethernet"
-name "i82551", bus PCI, desc "Intel i82551 Ethernet"
-name "isa-debugcon", bus ISA
-name "ide-cd", bus IDE, desc "virtual IDE CD-ROM"
-name "SUNW,fdtwo", bus System
-name "ich9-usb-uhci2", bus PCI
-name "ich9-usb-uhci3", bus PCI
-name "ich9-usb-uhci1", bus PCI
-name "isa-parallel", bus ISA
-name "virtconsole", bus virtio-serial-bus
-name "ne2k_pci", bus PCI
-name "virtio-serial-pci", bus PCI, alias "virtio-serial"
-name "hda-duplex", bus HDA, desc "HDA Audio Codec, duplex (line-out, line-in)"
-name "intel-hda", bus PCI, desc "Intel HD Audio Controller"
-name "megasas", bus PCI, desc "LSI MegaRAID SAS 1078"
-name "i82559er", bus PCI, desc "Intel i82559ER Ethernet"
-name "hda-output", bus HDA, desc "HDA Audio Codec, output-only (line-out)"
-name "i82562", bus PCI, desc "Intel i82562 Ethernet"
-name "sysbus-ahci", bus System
-name "usb-ccid", bus usb-bus, desc "CCID Rev 1.1 smartcard reader"
-name "ivshmem", bus PCI
-name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio"
-name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
-name "sysbus-fdc", bus System
-name "usb-bt-dongle", bus usb-bus
-name "usb-tablet", bus usb-bus
-name "isa-vga", bus ISA
-name "usb-kbd", bus usb-bus
-name "isa-applesmc", bus ISA
-name "rtl8139", bus PCI
-name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
-name "i82557a", bus PCI, desc "Intel i82557A Ethernet"
-name "i82557c", bus PCI, desc "Intel i82557C Ethernet"
-name "usb-audio", bus usb-bus
-name "ib700", bus ISA
-name "piix3-usb-uhci", bus PCI
-name "i82557b", bus PCI, desc "Intel i82557B Ethernet"
-name "piix4-usb-uhci", bus PCI
-name "ccid-card-passthru", bus ccid-bus, desc "passthrough smartcard"
-name "i82801", bus PCI, desc "Intel i82801 Ethernet"
-name "smbus-eeprom", bus i2c-bus
-name "vmware-svga", bus PCI
-name "dc390", bus PCI, desc "Tekram DC-390 SCSI adapter"
-name "isa-cirrus-vga", bus ISA
-name "sb16", bus ISA, desc "Creative Sound Blaster 16"
-name "am53c974", bus PCI, desc "AMD Am53c974 PCscsi-PCI SCSI adapter"
-name "pci-bridge", bus PCI, desc "Standard PCI Bridge"
-name "i82558a", bus PCI, desc "Intel i82558A Ethernet"
-name "i82558b", bus PCI, desc "Intel i82558B Ethernet"
-name "virtio-net-pci", bus PCI, alias "virtio-net"
-name "virtio-balloon-pci", bus PCI, alias "virtio-balloon"
-name "ich9-usb-ehci1", bus PCI
-name "isa-ide", bus ISA
-name "usb-host", bus usb-bus
-name "ich9-ahci", bus PCI, alias "ahci"
-name "vt82c686b-usb-uhci", bus PCI
-name "usb-ehci", bus PCI
-name "testdev", bus ISA
-name "i6300esb", bus PCI
-name "virtio-scsi-pci", bus PCI
-pci-assign.host=pci-host-devaddr
-pci-assign.prefer_msi=on/off
-pci-assign.share_intx=on/off
-pci-assign.bootindex=int32
-pci-assign.configfd=string
-pci-assign.addr=pci-devfn
-pci-assign.romfile=string
-pci-assign.rombar=uint32
-pci-assign.multifunction=on/off
-pci-assign.command_serr_enable=on/off
-virtio-blk-pci.class=hex32
-virtio-blk-pci.drive=drive
-virtio-blk-pci.logical_block_size=blocksize
-virtio-blk-pci.physical_block_size=blocksize
-virtio-blk-pci.min_io_size=uint16
-virtio-blk-pci.opt_io_size=uint32
-virtio-blk-pci.bootindex=int32
-virtio-blk-pci.discard_granularity=uint32
-virtio-blk-pci.cyls=uint32
-virtio-blk-pci.heads=uint32
-virtio-blk-pci.secs=uint32
-virtio-blk-pci.serial=string
-virtio-blk-pci.scsi=on/off
-virtio-blk-pci.config-wce=on/off
-virtio-blk-pci.ioeventfd=on/off
-virtio-blk-pci.vectors=uint32
-virtio-blk-pci.indirect_desc=on/off
-virtio-blk-pci.event_idx=on/off
-virtio-blk-pci.config-wce=on/off
-virtio-blk-pci.addr=pci-devfn
-virtio-blk-pci.romfile=string
-virtio-blk-pci.rombar=uint32
-virtio-blk-pci.multifunction=on/off
-virtio-blk-pci.command_serr_enable=on/off
-virtio-net-pci.ioeventfd=on/off
-virtio-net-pci.vectors=uint32
-virtio-net-pci.indirect_desc=on/off
-virtio-net-pci.event_idx=on/off
-virtio-net-pci.csum=on/off
-virtio-net-pci.guest_csum=on/off
-virtio-net-pci.gso=on/off
-virtio-net-pci.guest_tso4=on/off
-virtio-net-pci.guest_tso6=on/off
-virtio-net-pci.guest_ecn=on/off
-virtio-net-pci.guest_ufo=on/off
-virtio-net-pci.host_tso4=on/off
-virtio-net-pci.host_tso6=on/off
-virtio-net-pci.host_ecn=on/off
-virtio-net-pci.host_ufo=on/off
-virtio-net-pci.mrg_rxbuf=on/off
-virtio-net-pci.status=on/off
-virtio-net-pci.ctrl_vq=on/off
-virtio-net-pci.ctrl_rx=on/off
-virtio-net-pci.ctrl_vlan=on/off
-virtio-net-pci.ctrl_rx_extra=on/off
-virtio-net-pci.mac=macaddr
-virtio-net-pci.vlan=vlan
-virtio-net-pci.netdev=netdev
-virtio-net-pci.bootindex=int32
-virtio-net-pci.x-txtimer=uint32
-virtio-net-pci.x-txburst=int32
-virtio-net-pci.tx=string
-virtio-net-pci.addr=pci-devfn
-virtio-net-pci.romfile=string
-virtio-net-pci.rombar=uint32
-virtio-net-pci.multifunction=on/off
-virtio-net-pci.command_serr_enable=on/off
-scsi-disk.drive=drive
-scsi-disk.logical_block_size=blocksize
-scsi-disk.physical_block_size=blocksize
-scsi-disk.min_io_size=uint16
-scsi-disk.opt_io_size=uint32
-scsi-disk.bootindex=int32
-scsi-disk.discard_granularity=uint32
-scsi-disk.ver=string
-scsi-disk.serial=string
-scsi-disk.vendor=string
-scsi-disk.product=string
-scsi-disk.removable=on/off
-scsi-disk.dpofua=on/off
-scsi-disk.wwn=hex64
-scsi-disk.channel=uint32
-scsi-disk.scsi-id=uint32
-scsi-disk.lun=uint32
-PIIX4_PM.smb_io_base=uint32
-PIIX4_PM.disable_s3=uint8
-PIIX4_PM.disable_s4=uint8
-PIIX4_PM.s4_val=uint8
-PIIX4_PM.addr=pci-devfn
-PIIX4_PM.romfile=string
-PIIX4_PM.rombar=uint32
-PIIX4_PM.multifunction=on/off
-PIIX4_PM.command_serr_enable=on/off
-usb-redir.chardev=chr
-usb-redir.debug=uint8
-usb-redir.filter=string
-usb-redir.bootindex=int32
-usb-redir.port=string
-usb-redir.full-path=on/off
-ide-drive.drive=drive
-ide-drive.logical_block_size=blocksize
-ide-drive.physical_block_size=blocksize
-ide-drive.min_io_size=uint16
-ide-drive.opt_io_size=uint32
-ide-drive.bootindex=int32
-ide-drive.discard_granularity=uint32
-ide-drive.ver=string
-ide-drive.wwn=hex64
-ide-drive.serial=string
-ide-drive.model=string
-ide-drive.unit=uint32
-usb-host.hostbus=uint32
-usb-host.hostaddr=uint32
-usb-host.hostport=string
-usb-host.vendorid=hex32
-usb-host.productid=hex32
-usb-host.isobufs=uint32
-usb-host.bootindex=int32
-usb-host.pipeline=on/off
-usb-host.port=string
-usb-host.full-path=on/off
-scsi-generic.drive=drive
-scsi-generic.bootindex=int32
-scsi-generic.channel=uint32
-scsi-generic.scsi-id=uint32
-scsi-generic.lun=uint32
-usb-storage.drive=drive
-usb-storage.logical_block_size=blocksize
-usb-storage.physical_block_size=blocksize
-usb-storage.min_io_size=uint16
-usb-storage.opt_io_size=uint32
-usb-storage.bootindex=int32
-usb-storage.discard_granularity=uint32
-usb-storage.serial=string
-usb-storage.removable=on/off
-usb-storage.port=string
-usb-storage.full-path=on/off
diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c
index 7e62a50..0c68367 100644
--- a/tests/qemuhelptest.c
+++ b/tests/qemuhelptest.c
@@ -19,6 +19,7 @@ struct testInfo {
     unsigned int version;
     bool is_kvm;
     unsigned int kvm_version;
+    int error;
 };
 
 static void printMismatchedFlags(virQEMUCapsPtr got,
@@ -58,8 +59,11 @@ static int testHelpStrParsing(const void *data)
         goto cleanup;
 
     if (virQEMUCapsParseHelpStr("QEMU", help, flags,
-                                &version, &is_kvm, &kvm_version, false) == -1)
+                                &version, &is_kvm, &kvm_version, false) == -1) {
+        if (info->error && virGetLastError()->code == info->error)
+            ret = 0;
         goto cleanup;
+    }
 
 # ifndef WITH_YAJL
     if (virQEMUCapsGet(info->flags, QEMU_CAPS_MONITOR_JSON))
@@ -132,10 +136,10 @@ mymain(void)
 {
     int ret = 0;
 
-# define DO_TEST(name, version, is_kvm, kvm_version, ...)                   \
+# define DO_TEST_FULL(name, version, is_kvm, kvm_version, error, ...)       \
     do {                                                                    \
         struct testInfo info = {                                            \
-            name, NULL, version, is_kvm, kvm_version                        \
+            name, NULL, version, is_kvm, kvm_version, error                 \
         };                                                                  \
         if (!(info.flags = virQEMUCapsNew()))                               \
             return EXIT_FAILURE;                                            \
@@ -146,6 +150,9 @@ mymain(void)
         virObjectUnref(info.flags);                                         \
     } while (0)
 
+# define DO_TEST(name, version, is_kvm, kvm_version, ...) \
+    DO_TEST_FULL(name, version, is_kvm, kvm_version, VIR_ERR_OK, __VA_ARGS__)
+
     DO_TEST("qemu-0.9.1", 9001, 0, 0,
             QEMU_CAPS_KQEMU,
             QEMU_CAPS_VNC_COLON,
@@ -849,235 +856,10 @@ mymain(void)
             QEMU_CAPS_OBJECT_USB_AUDIO,
             QEMU_CAPS_SPLASH_TIMEOUT,
             QEMU_CAPS_DEVICE_IVSHMEM);
-    DO_TEST("qemu-1.2.0", 1002000, 0, 0,
-            QEMU_CAPS_VNC_COLON,
-            QEMU_CAPS_NO_REBOOT,
-            QEMU_CAPS_DRIVE,
-            QEMU_CAPS_NAME,
-            QEMU_CAPS_UUID,
-            QEMU_CAPS_MIGRATE_QEMU_TCP,
-            QEMU_CAPS_MIGRATE_QEMU_EXEC,
-            QEMU_CAPS_DRIVE_CACHE_V2,
-            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
-            QEMU_CAPS_DRIVE_FORMAT,
-            QEMU_CAPS_DRIVE_SERIAL,
-            QEMU_CAPS_XEN_DOMID,
-            QEMU_CAPS_DRIVE_READONLY,
-            QEMU_CAPS_VGA,
-            QEMU_CAPS_0_10,
-            QEMU_CAPS_MEM_PATH,
-            QEMU_CAPS_SDL,
-            QEMU_CAPS_MIGRATE_QEMU_UNIX,
-            QEMU_CAPS_CHARDEV,
-            QEMU_CAPS_ENABLE_KVM,
-            QEMU_CAPS_MONITOR_JSON,
-            QEMU_CAPS_BALLOON,
-            QEMU_CAPS_DEVICE,
-            QEMU_CAPS_SMP_TOPOLOGY,
-            QEMU_CAPS_NETDEV,
-            QEMU_CAPS_RTC,
-            QEMU_CAPS_VHOST_NET,
-            QEMU_CAPS_NO_HPET,
-            QEMU_CAPS_NODEFCONFIG,
-            QEMU_CAPS_BOOT_MENU,
-            QEMU_CAPS_FSDEV,
-            QEMU_CAPS_NAME_PROCESS,
-            QEMU_CAPS_SMBIOS_TYPE,
-            QEMU_CAPS_VGA_QXL,
-            QEMU_CAPS_SPICE,
-            QEMU_CAPS_VGA_NONE,
-            QEMU_CAPS_MIGRATE_QEMU_FD,
-            QEMU_CAPS_BOOTINDEX,
-            QEMU_CAPS_HDA_DUPLEX,
-            QEMU_CAPS_DRIVE_AIO,
-            QEMU_CAPS_CCID_EMULATED,
-            QEMU_CAPS_CCID_PASSTHRU,
-            QEMU_CAPS_CHARDEV_SPICEVMC,
-            QEMU_CAPS_VIRTIO_TX_ALG,
-            QEMU_CAPS_DEVICE_QXL_VGA,
-            QEMU_CAPS_PCI_MULTIFUNCTION,
-            QEMU_CAPS_VIRTIO_IOEVENTFD,
-            QEMU_CAPS_SGA,
-            QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
-            QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
-            QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC,
-            QEMU_CAPS_PIIX3_USB_UHCI,
-            QEMU_CAPS_PIIX4_USB_UHCI,
-            QEMU_CAPS_USB_EHCI,
-            QEMU_CAPS_ICH9_USB_EHCI1,
-            QEMU_CAPS_VT82C686B_USB_UHCI,
-            QEMU_CAPS_PCI_OHCI,
-            QEMU_CAPS_USB_REDIR,
-            QEMU_CAPS_USB_HUB,
-            QEMU_CAPS_NO_SHUTDOWN,
-            QEMU_CAPS_PCI_ROMBAR,
-            QEMU_CAPS_ICH9_AHCI,
-            QEMU_CAPS_NO_ACPI,
-            QEMU_CAPS_FSDEV_READONLY,
-            QEMU_CAPS_VIRTIO_BLK_SCSI,
-            QEMU_CAPS_VIRTIO_BLK_SG_IO,
-            QEMU_CAPS_DRIVE_COPY_ON_READ,
-            QEMU_CAPS_CPU_HOST,
-            QEMU_CAPS_FSDEV_WRITEOUT,
-            QEMU_CAPS_DRIVE_IOTUNE,
-            QEMU_CAPS_SCSI_DISK_CHANNEL,
-            QEMU_CAPS_SCSI_BLOCK,
-            QEMU_CAPS_SCSI_CD,
-            QEMU_CAPS_IDE_CD,
-            QEMU_CAPS_NO_USER_CONFIG,
-            QEMU_CAPS_HDA_MICRO,
-            QEMU_CAPS_NEC_USB_XHCI,
-            QEMU_CAPS_NETDEV_BRIDGE,
-            QEMU_CAPS_SCSI_LSI,
-            QEMU_CAPS_VIRTIO_SCSI,
-            QEMU_CAPS_BLOCKIO,
-            QEMU_CAPS_DISABLE_S3,
-            QEMU_CAPS_DISABLE_S4,
-            QEMU_CAPS_USB_REDIR_FILTER,
-            QEMU_CAPS_IDE_DRIVE_WWN,
-            QEMU_CAPS_SCSI_DISK_WWN,
-            QEMU_CAPS_SECCOMP_SANDBOX,
-            QEMU_CAPS_DUMP_GUEST_CORE,
-            QEMU_CAPS_VNC,
-            QEMU_CAPS_MACHINE_OPT,
-            QEMU_CAPS_USB_REDIR_BOOTINDEX,
-            QEMU_CAPS_USB_HOST_BOOTINDEX,
-            QEMU_CAPS_DEVICE_QXL,
-            QEMU_CAPS_DEVICE_VGA,
-            QEMU_CAPS_DEVICE_CIRRUS_VGA,
-            QEMU_CAPS_DEVICE_VMWARE_SVGA,
-            QEMU_CAPS_DEVICE_USB_SERIAL,
-            QEMU_CAPS_DEVICE_USB_NET,
-            QEMU_CAPS_DTB,
-            QEMU_CAPS_SCSI_MEGASAS,
-            QEMU_CAPS_IPV6_MIGRATION,
-            QEMU_CAPS_DEVICE_PCI_BRIDGE,
-            QEMU_CAPS_DEVICE_SCSI_GENERIC,
-            QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
-            QEMU_CAPS_VNC_SHARE_POLICY,
-            QEMU_CAPS_DEVICE_USB_STORAGE,
-            QEMU_CAPS_DEVICE_USB_KBD,
-            QEMU_CAPS_USB_STORAGE_REMOVABLE,
-            QEMU_CAPS_OBJECT_USB_AUDIO,
-            QEMU_CAPS_SPLASH_TIMEOUT,
-            QEMU_CAPS_DEVICE_IVSHMEM);
-    DO_TEST("qemu-kvm-1.2.0", 1002000, 1, 0,
-            QEMU_CAPS_VNC_COLON,
-            QEMU_CAPS_NO_REBOOT,
-            QEMU_CAPS_DRIVE,
-            QEMU_CAPS_NAME,
-            QEMU_CAPS_UUID,
-            QEMU_CAPS_VNET_HDR,
-            QEMU_CAPS_MIGRATE_QEMU_TCP,
-            QEMU_CAPS_MIGRATE_QEMU_EXEC,
-            QEMU_CAPS_DRIVE_CACHE_V2,
-            QEMU_CAPS_KVM,
-            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
-            QEMU_CAPS_DRIVE_FORMAT,
-            QEMU_CAPS_DRIVE_SERIAL,
-            QEMU_CAPS_XEN_DOMID,
-            QEMU_CAPS_DRIVE_READONLY,
-            QEMU_CAPS_VGA,
-            QEMU_CAPS_0_10,
-            QEMU_CAPS_MEM_PATH,
-            QEMU_CAPS_SDL,
-            QEMU_CAPS_MIGRATE_QEMU_UNIX,
-            QEMU_CAPS_CHARDEV,
-            QEMU_CAPS_ENABLE_KVM,
-            QEMU_CAPS_MONITOR_JSON,
-            QEMU_CAPS_BALLOON,
-            QEMU_CAPS_DEVICE,
-            QEMU_CAPS_SMP_TOPOLOGY,
-            QEMU_CAPS_NETDEV,
-            QEMU_CAPS_RTC,
-            QEMU_CAPS_VHOST_NET,
-            QEMU_CAPS_NO_HPET,
-            QEMU_CAPS_NO_KVM_PIT,
-            QEMU_CAPS_PCI_CONFIGFD,
-            QEMU_CAPS_NODEFCONFIG,
-            QEMU_CAPS_BOOT_MENU,
-            QEMU_CAPS_FSDEV,
-            QEMU_CAPS_NAME_PROCESS,
-            QEMU_CAPS_SMBIOS_TYPE,
-            QEMU_CAPS_VGA_QXL,
-            QEMU_CAPS_SPICE,
-            QEMU_CAPS_VGA_NONE,
-            QEMU_CAPS_MIGRATE_QEMU_FD,
-            QEMU_CAPS_BOOTINDEX,
-            QEMU_CAPS_HDA_DUPLEX,
-            QEMU_CAPS_DRIVE_AIO,
-            QEMU_CAPS_PCI_BOOTINDEX,
-            QEMU_CAPS_CCID_EMULATED,
-            QEMU_CAPS_CCID_PASSTHRU,
-            QEMU_CAPS_CHARDEV_SPICEVMC,
-            QEMU_CAPS_VIRTIO_TX_ALG,
-            QEMU_CAPS_DEVICE_QXL_VGA,
-            QEMU_CAPS_PCI_MULTIFUNCTION,
-            QEMU_CAPS_VIRTIO_IOEVENTFD,
-            QEMU_CAPS_SGA,
-            QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
-            QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
-            QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC,
-            QEMU_CAPS_PIIX3_USB_UHCI,
-            QEMU_CAPS_PIIX4_USB_UHCI,
-            QEMU_CAPS_USB_EHCI,
-            QEMU_CAPS_ICH9_USB_EHCI1,
-            QEMU_CAPS_VT82C686B_USB_UHCI,
-            QEMU_CAPS_PCI_OHCI,
-            QEMU_CAPS_USB_REDIR,
-            QEMU_CAPS_USB_HUB,
-            QEMU_CAPS_NO_SHUTDOWN,
-            QEMU_CAPS_PCI_ROMBAR,
-            QEMU_CAPS_ICH9_AHCI,
-            QEMU_CAPS_NO_ACPI,
-            QEMU_CAPS_FSDEV_READONLY,
-            QEMU_CAPS_VIRTIO_BLK_SCSI,
-            QEMU_CAPS_VIRTIO_BLK_SG_IO,
-            QEMU_CAPS_DRIVE_COPY_ON_READ,
-            QEMU_CAPS_CPU_HOST,
-            QEMU_CAPS_FSDEV_WRITEOUT,
-            QEMU_CAPS_DRIVE_IOTUNE,
-            QEMU_CAPS_SCSI_DISK_CHANNEL,
-            QEMU_CAPS_SCSI_BLOCK,
-            QEMU_CAPS_SCSI_CD,
-            QEMU_CAPS_IDE_CD,
-            QEMU_CAPS_NO_USER_CONFIG,
-            QEMU_CAPS_HDA_MICRO,
-            QEMU_CAPS_NEC_USB_XHCI,
-            QEMU_CAPS_NETDEV_BRIDGE,
-            QEMU_CAPS_SCSI_LSI,
-            QEMU_CAPS_VIRTIO_SCSI,
-            QEMU_CAPS_BLOCKIO,
-            QEMU_CAPS_DISABLE_S3,
-            QEMU_CAPS_DISABLE_S4,
-            QEMU_CAPS_USB_REDIR_FILTER,
-            QEMU_CAPS_IDE_DRIVE_WWN,
-            QEMU_CAPS_SCSI_DISK_WWN,
-            QEMU_CAPS_SECCOMP_SANDBOX,
-            QEMU_CAPS_DUMP_GUEST_CORE,
-            QEMU_CAPS_VNC,
-            QEMU_CAPS_MACHINE_OPT,
-            QEMU_CAPS_USB_REDIR_BOOTINDEX,
-            QEMU_CAPS_USB_HOST_BOOTINDEX,
-            QEMU_CAPS_DEVICE_QXL,
-            QEMU_CAPS_DEVICE_VGA,
-            QEMU_CAPS_DEVICE_CIRRUS_VGA,
-            QEMU_CAPS_DEVICE_VMWARE_SVGA,
-            QEMU_CAPS_DEVICE_USB_SERIAL,
-            QEMU_CAPS_DEVICE_USB_NET,
-            QEMU_CAPS_DTB,
-            QEMU_CAPS_SCSI_MEGASAS,
-            QEMU_CAPS_IPV6_MIGRATION,
-            QEMU_CAPS_DEVICE_PCI_BRIDGE,
-            QEMU_CAPS_DEVICE_SCSI_GENERIC,
-            QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
-            QEMU_CAPS_VNC_SHARE_POLICY,
-            QEMU_CAPS_DEVICE_USB_STORAGE,
-            QEMU_CAPS_DEVICE_USB_KBD,
-            QEMU_CAPS_USB_STORAGE_REMOVABLE,
-            QEMU_CAPS_OBJECT_USB_AUDIO,
-            QEMU_CAPS_SPLASH_TIMEOUT,
-            QEMU_CAPS_DEVICE_IVSHMEM);
+    DO_TEST_FULL("qemu-1.2.0", 1002000, 0, 0, VIR_ERR_CONFIG_UNSUPPORTED,
+            QEMU_CAPS_LAST);
+    DO_TEST_FULL("qemu-kvm-1.2.0", 1002000, 1, 0, VIR_ERR_CONFIG_UNSUPPORTED,
+            QEMU_CAPS_LAST);
 
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
 }