qemuxml2xmltest.c 47.3 KB
Newer Older
1
#include <config.h>
2 3

#include <unistd.h>
4 5 6 7

#include <sys/types.h>
#include <fcntl.h>

8 9
#include "testutils.h"

10 11
#ifdef WITH_QEMU

12
# include "internal.h"
J
Ján Tomko 已提交
13
# include "qemu/qemu_domain_address.h"
M
Matthias Bolte 已提交
14
# include "qemu/qemu_domain.h"
15
# include "testutilsqemu.h"
16
# include "virstring.h"
17

18 19
# define VIR_FROM_THIS VIR_FROM_NONE

20
static virQEMUDriver driver;
21

22 23 24 25 26 27
enum {
    WHEN_INACTIVE = 1,
    WHEN_ACTIVE = 2,
    WHEN_BOTH = 3,
};

28

29 30 31
static int
testXML2XMLActive(const void *opaque)
{
32
    const struct testQemuInfo *info = opaque;
33

34
    return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
35
                                      info->infile, info->outfile, true, 0,
36
                                      TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
37 38
}

39

40
static int
41
testXML2XMLInactive(const void *opaque)
42
{
43
    const struct testQemuInfo *info = opaque;
44

45 46
    return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
                                      info->infile, info->outfile, false, 0,
47
                                      TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
48
}
49

50

51 52 53
static int
testCompareStatusXMLToXMLFiles(const void *opaque)
{
54
    const struct testQemuInfo *data = opaque;
55 56 57 58
    virDomainObjPtr obj = NULL;
    char *actual = NULL;
    int ret = -1;

59
    if (!(obj = virDomainObjParseFile(data->infile, driver.caps, driver.xmlopt,
60 61 62 63
                                      VIR_DOMAIN_DEF_PARSE_STATUS |
                                      VIR_DOMAIN_DEF_PARSE_ACTUAL_NET |
                                      VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES |
                                      VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE |
64
                                      VIR_DOMAIN_DEF_PARSE_ALLOW_POST_PARSE_FAIL))) {
65
        VIR_TEST_DEBUG("\nfailed to parse '%s'\n", data->infile);
66
        goto cleanup;
67
    }
68 69 70 71 72 73

    if (!(actual = virDomainObjFormat(driver.xmlopt, obj, NULL,
                                      VIR_DOMAIN_DEF_FORMAT_SECURE |
                                      VIR_DOMAIN_DEF_FORMAT_STATUS |
                                      VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET |
                                      VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES |
74
                                      VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST))) {
75
        VIR_TEST_DEBUG("\nfailed to format back '%s'\n", data->infile);
76
        goto cleanup;
77
    }
78

79
    if (virTestCompareToFile(actual, data->outfile) < 0)
80 81 82 83 84
        goto cleanup;

    ret = 0;

 cleanup:
85
    virDomainObjEndAPI(&obj);
86 87 88 89 90 91
    VIR_FREE(actual);
    return ret;
}


static int
92
testInfoSetPaths(struct testQemuInfo *info,
93 94
                 const char *name,
                 int when)
95
{
96 97 98
    VIR_FREE(info->infile);
    VIR_FREE(info->outfile);

99
    if (virAsprintf(&info->infile, "%s/qemuxml2argvdata/%s.xml",
100 101 102
                    abs_srcdir, name) < 0)
        goto error;

103 104 105 106 107
    if (virAsprintf(&info->outfile,
                    "%s/qemuxml2xmloutdata/%s-%s.xml",
                    abs_srcdir, name,
                    when == WHEN_ACTIVE ? "active" : "inactive") < 0)
        goto error;
108

109 110
    if (!virFileExists(info->outfile)) {
        VIR_FREE(info->outfile);
111

112
        if (virAsprintf(&info->outfile,
113
                        "%s/qemuxml2xmloutdata/%s.xml",
114 115
                        abs_srcdir, name) < 0)
            goto error;
116
    }
117

118
    return 0;
119

120
 error:
121
    testQemuInfoClear(info);
122
    return -1;
123 124
}

125 126 127 128

static const char *statusPath = abs_srcdir "/qemustatusxml2xmldata/";

static int
129
testInfoSetStatusPaths(struct testQemuInfo *info,
130
                       const char *name)
131
{
132 133
    if (virAsprintf(&info->infile, "%s%s-in.xml", statusPath, name) < 0 ||
        virAsprintf(&info->outfile, "%s%s-out.xml", statusPath, name) < 0)
134 135 136 137 138
        goto error;

    return 0;

 error:
139
    testQemuInfoClear(info);
140 141 142 143
    return -1;
}


A
Andrea Bolognani 已提交
144
# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
145

146
static int
E
Eric Blake 已提交
147
mymain(void)
148 149
{
    int ret = 0;
A
Andrea Bolognani 已提交
150
    char *fakerootdir;
151
    struct testQemuInfo info;
152
    virQEMUDriverConfigPtr cfg = NULL;
153 154 155 156 157
    virHashTablePtr capslatest = NULL;

    capslatest = testQemuGetLatestCaps();
    if (!capslatest)
        return EXIT_FAILURE;
158

A
Andrea Bolognani 已提交
159 160 161 162 163 164 165 166 167 168 169 170
    if (VIR_STRDUP_QUIET(fakerootdir, FAKEROOTDIRTEMPLATE) < 0) {
        fprintf(stderr, "Out of memory\n");
        abort();
    }

    if (!mkdtemp(fakerootdir)) {
        fprintf(stderr, "Cannot create fakerootdir");
        abort();
    }

    setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);

171 172
    memset(&info, 0, sizeof(info));

173
    if (qemuTestDriverInit(&driver) < 0)
174
        return EXIT_FAILURE;
