tests: Prepare to have different usable GIC versions

Now that we choose the GIC version based on hardware features when
no <gic/> 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.
This commit is contained in:
Andrea Bolognani 2016-05-10 11:35:43 +02:00
parent 8b74919d69
commit 63bc91eea0
4 changed files with 148 additions and 77 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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