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
                 int when)
94
{
95 96 97
    VIR_FREE(info->infile);
    VIR_FREE(info->outfile);

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

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

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

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

117
    return 0;
118

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

124 125 126 127

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

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

    return 0;

 error:
137
    testQemuInfoClear(info);
138 139 140 141
    return -1;
}


A
Andrea Bolognani 已提交
142
# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
143

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

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

A
Andrea Bolognani 已提交
156 157 158 159 160 161 162 163 164 165 166 167
    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);

168
    if (qemuTestDriverInit(&driver) < 0)
169
        return EXIT_FAILURE;
170

171 172
    cfg = virQEMUDriverGetConfig(&driver);

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

208 209
# define NONE QEMU_CAPS_LAST

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


215 216 217 218 219

    /* 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);
220

221
    DO_TEST("minimal", NONE);
222 223
    DO_TEST("genid", NONE);
    DO_TEST("genid-auto", NONE);
224 225
    DO_TEST("machine-core-on", NONE);
    DO_TEST("machine-core-off", NONE);
226
    DO_TEST("machine-loadparm-multiple-disks-nets-s390", NONE);
227 228 229 230 231
    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);
232 233 234
    DO_TEST("boot-floppy-q35",
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI);
235 236 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
    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);

272
    DO_TEST("pages-discard", NONE);
273
    DO_TEST("pages-discard-hugepages", NONE);
274
    DO_TEST("pages-dimm-discard", NONE);
275
    DO_TEST("hugepages-default", NONE);
276
    DO_TEST("hugepages-default-2M", NONE);
277
    DO_TEST("hugepages-default-system-size", NONE);
278
    DO_TEST("hugepages-nodeset", NONE);
279
    DO_TEST("hugepages-numa-default-2M", NONE);
280
    DO_TEST("hugepages-numa-default-dimm", NONE);
281
    DO_TEST("hugepages-numa-nodeset", NONE);
282
    DO_TEST("hugepages-numa-nodeset-part", NONE);
283
    DO_TEST("hugepages-shared", NONE);
284
    DO_TEST("hugepages-memaccess", NONE);
285
    DO_TEST("hugepages-memaccess2", NONE);
286
    DO_TEST("hugepages-nvdimm", NONE);
287 288 289 290 291 292
    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);
293
    DO_TEST("disk-cdrom-bus-other", NONE);
294 295 296 297
    DO_TEST("disk-floppy", NONE);
    DO_TEST("disk-usb-device", NONE);
    DO_TEST("disk-virtio", NONE);
    DO_TEST("floppy-drive-fat", NONE);
298 299 300 301 302
    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);
303
    DO_TEST("disk-cache", QEMU_CAPS_SCSI_LSI);
304
    DO_TEST("disk-network-nbd", NONE);
305
    DO_TEST("disk-network-iscsi", QEMU_CAPS_VIRTIO_SCSI);
306 307 308 309 310 311
    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);
312 313
    DO_TEST("disk-scsi", QEMU_CAPS_SCSI_LSI, QEMU_CAPS_SCSI_MEGASAS,
            QEMU_CAPS_SCSI_MPTSAS1068, QEMU_CAPS_SCSI_DISK_WWN);
314
    DO_TEST("disk-virtio-scsi-reservations",
315
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_PR_MANAGER_HELPER);
316
    DO_TEST("controller-virtio-scsi", QEMU_CAPS_VIRTIO_SCSI);
317 318 319
    DO_TEST("disk-virtio-s390-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
320
    DO_TEST("disk-mirror-old", NONE);
321
    DO_TEST("disk-mirror", NONE);
322
    DO_TEST("disk-active-commit", NONE);
323 324 325 326 327 328 329
    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);
330
    cfg->vncAutoUnixSocket = true;
331
    DO_TEST("graphics-vnc-auto-socket-cfg", NONE);
332
    cfg->vncAutoUnixSocket = false;
333 334
    DO_TEST("graphics-vnc-socket", NONE);
    DO_TEST("graphics-vnc-auto-socket", NONE);
335 336
    DO_TEST("graphics-vnc-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
337 338 339 340 341 342 343 344

    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);
345
    cfg->spiceAutoUnixSocket = true;
346
    DO_TEST("graphics-spice-auto-socket-cfg", NONE);
347
    cfg->spiceAutoUnixSocket = false;
348 349
    DO_TEST("graphics-spice-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
350

351 352 353
    DO_TEST("graphics-egl-headless-rendernode",
            QEMU_CAPS_EGL_HEADLESS,
            QEMU_CAPS_EGL_HEADLESS_RENDERNODE);
354

355 356 357 358 359 360 361 362 363 364
    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 已提交
365
    DO_TEST("net-user-addr", NONE);
366 367 368 369 370 371 372
    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);
373
    DO_TEST("net-virtio-rxtxqueuesize", NONE);
374
    DO_TEST("net-hostdev", NONE);
375
    DO_TEST("net-hostdev-bootorder", NONE);
376 377 378 379 380 381 382 383
    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);
384
    DO_TEST("net-mtu", NONE);
385
    DO_TEST("net-coalesce", NONE);
386

387
    DO_TEST("serial-tcp-tlsx509-chardev", NONE);
388
    DO_TEST("serial-tcp-tlsx509-chardev-notls", NONE);
389 390 391 392 393 394 395 396 397
    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);

398
    DO_TEST("channel-unix-source-path", NONE);
399

400 401 402
    DO_TEST("hostdev-usb-address", NONE);
    DO_TEST("hostdev-pci-address", NONE);
    DO_TEST("hostdev-vfio", NONE);
403 404 405
    DO_TEST("hostdev-vfio-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
406 407 408 409 410 411 412 413 414 415 416
    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);
417
    DO_TEST("hostdev-mdev-precreated", NONE);
418
    DO_TEST("hostdev-mdev-display", QEMU_CAPS_VFIO_PCI_DISPLAY);
419
    DO_TEST("pci-rom", NONE);
420
    DO_TEST("pci-rom-disabled", NONE);
421
    DO_TEST("pci-rom-disabled-invalid", NONE);
422 423
    DO_TEST("pci-serial-dev-chardev", NONE);

424 425
    DO_TEST("encrypted-disk", QEMU_CAPS_QCOW2_LUKS);
    DO_TEST("encrypted-disk-usage", QEMU_CAPS_QCOW2_LUKS);
426
    DO_TEST("luks-disks", NONE);
427
    DO_TEST("luks-disks-source", NONE);
428 429 430 431 432 433 434 435 436
    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);
437
    DO_TEST("vcpu-placement-static",
438 439
            QEMU_CAPS_KVM,
            QEMU_CAPS_OBJECT_IOTHREAD);
440

441 442 443 444 445 446
    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);
447
    DO_TEST("iothreads-disk-virtio-ccw",
448
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
449
    DO_TEST("iothreads-virtio-scsi-pci",
450
            QEMU_CAPS_VIRTIO_SCSI);
451
    DO_TEST("iothreads-virtio-scsi-ccw",
452
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_CCW,
453
            QEMU_CAPS_VIRTIO_S390);
454 455 456 457 458 459 460
    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);

461 462 463 464 465
    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",
466
            QEMU_CAPS_DEVICE_IOH3420,
467 468
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
469 470
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("usb-controller-explicit-q35",
471
            QEMU_CAPS_DEVICE_IOH3420,
472 473
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
474 475
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("ppc64-usb-controller",
476
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
477 478
            QEMU_CAPS_PCI_OHCI);
    DO_TEST("ppc64-usb-controller-legacy",
479
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
480
            QEMU_CAPS_PIIX3_USB_UHCI);
481 482 483 484 485
    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);
486
    DO_TEST("blkdeviotune-max", NONE);
487
    DO_TEST("blkdeviotune-group-num", NONE);
488
    DO_TEST("blkdeviotune-max-length", NONE);
489
    DO_TEST("controller-usb-order", NONE);
490

491 492 493 494 495 496 497 498
    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);
499
    DO_TEST("seclabel-static", NONE);
500
    DO_TEST("seclabel-static-labelskip", NONE);
501 502 503 504
    DO_TEST("seclabel-none", NONE);
    DO_TEST("seclabel-dac-none", NONE);
    DO_TEST("seclabel-dynamic-none", NONE);
    DO_TEST("seclabel-device-multiple", NONE);
505 506
    DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
507
    DO_TEST("numad-static-vcpu-no-numatune", NONE);
508

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

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

519 520
    DO_TEST("disk-serial", NONE);

521 522 523 524
    DO_TEST("virtio-rng-random",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
    DO_TEST("virtio-rng-egd",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
525

526 527 528 529 530 531
    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);
532

533 534 535 536
    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);
537 538 539 540
    DO_TEST("pseries-phb-numa-node",
            QEMU_CAPS_NUMA,
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE);
541

542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563
    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);

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

571
    DO_TEST("pseries-serial-native",
572
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
573 574
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial+console-native",
575
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
576 577
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial-compat",
578
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
579
            QEMU_CAPS_DEVICE_SPAPR_VTY);
580
    DO_TEST("pseries-serial-pci",
581
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
582 583
            QEMU_CAPS_DEVICE_PCI_SERIAL);
    DO_TEST("pseries-serial-usb",
584
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
585 586
            QEMU_CAPS_DEVICE_QEMU_XHCI,
            QEMU_CAPS_DEVICE_USB_SERIAL);
587
    DO_TEST("pseries-console-native",
588
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
589 590
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-console-virtio",
591 592 593 594 595
            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);
596 597 598 599 600 601 602 603 604 605 606
    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);
607 608 609 610
    DO_TEST("mach-virt-console-native",
            QEMU_CAPS_DEVICE_PL011);
    DO_TEST("mach-virt-console-virtio",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
611

612 613 614 615
    DO_TEST("balloon-device-auto", NONE);
    DO_TEST("balloon-device-period", NONE);
    DO_TEST("channel-virtio-auto", NONE);
    DO_TEST("console-compat-auto", NONE);
616
    DO_TEST("disk-scsi-device-auto",
617
            QEMU_CAPS_SCSI_LSI);
618 619 620 621 622 623 624 625 626 627
    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);
628
    DO_TEST("tpm-passthrough-crb", NONE);
629
    DO_TEST("tpm-emulator", NONE);
630 631 632

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

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

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

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

    /* 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,
824
            QEMU_CAPS_DEVICE_IOH3420);
825
    DO_TEST("pcie-root-port-model-ioh3420",
826
            QEMU_CAPS_DEVICE_IOH3420);
827

828
    DO_TEST("pcie-switch-upstream-port",
829 830 831
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_ICH9_AHCI,
832
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
833
            QEMU_CAPS_DEVICE_QXL);
834
    DO_TEST("pcie-switch-downstream-port",
835 836 837 838
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_ICH9_AHCI,
839
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
840
            QEMU_CAPS_DEVICE_QXL);
841
    DO_TEST("pci-expander-bus",
842
            QEMU_CAPS_DEVICE_PXB);
843
    DO_TEST("pcie-expander-bus",
844 845 846 847
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_DEVICE_PXB_PCIE);
848
    DO_TEST("autoindex",
849 850 851 852 853 854 855
            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,
856
            QEMU_CAPS_NEC_USB_XHCI);
857 858 859 860 861 862 863
    /* 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);
864

865 866
    DO_TEST("hostdev-scsi-vhost-scsi-ccw",
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
867
            QEMU_CAPS_CCW);
868
    DO_TEST("hostdev-scsi-vhost-scsi-pci",
869 870
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VHOST_SCSI);
871 872 873 874 875
    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);
876
    DO_TEST("hostdev-scsi-lsi",
877 878
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
879
    DO_TEST("hostdev-scsi-virtio-scsi",
880 881
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
882
    DO_TEST("hostdev-scsi-readonly",
883 884
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
885 886

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

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

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

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

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

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

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

953
    DO_TEST("disk-backing-chains", NONE);
954 955
    DO_TEST("disk-backing-chains-index", NONE);
    DO_TEST("disk-backing-chains-noindex", NONE);
956

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

960 961 962 963 964 965
    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);
966

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

971 972
    DO_TEST("bios-nvram", NONE);
    DO_TEST("bios-nvram-os-interleave", NONE);
973

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

981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005
    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);

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

1054 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
    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);
1117

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

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

    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 已提交
1140

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

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

1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170
    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);
1171 1172 1173
    DO_TEST("memfd-memory-default-hugepage",
            QEMU_CAPS_OBJECT_MEMORY_MEMFD,
            QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB);
1174

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

1177 1178 1179 1180 1181
    DO_TEST("video-device-pciaddr-default",
            QEMU_CAPS_KVM,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_QXL);
1182 1183
    DO_TEST("video-qxl-heads", NONE);
    DO_TEST("video-qxl-noheads", NONE);
1184
    DO_TEST("video-virtio-gpu-secondary", NONE);
1185
    DO_TEST("video-virtio-gpu-ccw",
1186
            QEMU_CAPS_CCW,
1187 1188 1189 1190 1191
            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);
1192
    DO_TEST("video-virtio-gpu-ccw-auto",
1193
            QEMU_CAPS_CCW,
1194 1195 1196 1197 1198
            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);
1199
    DO_TEST("video-none-device", NONE);
1200

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

1212 1213 1214 1215 1216 1217 1218
    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 已提交
1219
    DO_TEST("vmcoreinfo", NONE);
1220

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

1228 1229 1230 1231 1232 1233
    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);
1234

1235
    DO_TEST("user-aliases", QEMU_CAPS_QCOW2_LUKS);
1236
    DO_TEST("input-virtio-ccw",
1237
            QEMU_CAPS_CCW,
1238 1239 1240 1241 1242 1243
            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);
1244

1245 1246 1247 1248 1249 1250 1251 1252 1253
    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);

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


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

1285 1286
    DO_TEST("vhost-vsock", QEMU_CAPS_DEVICE_VHOST_VSOCK);
    DO_TEST("vhost-vsock-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK);
1287 1288 1289 1290 1291
    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 已提交
1292 1293
    DO_TEST("riscv64-virt",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
1294 1295
    DO_TEST("riscv64-virt-pci",
            QEMU_CAPS_OBJECT_GPEX);
J
Ján Tomko 已提交
1296

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

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

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

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

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

1331 1332
#else

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

#endif /* WITH_QEMU */