175

176 177
    cfg = virQEMUDriverGetConfig(&driver);

178
# define DO_TEST_FULL(name, when, ...) \
179
    do { \
180
        if (testQemuInfoSetArgs(&info, capslatest, \
181
                                __VA_ARGS__, \
182 183
                                ARG_END) < 0 || \
            qemuTestCapsCacheInsert(driver.qemuCapsCache, info.qemuCaps) < 0) { \
184 185 186 187
            VIR_TEST_DEBUG("Failed to generate test data for '%s'", name); \
            return -1; \
        } \
 \
188 189 190 191 192
        if (when & WHEN_INACTIVE) { \
            if (testInfoSetPaths(&info, name, WHEN_INACTIVE) < 0) { \
                VIR_TEST_DEBUG("Failed to generate inactive paths for '%s'", name); \
                return -1; \
            } \
193 194 195 196 197
            if (virTestRun("QEMU XML-2-XML-inactive " name, \
                            testXML2XMLInactive, &info) < 0) \
                ret = -1; \
        } \
 \
198 199 200 201 202
        if (when & WHEN_ACTIVE) { \
            if (testInfoSetPaths(&info, name, WHEN_ACTIVE) < 0) { \
                VIR_TEST_DEBUG("Failed to generate active paths for '%s'", name); \
                return -1; \
            } \
203 204 205 206
            if (virTestRun("QEMU XML-2-XML-active " name, \
                            testXML2XMLActive, &info) < 0) \
                ret = -1; \
        } \
207
        testQemuInfoClear(&info); \
208 209
    } while (0)

210 211
# define NONE QEMU_CAPS_LAST

212
# define DO_TEST(name, ...) \
213 214
    DO_TEST_FULL(name, WHEN_BOTH, \
                 ARG_QEMU_CAPS, __VA_ARGS__, QEMU_CAPS_LAST)
215 216


217 218 219 220 221

    /* Unset or set all envvars here that are copied in qemudBuildCommandLine
     * using ADD_ENV_COPY, otherwise these tests may fail due to unexpected
     * values for these envvars */
    setenv("PATH", "/bin", 1);
222

223
    DO_TEST("minimal", NONE);
224 225
    DO_TEST("genid", NONE);
    DO_TEST("genid-auto", NONE);
226 227
    DO_TEST("machine-core-on", NONE);
    DO_TEST("machine-core-off", NONE);
228
    DO_TEST("machine-loadparm-multiple-disks-nets-s390", NONE);
229 230 231 232 233
    DO_TEST("default-kvm-host-arch", NONE);
    DO_TEST("default-qemu-host-arch", NONE);
    DO_TEST("boot-cdrom", NONE);
    DO_TEST("boot-network", NONE);
    DO_TEST("boot-floppy", NONE);
234 235 236
    DO_TEST("boot-floppy-q35",
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI);
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
    DO_TEST("boot-multi", NONE);
    DO_TEST("boot-menu-enable-with-timeout", NONE);
    DO_TEST("boot-menu-disable", NONE);
    DO_TEST("boot-menu-disable-with-timeout", NONE);
    DO_TEST("boot-order", NONE);

    DO_TEST("reboot-timeout-enabled", NONE);
    DO_TEST("reboot-timeout-disabled", NONE);

    DO_TEST("clock-utc", NONE);
    DO_TEST("clock-localtime", NONE);
    DO_TEST("cpu-empty", NONE);
    DO_TEST("cpu-kvmclock", NONE);
    DO_TEST("cpu-host-kvmclock", NONE);
    DO_TEST("cpu-host-passthrough-features", NONE);
    DO_TEST("cpu-host-model-features", NONE);
    DO_TEST("clock-catchup", NONE);
    DO_TEST("kvmclock", NONE);
    DO_TEST("clock-timer-hyperv-rtc", NONE);

    DO_TEST("cpu-eoi-disabled", NONE);
    DO_TEST("cpu-eoi-enabled", NONE);
    DO_TEST("eoi-disabled", NONE);
    DO_TEST("eoi-enabled", NONE);
    DO_TEST("pv-spinlock-disabled", NONE);
    DO_TEST("pv-spinlock-enabled", NONE);

    DO_TEST("hyperv", NONE);
    DO_TEST("hyperv-off", NONE);
    DO_TEST("hyperv-panic", NONE);

    DO_TEST("kvm-features", NONE);
    DO_TEST("kvm-features-off", NONE);

    DO_TEST("pmu-feature", NONE);
    DO_TEST("pmu-feature-off", NONE);

274
    DO_TEST("pages-discard", NONE);
275
    DO_TEST("pages-discard-hugepages", NONE);
276
    DO_TEST("pages-dimm-discard", NONE);
277
    DO_TEST("hugepages-default", NONE);
278
    DO_TEST("hugepages-default-2M", NONE);
279
    DO_TEST("hugepages-default-system-size", NONE);
280
    DO_TEST("hugepages-nodeset", NONE);
281
    DO_TEST("hugepages-numa-default-2M", NONE);
282
    DO_TEST("hugepages-numa-default-dimm", NONE);
283
    DO_TEST("hugepages-numa-nodeset", NONE);
284
    DO_TEST("hugepages-numa-nodeset-part", NONE);
285
    DO_TEST("hugepages-shared", NONE);
286
    DO_TEST("hugepages-memaccess", NONE);
287
    DO_TEST("hugepages-memaccess2", NONE);
288
    DO_TEST("hugepages-nvdimm", NONE);
289 290 291 292 293 294
    DO_TEST("nosharepages", NONE);
    DO_TEST("restore-v2", NONE);
    DO_TEST("migrate", NONE);
    DO_TEST("qemu-ns-no-env", NONE);
    DO_TEST("disk-aio", NONE);
    DO_TEST("disk-cdrom", NONE);
