From 63bc91eea06a7748f4c3ac0689afb6093aba510a Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Tue, 10 May 2016 11:35:43 +0200 Subject: [PATCH] tests: Prepare to have different usable GIC versions Now that we choose the GIC version based on hardware features when no element has been provided, we need a way to fake the GIC capabilities of the host. Update the qemuxml2argv and qemuxml2xml tests to allow this. --- tests/qemuxml2argvtest.c | 49 ++++++++++----- tests/qemuxml2xmltest.c | 130 ++++++++++++++++++++------------------- tests/testutilsqemu.c | 36 +++++++++++ tests/testutilsqemu.h | 10 +++ 4 files changed, 148 insertions(+), 77 deletions(-) diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index db42f0b0d2..0641211190 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -451,6 +451,28 @@ testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy) } +static int +testPrepareExtraFlags(struct testInfo *info, + bool skipLegacyCPUs, + int gic) +{ + int ret = -1; + + if (!(info->extraFlags = virQEMUCapsNew())) + goto out; + + if (testAddCPUModels(info->extraFlags, skipLegacyCPUs) < 0) + goto out; + + if (testQemuCapsSetGIC(info->extraFlags, gic) < 0) + goto out; + + ret = 0; + + out: + return ret; +} + static int mymain(void) { @@ -501,14 +523,12 @@ mymain(void) return EXIT_FAILURE; # define DO_TEST_FULL(name, migrateFrom, migrateFd, flags, \ - parseFlags, ...) \ + parseFlags, gic, ...) \ do { \ static struct testInfo info = { \ name, NULL, migrateFrom, migrateFd, (flags), parseFlags \ }; \ - if (!(info.extraFlags = virQEMUCapsNew())) \ - return EXIT_FAILURE; \ - if (testAddCPUModels(info.extraFlags, skipLegacyCPUs) < 0) \ + if (testPrepareExtraFlags(&info, skipLegacyCPUs, gic) < 0) \ return EXIT_FAILURE; \ virQEMUCapsSetList(info.extraFlags, __VA_ARGS__, QEMU_CAPS_LAST);\ if (virtTestRun("QEMU XML-2-ARGV " name, \ @@ -518,23 +538,24 @@ mymain(void) } while (0) # define DO_TEST(name, ...) \ - DO_TEST_FULL(name, NULL, -1, 0, 0, __VA_ARGS__) + DO_TEST_FULL(name, NULL, -1, 0, 0, GIC_NONE, __VA_ARGS__) # define DO_TEST_FAILURE(name, ...) \ - DO_TEST_FULL(name, NULL, -1, FLAG_EXPECT_FAILURE, 0, __VA_ARGS__) + DO_TEST_FULL(name, NULL, -1, FLAG_EXPECT_FAILURE, \ + 0, GIC_NONE, __VA_ARGS__) # define DO_TEST_PARSE_ERROR(name, ...) \ DO_TEST_FULL(name, NULL, -1, \ FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \ - 0, __VA_ARGS__) + 0, GIC_NONE, __VA_ARGS__) # define DO_TEST_PARSE_FLAGS_ERROR(name, parseFlags, ...) \ DO_TEST_FULL(name, NULL, -1, \ FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \ - parseFlags, __VA_ARGS__) + parseFlags, GIC_NONE, __VA_ARGS__) # define DO_TEST_LINUX(name, ...) \ - DO_TEST_LINUX_FULL(name, NULL, -1, 0, 0, __VA_ARGS__) + DO_TEST_LINUX_FULL(name, NULL, -1, 0, 0, GIC_NONE, __VA_ARGS__) # ifdef __linux__ /* This is a macro that invokes test only on Linux. It's @@ -1234,12 +1255,12 @@ mymain(void) DO_TEST("pci-rom", QEMU_CAPS_PCIDEVICE, QEMU_CAPS_NODEFCONFIG); - DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, 0, NONE); - DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, 0, NONE); - DO_TEST_FULL("restore-v2-fd", "fd:7", 7, 0, 0, NONE); - DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0, 0, NONE); + DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, 0, GIC_NONE, NONE); + DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, 0, GIC_NONE, NONE); + DO_TEST_FULL("restore-v2-fd", "fd:7", 7, 0, 0, GIC_NONE, NONE); + DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0, 0, GIC_NONE, NONE); - DO_TEST_LINUX_FULL("migrate-numa-unaligned", "stdio", 7, 0, 0, + DO_TEST_LINUX_FULL("migrate-numa-unaligned", "stdio", 7, 0, 0, GIC_NONE, QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_RAM); diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 5a43fa9f91..9d2109badd 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -201,7 +201,8 @@ testInfoFree(struct testInfo *info) static int testInfoSet(struct testInfo *info, const char *name, - int when) + int when, + int gic) { if (!(info->qemuCaps = virQEMUCapsNew())) goto error; @@ -210,6 +211,9 @@ testInfoSet(struct testInfo *info, QEMU_CAPS_DEVICE, QEMU_CAPS_LAST); + if (testQemuCapsSetGIC(info->qemuCaps, gic) < 0) + goto error; + if (qemuTestCapsCacheInsert(driver.qemuCapsCache, name, info->qemuCaps) < 0) goto error; @@ -271,9 +275,9 @@ mymain(void) /* TODO: test with format probing disabled too */ driver.config->allowDiskFormatProbing = true; -# define DO_TEST_FULL(name, when, ...) \ +# define DO_TEST_FULL(name, when, gic, ...) \ do { \ - if (testInfoSet(&info, name, when) < 0) { \ + if (testInfoSet(&info, name, when, gic) < 0) { \ VIR_TEST_DEBUG("Failed to generate test data for '%s'", name); \ return -1; \ } \ @@ -300,7 +304,7 @@ mymain(void) # define NONE QEMU_CAPS_LAST # define DO_TEST(name) \ - DO_TEST_FULL(name, WHEN_BOTH, NONE) + DO_TEST_FULL(name, WHEN_BOTH, GIC_NONE, NONE) @@ -398,36 +402,36 @@ mymain(void) DO_TEST("disk-drive-network-rbd-ipv6"); DO_TEST("disk-drive-network-rbd-ceph-env"); DO_TEST("disk-drive-network-sheepdog"); - DO_TEST_FULL("disk-scsi-device", WHEN_ACTIVE, + DO_TEST_FULL("disk-scsi-device", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_SCSI_LSI); DO_TEST("disk-scsi-vscsi"); - DO_TEST_FULL("disk-scsi-virtio-scsi", WHEN_ACTIVE, + DO_TEST_FULL("disk-scsi-virtio-scsi", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI); - DO_TEST_FULL("disk-virtio-scsi-num_queues", WHEN_ACTIVE, + DO_TEST_FULL("disk-virtio-scsi-num_queues", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI); - DO_TEST_FULL("disk-virtio-scsi-cmd_per_lun", WHEN_ACTIVE, + DO_TEST_FULL("disk-virtio-scsi-cmd_per_lun", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI); - DO_TEST_FULL("disk-virtio-scsi-max_sectors", WHEN_ACTIVE, + DO_TEST_FULL("disk-virtio-scsi-max_sectors", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI); - DO_TEST_FULL("disk-virtio-scsi-ioeventfd", WHEN_ACTIVE, + DO_TEST_FULL("disk-virtio-scsi-ioeventfd", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI); - DO_TEST_FULL("disk-scsi-megasas", WHEN_ACTIVE, + DO_TEST_FULL("disk-scsi-megasas", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_SCSI_MEGASAS); - DO_TEST_FULL("disk-scsi-mptsas1068", WHEN_ACTIVE, + DO_TEST_FULL("disk-scsi-mptsas1068", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_SCSI_MPTSAS1068, QEMU_CAPS_SCSI_DISK_WWN); DO_TEST("disk-mirror-old"); - DO_TEST_FULL("disk-mirror", WHEN_ACTIVE, NONE); - DO_TEST_FULL("disk-mirror", WHEN_INACTIVE, NONE); - DO_TEST_FULL("disk-active-commit", WHEN_ACTIVE, NONE); + DO_TEST_FULL("disk-mirror", WHEN_ACTIVE, GIC_NONE, NONE); + DO_TEST_FULL("disk-mirror", WHEN_INACTIVE, GIC_NONE, NONE); + DO_TEST_FULL("disk-active-commit", WHEN_ACTIVE, GIC_NONE, NONE); DO_TEST("graphics-listen-network"); DO_TEST("graphics-vnc"); DO_TEST("graphics-vnc-websocket"); @@ -501,7 +505,7 @@ mymain(void) DO_TEST("cputune-iothreadsched"); DO_TEST("cputune-iothreadsched-zeropriority"); DO_TEST("cputune-numatune"); - DO_TEST_FULL("vcpu-placement-static", WHEN_ACTIVE, + DO_TEST_FULL("vcpu-placement-static", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE); DO_TEST("smp"); @@ -510,12 +514,12 @@ mymain(void) DO_TEST("iothreads-ids-partial"); DO_TEST("cputune-iothreads"); DO_TEST("iothreads-disk"); - DO_TEST_FULL("iothreads-disk-virtio-ccw", WHEN_ACTIVE, + DO_TEST_FULL("iothreads-disk-virtio-ccw", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390); - DO_TEST_FULL("iothreads-virtio-scsi-pci", WHEN_ACTIVE, + DO_TEST_FULL("iothreads-virtio-scsi-pci", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI); - DO_TEST_FULL("iothreads-virtio-scsi-ccw", WHEN_ACTIVE, + DO_TEST_FULL("iothreads-virtio-scsi-ccw", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390); @@ -532,24 +536,24 @@ mymain(void) DO_TEST("blkdeviotune"); DO_TEST("controller-usb-order"); - DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, NONE); - DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE, NONE); - DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE, NONE); - DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE, NONE); + DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, GIC_NONE, NONE); + DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE, GIC_NONE, NONE); + DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE, GIC_NONE, NONE); + DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE, GIC_NONE, NONE); DO_TEST("seclabel-static"); - DO_TEST_FULL("seclabel-static-labelskip", WHEN_ACTIVE, NONE); + DO_TEST_FULL("seclabel-static-labelskip", WHEN_ACTIVE, GIC_NONE, NONE); DO_TEST("seclabel-none"); DO_TEST("seclabel-dac-none"); DO_TEST("seclabel-dynamic-none"); DO_TEST("seclabel-device-multiple"); - DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE, NONE); + DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE, GIC_NONE, NONE); DO_TEST("numad-static-vcpu-no-numatune"); - DO_TEST_FULL("disk-scsi-lun-passthrough-sgio", WHEN_ACTIVE, + DO_TEST_FULL("disk-scsi-lun-passthrough-sgio", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_SCSI_CD, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN); - DO_TEST_FULL("disk-scsi-disk-vpd", WHEN_ACTIVE, + DO_TEST_FULL("disk-scsi-disk-vpd", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_SCSI_CD, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN); @@ -569,7 +573,7 @@ mymain(void) DO_TEST("balloon-device-period"); DO_TEST("channel-virtio-auto"); DO_TEST("console-compat-auto"); - DO_TEST_FULL("disk-scsi-device-auto", WHEN_ACTIVE, + DO_TEST_FULL("disk-scsi-device-auto", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_SCSI_LSI); DO_TEST("console-virtio"); @@ -586,37 +590,37 @@ mymain(void) DO_TEST("metadata"); DO_TEST("metadata-duplicate"); - DO_TEST_FULL("pci-bridge", WHEN_ACTIVE, + DO_TEST_FULL("pci-bridge", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE); - DO_TEST_FULL("pci-bridge-many-disks", WHEN_ACTIVE, + DO_TEST_FULL("pci-bridge-many-disks", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE); - DO_TEST_FULL("pci-autoadd-addr", WHEN_ACTIVE, + DO_TEST_FULL("pci-autoadd-addr", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE); - DO_TEST_FULL("pci-autoadd-idx", WHEN_ACTIVE, + DO_TEST_FULL("pci-autoadd-idx", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE); - DO_TEST_FULL("q35", WHEN_ACTIVE, + DO_TEST_FULL("q35", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("q35-usb2", WHEN_ACTIVE, + DO_TEST_FULL("q35-usb2", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("q35-usb2-multi", WHEN_ACTIVE, + DO_TEST_FULL("q35-usb2-multi", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("q35-usb2-reorder", WHEN_ACTIVE, + DO_TEST_FULL("q35-usb2-reorder", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_ICH9_AHCI, @@ -624,38 +628,38 @@ mymain(void) QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("pcie-root", WHEN_ACTIVE, + DO_TEST_FULL("pcie-root", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("pcie-root-port", WHEN_ACTIVE, + DO_TEST_FULL("pcie-root-port", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("pcie-switch-upstream-port", WHEN_ACTIVE, + DO_TEST_FULL("pcie-switch-upstream-port", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("pcie-switch-downstream-port", WHEN_ACTIVE, + DO_TEST_FULL("pcie-switch-downstream-port", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL); - DO_TEST_FULL("pci-expander-bus", WHEN_ACTIVE, + DO_TEST_FULL("pci-expander-bus", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_PXB); - DO_TEST_FULL("pcie-expander-bus", WHEN_ACTIVE, + DO_TEST_FULL("pcie-expander-bus", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420, @@ -664,59 +668,59 @@ mymain(void) QEMU_CAPS_DEVICE_PXB_PCIE); - DO_TEST_FULL("hostdev-scsi-lsi", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-lsi", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-virtio-scsi", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-virtio-scsi", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-readonly", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-readonly", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-shareable", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-shareable", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-sgio", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-sgio", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-rawio", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-rawio", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-autogen-address", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-autogen-address", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-large-unit", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-large-unit", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-lsi-iscsi", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-lsi-iscsi", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-lsi-iscsi-auth", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-lsi-iscsi-auth", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-virtio-iscsi", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-virtio-iscsi", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("hostdev-scsi-virtio-iscsi-auth", WHEN_ACTIVE, + DO_TEST_FULL("hostdev-scsi-virtio-iscsi-auth", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_DEVICE_SCSI_GENERIC); - DO_TEST_FULL("s390-defaultconsole", WHEN_ACTIVE, + DO_TEST_FULL("s390-defaultconsole", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390); - DO_TEST_FULL("s390-panic", WHEN_BOTH, + DO_TEST_FULL("s390-panic", WHEN_BOTH, GIC_NONE, QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390); - DO_TEST_FULL("s390-panic-missing", WHEN_BOTH, + DO_TEST_FULL("s390-panic-missing", WHEN_BOTH, GIC_NONE, QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390); - DO_TEST_FULL("s390-panic-no-address", WHEN_BOTH, + DO_TEST_FULL("s390-panic-no-address", WHEN_BOTH, GIC_NONE, QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390); DO_TEST("pcihole64"); DO_TEST("pcihole64-gib"); DO_TEST("pcihole64-none"); - DO_TEST_FULL("pcihole64-q35", WHEN_ACTIVE, + DO_TEST_FULL("pcihole64-q35", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_ICH9_AHCI, @@ -754,17 +758,17 @@ mymain(void) DO_TEST("smbios"); DO_TEST("smbios-multiple-type2"); - DO_TEST_FULL("aarch64-aavmf-virtio-mmio", WHEN_ACTIVE, + DO_TEST_FULL("aarch64-aavmf-virtio-mmio", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DTB, QEMU_CAPS_DEVICE_VIRTIO_MMIO, QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM); - DO_TEST_FULL("aarch64-virtio-pci-default", WHEN_ACTIVE, + DO_TEST_FULL("aarch64-virtio-pci-default", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DTB, QEMU_CAPS_DEVICE_VIRTIO_MMIO, QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM, QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_VIRTIO_SCSI); - DO_TEST_FULL("aarch64-virtio-pci-manual-addresses", WHEN_ACTIVE, + DO_TEST_FULL("aarch64-virtio-pci-manual-addresses", WHEN_ACTIVE, GIC_NONE, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DTB, QEMU_CAPS_DEVICE_VIRTIO_MMIO, QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM, @@ -790,7 +794,7 @@ mymain(void) cfg = virQEMUDriverGetConfig(&driver); cfg->vncAutoUnixSocket = true; - DO_TEST_FULL("graphics-vnc-autosocket", WHEN_INACTIVE, NONE); + DO_TEST_FULL("graphics-vnc-autosocket", WHEN_INACTIVE, GIC_NONE, NONE); cfg->vncAutoUnixSocket = false; virObjectUnref(cfg); diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 8f7f52b89c..1cf72a9533 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -556,4 +556,40 @@ int qemuTestDriverInit(virQEMUDriver *driver) return -1; } +int +testQemuCapsSetGIC(virQEMUCapsPtr qemuCaps, + int gic) +{ + virGICCapability *gicCapabilities = NULL; + size_t ngicCapabilities = 0; + int ret = -1; + + if (VIR_ALLOC_N(gicCapabilities, 2) < 0) + goto out; + +# define IMPL_BOTH \ + VIR_GIC_IMPLEMENTATION_KERNEL|VIR_GIC_IMPLEMENTATION_EMULATED + + if (gic & GIC_V2) { + gicCapabilities[ngicCapabilities].version = VIR_GIC_VERSION_2; + gicCapabilities[ngicCapabilities].implementation = IMPL_BOTH; + ngicCapabilities++; + } + if (gic & GIC_V3) { + gicCapabilities[ngicCapabilities].version = VIR_GIC_VERSION_3; + gicCapabilities[ngicCapabilities].implementation = IMPL_BOTH; + ngicCapabilities++; + } + +# undef IMPL_BOTH + + virQEMUCapsSetGICCapabilities(qemuCaps, + gicCapabilities, ngicCapabilities); + + ret = 0; + + out: + return ret; +} + #endif diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h index f5a8056bbb..f2b71e91d8 100644 --- a/tests/testutilsqemu.h +++ b/tests/testutilsqemu.h @@ -5,6 +5,13 @@ # include "qemu/qemu_capabilities.h" # include "qemu/qemu_conf.h" +enum { + GIC_NONE = 0, + GIC_V2, + GIC_V3, + GIC_BOTH, +}; + virCapsPtr testQemuCapsInit(void); virDomainXMLOptionPtr testQemuXMLConfInit(void); @@ -20,6 +27,9 @@ void qemuTestDriverFree(virQEMUDriver *driver); int qemuTestCapsCacheInsert(virQEMUCapsCachePtr cache, const char *binary, virQEMUCapsPtr caps); +int testQemuCapsSetGIC(virQEMUCapsPtr qemuCaps, + int gic); + /* This variable is actually defined in src/qemu/qemu_capabilities.c */ extern const char *qemuTestCapsName; #endif