295
    DO_TEST("disk-cdrom-bus-other", NONE);
296 297 298 299
    DO_TEST("disk-floppy", NONE);
    DO_TEST("disk-usb-device", NONE);
    DO_TEST("disk-virtio", NONE);
    DO_TEST("floppy-drive-fat", NONE);
300 301 302 303 304
    DO_TEST("disk-virtio-queues", QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES);
    DO_TEST("disk-boot-disk", NONE);
    DO_TEST("disk-boot-cdrom", NONE);
    DO_TEST("disk-error-policy", NONE);
    DO_TEST("disk-fmt-qcow", NONE);
305
    DO_TEST("disk-cache", QEMU_CAPS_SCSI_LSI);
306
    DO_TEST("disk-network-nbd", NONE);
307
    DO_TEST("disk-network-iscsi", QEMU_CAPS_VIRTIO_SCSI);
308 309 310 311 312 313
    DO_TEST("disk-network-gluster", NONE);
    DO_TEST("disk-network-rbd", NONE);
    DO_TEST("disk-network-source-auth", NONE);
    DO_TEST("disk-network-sheepdog", NONE);
    DO_TEST("disk-network-vxhs", NONE);
    DO_TEST("disk-network-tlsx509", NONE);
314 315
    DO_TEST("disk-scsi", QEMU_CAPS_SCSI_LSI, QEMU_CAPS_SCSI_MEGASAS,
            QEMU_CAPS_SCSI_MPTSAS1068, QEMU_CAPS_SCSI_DISK_WWN);
316
    DO_TEST("disk-virtio-scsi-reservations",
317
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_PR_MANAGER_HELPER);
318
    DO_TEST("controller-virtio-scsi", QEMU_CAPS_VIRTIO_SCSI);
319 320 321
    DO_TEST("disk-virtio-s390-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
322
    DO_TEST("disk-mirror-old", NONE);
323
    DO_TEST("disk-mirror", NONE);
324
    DO_TEST("disk-active-commit", NONE);
325 326 327 328 329 330 331
    DO_TEST("graphics-listen-network", NONE);
    DO_TEST("graphics-vnc", NONE);
    DO_TEST("graphics-vnc-websocket", NONE);
    DO_TEST("graphics-vnc-sasl", NONE);
    DO_TEST("graphics-vnc-tls", NONE);
    DO_TEST("graphics-vnc-no-listen-attr", NONE);
    DO_TEST("graphics-vnc-remove-generated-socket", NONE);
332
    cfg->vncAutoUnixSocket = true;
333
    DO_TEST("graphics-vnc-auto-socket-cfg", NONE);
334
    cfg->vncAutoUnixSocket = false;
335 336
    DO_TEST("graphics-vnc-socket", NONE);
    DO_TEST("graphics-vnc-auto-socket", NONE);
337 338
    DO_TEST("graphics-vnc-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
339 340 341 342 343 344 345 346

    DO_TEST("graphics-sdl", NONE);
    DO_TEST("graphics-sdl-fullscreen", NONE);
    DO_TEST("graphics-spice", NONE);
    DO_TEST("graphics-spice-compression", NONE);
    DO_TEST("graphics-spice-qxl-vga", NONE);
    DO_TEST("graphics-spice-socket", NONE);
    DO_TEST("graphics-spice-auto-socket", NONE);
347
    cfg->spiceAutoUnixSocket = true;
348
    DO_TEST("graphics-spice-auto-socket-cfg", NONE);
349
    cfg->spiceAutoUnixSocket = false;
350 351
    DO_TEST("graphics-spice-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
352

353 354 355
    DO_TEST("graphics-egl-headless-rendernode",
            QEMU_CAPS_EGL_HEADLESS,
            QEMU_CAPS_EGL_HEADLESS_RENDERNODE);
356

357 358 359 360 361 362 363 364 365 366
    DO_TEST("input-usbmouse", NONE);
    DO_TEST("input-usbtablet", NONE);
    DO_TEST("misc-acpi", NONE);
    DO_TEST("misc-disable-s3", NONE);
    DO_TEST("misc-disable-suspends", NONE);
    DO_TEST("misc-enable-s4", NONE);
    DO_TEST("misc-no-reboot", NONE);
    DO_TEST("misc-uuid", NONE);
    DO_TEST("net-vhostuser", NONE);
    DO_TEST("net-user", NONE);
J
Ján Tomko 已提交
367
    DO_TEST("net-user-addr", NONE);
368 369 370 371 372 373 374
    DO_TEST("net-virtio", NONE);
    DO_TEST("net-virtio-device", NONE);
    DO_TEST("net-virtio-disable-offloads", NONE);
    DO_TEST("net-eth", NONE);
    DO_TEST("net-eth-ifname", NONE);
    DO_TEST("net-eth-hostip", NONE);
    DO_TEST("net-virtio-network-portgroup", NONE);
375
    DO_TEST("net-virtio-rxtxqueuesize", NONE);
376
    DO_TEST("net-hostdev", NONE);
377
    DO_TEST("net-hostdev-bootorder", NONE);
378 379 380 381 382 383 384 385
    DO_TEST("net-hostdev-vfio", NONE);
    DO_TEST("net-midonet", NONE);
    DO_TEST("net-openvswitch", NONE);
    DO_TEST("sound", NONE);
    DO_TEST("sound-device", NONE);
    DO_TEST("watchdog", NONE);
    DO_TEST("net-bandwidth", NONE);
    DO_TEST("net-bandwidth2", NONE);
386
    DO_TEST("net-mtu", NONE);
387
    DO_TEST("net-coalesce", NONE);
388

389
    DO_TEST("serial-tcp-tlsx509-chardev", NONE);
390
    DO_TEST("serial-tcp-tlsx509-chardev-notls", NONE);
391 392 393 394 395 396 397 398 399
    DO_TEST("serial-spiceport", NONE);
    DO_TEST("serial-spiceport-nospice", NONE);
    DO_TEST("console-compat", NONE);
    DO_TEST("console-compat2", NONE);
    DO_TEST("console-virtio-many", NONE);
    DO_TEST("channel-guestfwd", NONE);
    DO_TEST("channel-virtio", NONE);
    DO_TEST("channel-virtio-state", NONE);

400
    DO_TEST("channel-unix-source-path", NONE);
401

402 403 404
    DO_TEST("hostdev-usb-address", NONE);
    DO_TEST("hostdev-pci-address", NONE);
    DO_TEST("hostdev-vfio", NONE);
405 406 407
    DO_TEST("hostdev-vfio-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
408 409 410 411 412 413 414 415 416 417 418
    DO_TEST("hostdev-vfio-zpci-multidomain-many",
            QEMU_CAPS_DEVICE_VFIO_PCI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_ZPCI);
    DO_TEST("hostdev-vfio-zpci-autogenerate",
            QEMU_CAPS_DEVICE_VFIO_PCI,
            QEMU_CAPS_DEVICE_ZPCI);
    DO_TEST("hostdev-vfio-zpci-boundaries",
            QEMU_CAPS_DEVICE_VFIO_PCI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_ZPCI);
419
    DO_TEST("hostdev-mdev-precreated", NONE);
420
    DO_TEST("hostdev-mdev-display", QEMU_CAPS_VFIO_PCI_DISPLAY);
421
    DO_TEST("pci-rom", NONE);
422
    DO_TEST("pci-rom-disabled", NONE);
423
    DO_TEST("pci-rom-disabled-invalid", NONE);
424 425
    DO_TEST("pci-serial-dev-chardev", NONE);

426 427
    DO_TEST("encrypted-disk", QEMU_CAPS_QCOW2_LUKS);
    DO_TEST("encrypted-disk-usage", QEMU_CAPS_QCOW2_LUKS);
428
    DO_TEST("luks-disks", NONE);
429
    DO_TEST("luks-disks-source", NONE);
430 431 432 433 434 435 436 437 438
    DO_TEST("memtune", NONE);
    DO_TEST("memtune-unlimited", NONE);
    DO_TEST("blkiotune", NONE);
    DO_TEST("blkiotune-device", NONE);
    DO_TEST("cputune", NONE);
    DO_TEST("cputune-zero-shares", NONE);
    DO_TEST("cputune-iothreadsched", NONE);
    DO_TEST("cputune-iothreadsched-zeropriority", NONE);
    DO_TEST("cputune-numatune", NONE);
439
    DO_TEST("vcpu-placement-static",
440 441
            QEMU_CAPS_KVM,
            QEMU_CAPS_OBJECT_IOTHREAD);
442

443 444 445 446 447 448
    DO_TEST("smp", NONE);
    DO_TEST("iothreads", NONE);
    DO_TEST("iothreads-ids", NONE);
    DO_TEST("iothreads-ids-partial", NONE);
    DO_TEST("cputune-iothreads", NONE);
    DO_TEST("iothreads-disk", NONE);
449
    DO_TEST("iothreads-disk-virtio-ccw",
450
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
451
    DO_TEST("iothreads-virtio-scsi-pci",
452
            QEMU_CAPS_VIRTIO_SCSI);
453
    DO_TEST("iothreads-virtio-scsi-ccw",
454
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_CCW,
455
            QEMU_CAPS_VIRTIO_S390);
456 457 458 459 460 461 462
    DO_TEST("lease", NONE);
    DO_TEST("event_idx", NONE);
    DO_TEST("vhost_queues", NONE);
    DO_TEST("interface-driver", NONE);
    DO_TEST("interface-server", NONE);
    DO_TEST("virtio-lun", NONE);

463 464 465 466 467
    DO_TEST("usb-none", NONE);
    DO_TEST("usb-controller", NONE);
    DO_TEST("usb-piix3-controller",
            QEMU_CAPS_PIIX3_USB_UHCI);
    DO_TEST("usb-controller-default-q35",
468
            QEMU_CAPS_DEVICE_IOH3420,
469 470
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
471 472
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("usb-controller-explicit-q35",
473
            QEMU_CAPS_DEVICE_IOH3420,
474 475
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
476 477
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("ppc64-usb-controller",
478
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
479 480
            QEMU_CAPS_PCI_OHCI);
    DO_TEST("ppc64-usb-controller-legacy",
481
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
482
            QEMU_CAPS_PIIX3_USB_UHCI);
483 484 485 486 487
    DO_TEST("usb-port-missing", NONE);
    DO_TEST("usb-redir", NONE);
    DO_TEST("usb-redir-filter", NONE);
    DO_TEST("usb-redir-filter-version", NONE);
    DO_TEST("blkdeviotune", NONE);
488
    DO_TEST("blkdeviotune-max", NONE);
489
    DO_TEST("blkdeviotune-group-num", NONE);
490
    DO_TEST("blkdeviotune-max-length", NONE);
491
    DO_TEST("controller-usb-order", NONE);
492

493 494 495 496 497 498 499 500
    DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
501
    DO_TEST("seclabel-static", NONE);
502
    DO_TEST("seclabel-static-labelskip", NONE);
503 504 505 506
    DO_TEST("seclabel-none", NONE);
    DO_TEST("seclabel-dac-none", NONE);
    DO_TEST("seclabel-dynamic-none", NONE);
    DO_TEST("seclabel-device-multiple", NONE);
507 508
    DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
509
    DO_TEST("numad-static-vcpu-no-numatune", NONE);
510

511
    DO_TEST("disk-scsi-lun-passthrough-sgio",
512
            QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
513
    DO_TEST("disk-scsi-disk-vpd",
514
            QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
515 516
    DO_TEST("disk-source-pool", NONE);
    DO_TEST("disk-source-pool-mode", NONE);
517

518 519
    DO_TEST("disk-discard", NONE);
    DO_TEST("disk-detect-zeroes", NONE);
O
Osier Yang 已提交
520

521 522
    DO_TEST("disk-serial", NONE);

523 524 525 526
    DO_TEST("virtio-rng-random",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
    DO_TEST("virtio-rng-egd",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
527

528 529 530 531 532 533
    DO_TEST("pseries-nvram",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-panic-missing",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-panic-no-address",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
534

535 536 537 538
    DO_TEST("pseries-phb-simple",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-phb-default-missing",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
539 540 541 542
    DO_TEST("pseries-phb-numa-node",
            QEMU_CAPS_NUMA,
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE);
543

544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565
    DO_TEST("pseries-many-devices",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI);
    DO_TEST("pseries-many-buses-1",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI);
    DO_TEST("pseries-many-buses-2",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI);
    DO_TEST("pseries-hostdevs-1",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VFIO_PCI);
    DO_TEST("pseries-hostdevs-2",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VFIO_PCI);
    DO_TEST("pseries-hostdevs-3",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VFIO_PCI);

566
    DO_TEST("pseries-features",
567
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
568
            QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
569
            QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
570
            QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV,
571 572
            QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);

573
    DO_TEST("pseries-serial-native",
574
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
575 576
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial+console-native",
577
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
578 579
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial-compat",
580
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
581
            QEMU_CAPS_DEVICE_SPAPR_VTY);
582
    DO_TEST("pseries-serial-pci",
583
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
584 585
            QEMU_CAPS_DEVICE_PCI_SERIAL);
    DO_TEST("pseries-serial-usb",
586
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
587 588
            QEMU_CAPS_DEVICE_QEMU_XHCI,
            QEMU_CAPS_DEVICE_USB_SERIAL);
589
    DO_TEST("pseries-console-native",
590
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
591 592
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-console-virtio",
593 594 595 596 597
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);

    DO_TEST("mach-virt-serial-native", NONE);
    DO_TEST("mach-virt-serial+console-native", NONE);
    DO_TEST("mach-virt-serial-compat", NONE);
598 599 600 601 602 603 604 605 606 607 608
    DO_TEST("mach-virt-serial-pci",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_SERIAL);
    DO_TEST("mach-virt-serial-usb",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_DEVICE_QEMU_XHCI,
            QEMU_CAPS_DEVICE_USB_SERIAL);
609 610 611 612
    DO_TEST("mach-virt-console-native",
            QEMU_CAPS_DEVICE_PL011);
    DO_TEST("mach-virt-console-virtio",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
613

614 615 616 617
    DO_TEST("balloon-device-auto", NONE);
    DO_TEST("balloon-device-period", NONE);
    DO_TEST("channel-virtio-auto", NONE);
    DO_TEST("console-compat-auto", NONE);
618
    DO_TEST("disk-scsi-device-auto",
619
            QEMU_CAPS_SCSI_LSI);
620 621 622 623 624 625 626 627 628 629
    DO_TEST("console-virtio", NONE);
    DO_TEST("serial-target-port-auto", NONE);
    DO_TEST("graphics-listen-network2", NONE);
    DO_TEST("graphics-spice-timeout", NONE);
    DO_TEST("numad-auto-vcpu-no-numatune", NONE);
    DO_TEST("numad-auto-memory-vcpu-no-cpuset-and-placement", NONE);
    DO_TEST("numad-auto-memory-vcpu-cpuset", NONE);
    DO_TEST("usb-ich9-ehci-addr", NONE);
    DO_TEST("disk-copy_on_read", NONE);
    DO_TEST("tpm-passthrough", NONE);
630
    DO_TEST("tpm-passthrough-crb", NONE);
631
    DO_TEST("tpm-emulator", NONE);
632 633 634

    DO_TEST("metadata", NONE);
    DO_TEST("metadata-duplicate", NONE);
635

636
    DO_TEST("pci-bridge",
637 638 639 640 641
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
    DO_TEST("pci-many",
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
642 643 644
    DO_TEST("pci-bridge-many-disks",
            QEMU_CAPS_DEVICE_PCI_BRIDGE);
    DO_TEST("pci-autoadd-addr",
645 646
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
647
    DO_TEST("pci-autoadd-idx",
648 649
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
650
    DO_TEST("pci-autofill-addr", NONE);
651

652
    DO_TEST("q35",
653 654
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
655
            QEMU_CAPS_DEVICE_IOH3420,
656 657 658
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
659
            QEMU_CAPS_DEVICE_QXL);
660 661 662
    DO_TEST("q35-usb2",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
663
            QEMU_CAPS_DEVICE_IOH3420,
664
            QEMU_CAPS_ICH9_AHCI,
665
            QEMU_CAPS_ICH9_USB_EHCI1,
666
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
667
            QEMU_CAPS_DEVICE_QXL);
668
    DO_TEST("q35-usb2-multi",
669 670
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
671
            QEMU_CAPS_DEVICE_IOH3420,
672 673 674
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
675
            QEMU_CAPS_DEVICE_QXL);
676
    DO_TEST("q35-usb2-reorder",
677 678
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
679
            QEMU_CAPS_DEVICE_IOH3420,
680 681 682
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
683
            QEMU_CAPS_DEVICE_QXL);
684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700
    DO_TEST("q35-pcie",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
701
            QEMU_CAPS_NEC_USB_XHCI,
702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
    /* same XML as q35-pcie, but don't set
       QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY */
    DO_TEST("q35-virtio-pci",
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
721
            QEMU_CAPS_NEC_USB_XHCI,
722
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
723 724 725 726 727 728 729 730 731
    /* same as q35-pcie, but all PCI controllers are added automatically */
    DO_TEST("q35-pcie-autoadd",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
    DO_TEST("q35-default-devices-only",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
751 752 753 754 755 756 757 758 759 760
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
    DO_TEST("q35-multifunction",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
780
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
781
    DO_TEST("q35-virt-manager-basic",
782 783 784
            QEMU_CAPS_KVM,
            QEMU_CAPS_ICH9_DISABLE_S3,
            QEMU_CAPS_ICH9_DISABLE_S4,
785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
            QEMU_CAPS_DEVICE_ICH9_INTEL_HDA,
803 804 805 806 807
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_SPICE,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_HDA_DUPLEX,
            QEMU_CAPS_USB_REDIR);
808
    DO_TEST("pcie-root",
809 810
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
811
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
812
            QEMU_CAPS_DEVICE_QXL);
813 814

    /* Test automatic and manual setting of pcie-root-port attributes */
815
    DO_TEST("pcie-root-port",
816 817
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
818
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
819
            QEMU_CAPS_DEVICE_QXL);
820 821 822 823 824 825

    /* Make sure the default model for PCIe Root Ports is picked correctly
     * based on QEMU binary capabilities. We use x86/q35 for the test, but
     * any PCIe machine type (such as aarch64/virt) will behave the same */
    DO_TEST("pcie-root-port-model-generic",
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
826
            QEMU_CAPS_DEVICE_IOH3420);
827
    DO_TEST("pcie-root-port-model-ioh3420",
828
            QEMU_CAPS_DEVICE_IOH3420);
829

830
    DO_TEST("pcie-switch-upstream-port",
831 832 833
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_ICH9_AHCI,
834
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
835
            QEMU_CAPS_DEVICE_QXL);
836
    DO_TEST("pcie-switch-downstream-port",
837 838 839 840
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_ICH9_AHCI,
841
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
842
            QEMU_CAPS_DEVICE_QXL);
843
    DO_TEST("pci-expander-bus",
844
            QEMU_CAPS_DEVICE_PXB);
845
    DO_TEST("pcie-expander-bus",
846 847 848 849
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_DEVICE_PXB_PCIE);
850
    DO_TEST("autoindex",
851 852 853 854 855 856 857
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
858
            QEMU_CAPS_NEC_USB_XHCI);
859 860 861 862 863 864 865
    /* Make sure the user can always override libvirt's default device
     * placement policy by providing an explicit PCI address */
    DO_TEST("q35-pci-force-address",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_HDA_DUPLEX);
866

867 868
    DO_TEST("hostdev-scsi-vhost-scsi-ccw",
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
869
            QEMU_CAPS_CCW);
870
    DO_TEST("hostdev-scsi-vhost-scsi-pci",
871 872
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VHOST_SCSI);
873 874 875 876 877
    DO_TEST("hostdev-scsi-vhost-scsi-pcie",
            QEMU_CAPS_KVM,
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY);
878
    DO_TEST("hostdev-scsi-lsi",
879 880
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
881
    DO_TEST("hostdev-scsi-virtio-scsi",
882 883
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
884
    DO_TEST("hostdev-scsi-readonly",
885 886
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
887 888

    DO_TEST("hostdev-scsi-shareable",
889 890
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
891
    DO_TEST("hostdev-scsi-sgio",
892 893
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
894
    DO_TEST("hostdev-scsi-rawio",
895 896
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
897 898

    DO_TEST("hostdev-scsi-autogen-address",
899 900
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
901
    DO_TEST("hostdev-scsi-large-unit",
902 903
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
904 905

    DO_TEST("hostdev-scsi-lsi-iscsi",
906 907
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
908
    DO_TEST("hostdev-scsi-lsi-iscsi-auth",
909 910
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
911
    DO_TEST("hostdev-scsi-virtio-iscsi",
912 913
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
914
    DO_TEST("hostdev-scsi-virtio-iscsi-auth",
915 916
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
917

918 919 920 921 922
    DO_TEST("hostdev-subsys-mdev-vfio-ccw",
            QEMU_CAPS_CCW,
            QEMU_CAPS_CCW_CSSID_UNRESTRICTED,
            QEMU_CAPS_DEVICE_VFIO_CCW);

923
    DO_TEST("s390-defaultconsole",
924
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
925
    DO_TEST("s390-panic",
926
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
927
    DO_TEST("s390-panic-missing",
928
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
929
    DO_TEST("s390-panic-no-address",
930
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
931
    DO_TEST("s390-serial",
932
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
933
    DO_TEST("s390-serial-2",
934
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
935
    DO_TEST("s390-serial-console",
936
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
937

938 939 940
    DO_TEST("pcihole64", NONE);
    DO_TEST("pcihole64-gib", NONE);
    DO_TEST("pcihole64-none", NONE);
941
    DO_TEST("pcihole64-q35",
942
            QEMU_CAPS_DEVICE_IOH3420,
943 944
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
945
            QEMU_CAPS_DEVICE_QXL,
946
            QEMU_CAPS_Q35_PCI_HOLE64_SIZE);
947

948 949
    DO_TEST("panic", NONE);
    DO_TEST("panic-isa", NONE);
950 951
    DO_TEST("panic-pseries",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
952 953
    DO_TEST("panic-double", NONE);
    DO_TEST("panic-no-address", NONE);
H
Hu Tao 已提交
954

955
    DO_TEST("disk-backing-chains", NONE);
956 957
    DO_TEST("disk-backing-chains-index", NONE);
    DO_TEST("disk-backing-chains-noindex", NONE);
958

959 960
    DO_TEST("chardev-label",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
J
Ján Tomko 已提交
961

962 963 964 965 966 967
    DO_TEST("cpu-numa1", NONE);
    DO_TEST("cpu-numa2", NONE);
    DO_TEST("cpu-numa-no-memory-element", NONE);
    DO_TEST("cpu-numa-disordered", NONE);
    DO_TEST("cpu-numa-disjoint", NONE);
    DO_TEST("cpu-numa-memshared", NONE);
968

969 970 971
    DO_TEST("numatune-auto-prefer", NONE);
    DO_TEST("numatune-memnode", NONE);
    DO_TEST("numatune-memnode-no-memory", NONE);
972

973 974
    DO_TEST("bios-nvram", NONE);
    DO_TEST("bios-nvram-os-interleave", NONE);
975

976 977 978
    DO_TEST("tap-vhost", NONE);
    DO_TEST("tap-vhost-incorrect", NONE);
    DO_TEST("shmem", NONE);
979
    DO_TEST("shmem-plain-doorbell", NONE);
980 981
    DO_TEST("smbios", NONE);
    DO_TEST("smbios-multiple-type2", NONE);
982

983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007
    DO_TEST("os-firmware-bios",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_QXL);
    DO_TEST("os-firmware-efi",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_QXL);
    DO_TEST("os-firmware-efi-secboot",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_QXL);

1008
    DO_TEST("aarch64-aavmf-virtio-mmio",
1009 1010
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
1011 1012
    DO_TEST("aarch64-os-firmware-efi",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
1013
    DO_TEST("aarch64-virtio-pci-default",
1014
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
1015 1016 1017
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
1018 1019 1020
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_VIRTIO_SCSI);
1021
    DO_TEST("aarch64-virtio-pci-manual-addresses",
1022 1023 1024
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
1025 1026 1027
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_VIRTIO_SCSI);
1028
    DO_TEST("aarch64-video-virtio-gpu-pci",
1029
            QEMU_CAPS_OBJECT_GPEX,
1030
            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420,
1031
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1032
            QEMU_CAPS_DEVICE_VIRTIO_GPU);
1033 1034 1035 1036 1037 1038 1039
    DO_TEST("aarch64-pci-serial",
            QEMU_CAPS_DEVICE_PCI_SERIAL,
            QEMU_CAPS_CHARDEV_LOGFILE,
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT);
1040 1041 1042 1043
    DO_TEST("aarch64-traditional-pci",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
1044
            QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE,
1045 1046
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_SERIAL);
1047 1048 1049 1050 1051 1052 1053 1054
    DO_TEST("aarch64-video-default",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_VNC);
1055

1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118
    DO_TEST_FULL("aarch64-gic-none", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-both", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-tcg", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default-both", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
1119

1120 1121 1122
    DO_TEST("memory-hotplug", NONE);
    DO_TEST("memory-hotplug-nonuma", NONE);
    DO_TEST("memory-hotplug-dimm", NONE);
M
Michal Privoznik 已提交
1123
    DO_TEST("memory-hotplug-nvdimm", NONE);
1124
    DO_TEST("memory-hotplug-nvdimm-access", NONE);
1125
    DO_TEST("memory-hotplug-nvdimm-label", NONE);
1126
    DO_TEST("memory-hotplug-nvdimm-align", NONE);
1127
    DO_TEST("memory-hotplug-nvdimm-pmem", NONE);
1128
    DO_TEST("memory-hotplug-nvdimm-readonly", NONE);
1129
    DO_TEST("net-udp", NONE);
1130

1131 1132 1133
    DO_TEST("video-virtio-gpu-device", NONE);
    DO_TEST("video-virtio-gpu-virgl", NONE);
    DO_TEST("video-virtio-gpu-spice-gl", NONE);
1134
    DO_TEST("video-virtio-gpu-sdl-gl", NONE);
1135 1136 1137 1138 1139 1140 1141

    DO_TEST("virtio-input",
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET);
    DO_TEST("virtio-input-passthrough",
            QEMU_CAPS_VIRTIO_INPUT_HOST);
M
Marc-André Lureau 已提交
1142

1143 1144
    DO_TEST("memorybacking-set", NONE);
    DO_TEST("memorybacking-unset", NONE);
1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158

    DO_TEST("virtio-options",
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM,
            QEMU_CAPS_VIRTIO_PCI_ATS);
1159

1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172
    DO_TEST("fd-memory-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);
    DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);
    DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);

    DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);

    DO_TEST("memfd-memory-numa",
            QEMU_CAPS_OBJECT_MEMORY_MEMFD,
            QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB);
1173 1174 1175
    DO_TEST("memfd-memory-default-hugepage",
            QEMU_CAPS_OBJECT_MEMORY_MEMFD,
            QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB);
1176

1177
    DO_TEST("acpi-table", NONE);
J
Ján Tomko 已提交
1178

1179 1180 1181 1182 1183
    DO_TEST("video-device-pciaddr-default",
            QEMU_CAPS_KVM,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_QXL);
1184 1185
    DO_TEST("video-qxl-heads", NONE);
    DO_TEST("video-qxl-noheads", NONE);
1186
    DO_TEST("video-virtio-gpu-secondary", NONE);
1187
    DO_TEST("video-virtio-gpu-ccw",
1188
            QEMU_CAPS_CCW,
1189 1190 1191 1192 1193
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW);
1194
    DO_TEST("video-virtio-gpu-ccw-auto",
1195
            QEMU_CAPS_CCW,
1196 1197 1198 1199 1200
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW);
1201
    DO_TEST("video-none-device", NONE);
1202

1203
    DO_TEST("intel-iommu",
1204 1205 1206
            QEMU_CAPS_DEVICE_INTEL_IOMMU);
    DO_TEST("intel-iommu-machine",
            QEMU_CAPS_MACHINE_IOMMU);
1207 1208 1209 1210
    DO_TEST("intel-iommu-caching-mode",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420);
1211
    DO_TEST("intel-iommu-eim", NONE);
J
Ján Tomko 已提交
1212
    DO_TEST("intel-iommu-device-iotlb", NONE);
J
Ján Tomko 已提交
1213

1214 1215 1216 1217 1218 1219 1220
    DO_TEST("cpu-check-none", NONE);
    DO_TEST("cpu-check-partial", NONE);
    DO_TEST("cpu-check-full", NONE);
    DO_TEST("cpu-check-default-none", NONE);
    DO_TEST("cpu-check-default-none2", NONE);
    DO_TEST("cpu-check-default-partial", NONE);
    DO_TEST("cpu-check-default-partial2", NONE);
M
Marc-André Lureau 已提交
1221
    DO_TEST("vmcoreinfo", NONE);
1222

1223 1224
    DO_TEST("smartcard-host", NONE);
    DO_TEST("smartcard-host-certificates", NONE);
1225
    DO_TEST("smartcard-host-certificates-database", NONE);
1226 1227 1228 1229
    DO_TEST("smartcard-passthrough-tcp", NONE);
    DO_TEST("smartcard-passthrough-spicevmc", NONE);
    DO_TEST("smartcard-controller", NONE);

1230 1231 1232 1233 1234 1235
    DO_TEST("pseries-cpu-compat-power9",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-cpu-compat",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-cpu-exact",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1236

1237
    DO_TEST("user-aliases", QEMU_CAPS_QCOW2_LUKS);
1238
    DO_TEST("input-virtio-ccw",
1239
            QEMU_CAPS_CCW,
1240 1241 1242 1243 1244 1245
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW,
            QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW,
            QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW);
1246

1247 1248 1249 1250 1251 1252 1253 1254 1255
    DO_TEST("tseg-explicit-size",
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_MACHINE_SMM_OPT,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_MCH_EXTENDED_TSEG_MBYTES);

1256 1257
# define DO_TEST_STATUS(name) \
    do { \
1258 1259 1260 1261
        if (testQemuInfoSetArgs(&info, capslatest, \
                                ARG_QEMU_CAPS, QEMU_CAPS_LAST, \
                                ARG_END) < 0 || \
            qemuTestCapsCacheInsert(driver.qemuCapsCache, info.qemuCaps) < 0 || \
1262
            testInfoSetStatusPaths(&info, name) < 0) { \
1263 1264 1265 1266 1267 1268 1269 1270
            VIR_TEST_DEBUG("Failed to generate status test data for '%s'", name); \
            return -1; \
        } \
\
        if (virTestRun("QEMU status XML-2-XML " name, \
                       testCompareStatusXMLToXMLFiles, &info) < 0) \
            ret = -1; \
\
1271
        testQemuInfoClear(&info); \
1272 1273 1274 1275 1276
    } while (0)


    DO_TEST_STATUS("blockjob-mirror");
    DO_TEST_STATUS("vcpus-multi");
1277
    DO_TEST_STATUS("modern");
1278
    DO_TEST_STATUS("migration-out-nbd");
1279 1280
    DO_TEST_STATUS("migration-in-params");
    DO_TEST_STATUS("migration-out-params");
1281
    DO_TEST_STATUS("migration-out-nbd-tls");
1282
    DO_TEST_STATUS("disk-secinfo-upgrade");
1283

1284 1285
    DO_TEST("vhost-vsock", QEMU_CAPS_DEVICE_VHOST_VSOCK);
    DO_TEST("vhost-vsock-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK);
1286 1287 1288 1289 1290
    DO_TEST("vhost-vsock-ccw", QEMU_CAPS_DEVICE_VHOST_VSOCK,
            QEMU_CAPS_CCW);
    DO_TEST("vhost-vsock-ccw-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK,
            QEMU_CAPS_CCW);

L
Lubomir Rintel 已提交
1291 1292
    DO_TEST("riscv64-virt",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
1293 1294
    DO_TEST("riscv64-virt-pci",
            QEMU_CAPS_OBJECT_GPEX);
J
Ján Tomko 已提交
1295

1296 1297 1298 1299
    DO_TEST("virtio-transitional",
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
1300
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
1301
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
1302
            QEMU_CAPS_DEVICE_VHOST_VSOCK,
1303 1304
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI);
1305 1306 1307 1308
    DO_TEST("virtio-non-transitional",
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
1309
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
1310
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
1311
            QEMU_CAPS_DEVICE_VHOST_VSOCK,
1312 1313
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI);
1314

A
Andrea Bolognani 已提交
1315 1316 1317
    if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
        virFileDeleteTree(fakerootdir);

1318
    virHashFree(capslatest);
1319
    qemuTestDriverFree(&driver);
A
Andrea Bolognani 已提交
1320
    VIR_FREE(fakerootdir);
1321

1322
    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
1323 1324
}

A
Andrea Bolognani 已提交
1325
VIR_TEST_MAIN_PRELOAD(mymain,
1326
                      abs_builddir "/.libs/virpcimock.so",
1327 1328
                      abs_builddir "/.libs/virrandommock.so",
                      abs_builddir "/.libs/virdeterministichashmock.so")
1329

1330 1331
#else

1332 1333 1334 1335 1336
int
main(void)
{
    return EXIT_AM_SKIP;
}
1337 1338

#endif /* WITH_QEMU */