qemuxml2xmltest.c 48.9 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
# include "virfilewrapper.h"
# include "configmake.h"
19

20 21
# define VIR_FROM_THIS VIR_FROM_NONE

22
static virQEMUDriver driver;
23

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

30

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

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

41

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

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

52

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

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

    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 |
76
                                      VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST))) {
77
        VIR_TEST_DEBUG("\nfailed to format back '%s'", data->infile);
78
        goto cleanup;
79
    }
80

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

    ret = 0;

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


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

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

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

112 113
    if (!virFileExists(info->outfile)) {
        VIR_FREE(info->outfile);
114

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

121
    return 0;
122

123
 error:
124
    testQemuInfoClear(info);
125
    return -1;
126 127
}

128 129 130 131

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

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

    return 0;

 error:
141
    testQemuInfoClear(info);
142 143 144 145
    return -1;
}


A
Andrea Bolognani 已提交
146
# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
147

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

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

160
    fakerootdir = g_strdup(FAKEROOTDIRTEMPLATE);
A
Andrea Bolognani 已提交
161 162 163 164 165 166 167 168

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

    setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);

169 170 171 172 173 174 175 176 177
    /* Required for tpm-emulator tests
     */
    virFileWrapperAddPrefix(SYSCONFDIR "/qemu/firmware",
                            abs_srcdir "/qemufirmwaredata/etc/qemu/firmware");
    virFileWrapperAddPrefix(PREFIX "/share/qemu/firmware",
                            abs_srcdir "/qemufirmwaredata/usr/share/qemu/firmware");
    virFileWrapperAddPrefix("/home/user/.config/qemu/firmware",
                            abs_srcdir "/qemufirmwaredata/home/user/.config/qemu/firmware");

178
    if (qemuTestDriverInit(&driver) < 0)
179
        return EXIT_FAILURE;
180

181 182
    cfg = virQEMUDriverGetConfig(&driver);

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

218 219 220 221 222 223 224 225 226
# define DO_TEST_CAPS_INTERNAL(name, arch, ver, ...) \
    DO_TEST_INTERNAL(name, "." arch "-" ver, WHEN_BOTH, \
                     ARG_CAPS_ARCH, arch, \
                     ARG_CAPS_VER, ver, \
                     __VA_ARGS__)

# define DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ...) \
    DO_TEST_CAPS_INTERNAL(name, arch, "latest", __VA_ARGS__)

227 228 229
# define DO_TEST_CAPS_ARCH_VER_FULL(name, arch, ver, ...) \
    DO_TEST_CAPS_INTERNAL(name, arch, ver, __VA_ARGS__)

230 231 232
# define DO_TEST_CAPS_ARCH_LATEST(name, arch) \
    DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ARG_END)

233
# define DO_TEST_CAPS_ARCH_VER(name, arch, ver) \
234
    DO_TEST_CAPS_ARCH_VER_FULL(name, arch, ver, ARG_END)
235

236 237
# define DO_TEST_CAPS_LATEST(name) \
    DO_TEST_CAPS_ARCH_LATEST(name, "x86_64")
238

239 240 241 242 243 244 245 246 247 248 249
# define DO_TEST_CAPS_VER(name, ver) \
    DO_TEST_CAPS_ARCH_VER(name, "x86_64", ver)

# define DO_TEST_FULL(name, when, ...) \
    DO_TEST_INTERNAL(name, "", when, __VA_ARGS__)

# define DO_TEST(name, ...) \
    DO_TEST_FULL(name, WHEN_BOTH, \
                 ARG_QEMU_CAPS, __VA_ARGS__, QEMU_CAPS_LAST)

# define NONE QEMU_CAPS_LAST
250 251 252 253 254

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

256
    DO_TEST("minimal", NONE);
257 258
    DO_TEST_CAPS_LATEST("genid");
    DO_TEST_CAPS_LATEST("genid-auto");
259 260
    DO_TEST("machine-core-on", NONE);
    DO_TEST("machine-core-off", NONE);
261
    DO_TEST("machine-loadparm-multiple-disks-nets-s390", NONE);
262 263 264 265 266
    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);
267 268 269
    DO_TEST("boot-floppy-q35",
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI);
270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299
    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);
300
    DO_TEST("hyperv-stimer-direct", NONE);
301 302 303 304 305 306 307

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

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

308
    DO_TEST("pages-discard", NONE);
309
    DO_TEST("pages-discard-hugepages", NONE);
310
    DO_TEST("pages-dimm-discard", NONE);
311
    DO_TEST("hugepages-default", NONE);
312
    DO_TEST("hugepages-default-2M", NONE);
313
    DO_TEST("hugepages-default-system-size", NONE);
314
    DO_TEST("hugepages-nodeset", NONE);
315
    DO_TEST("hugepages-numa-default-2M", NONE);
316
    DO_TEST("hugepages-numa-default-dimm", NONE);
317
    DO_TEST("hugepages-numa-nodeset", NONE);
318
    DO_TEST("hugepages-numa-nodeset-part", NONE);
319
    DO_TEST("hugepages-shared", NONE);
320
    DO_TEST("hugepages-memaccess", NONE);
321
    DO_TEST("hugepages-memaccess2", NONE);
322
    DO_TEST("hugepages-nvdimm", NONE);
323 324 325 326 327 328
    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);
329
    DO_TEST_CAPS_LATEST("disk-cdrom-empty-network-invalid");
330
    DO_TEST("disk-cdrom-bus-other", NONE);
331 332 333 334
    DO_TEST("disk-floppy", NONE);
    DO_TEST("disk-usb-device", NONE);
    DO_TEST("disk-virtio", NONE);
    DO_TEST("floppy-drive-fat", NONE);
335 336 337 338 339
    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);
340
    DO_TEST("disk-cache", QEMU_CAPS_SCSI_LSI);
341
    DO_TEST("disk-network-nbd", NONE);
342
    DO_TEST("disk-network-iscsi", QEMU_CAPS_VIRTIO_SCSI);
343 344 345 346 347 348
    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);
349 350
    DO_TEST("disk-scsi", QEMU_CAPS_SCSI_LSI, QEMU_CAPS_SCSI_MEGASAS,
            QEMU_CAPS_SCSI_MPTSAS1068, QEMU_CAPS_SCSI_DISK_WWN);
351
    DO_TEST("disk-virtio-scsi-reservations",
352
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_PR_MANAGER_HELPER);
353
    DO_TEST("controller-virtio-scsi", QEMU_CAPS_VIRTIO_SCSI);
354 355 356
    DO_TEST("disk-virtio-s390-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
357
    DO_TEST("disk-mirror-old", NONE);
358
    DO_TEST("disk-mirror", NONE);
359
    DO_TEST("disk-active-commit", NONE);
360 361 362 363 364 365 366
    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);
367
    cfg->vncAutoUnixSocket = true;
368
    DO_TEST("graphics-vnc-auto-socket-cfg", NONE);
369
    cfg->vncAutoUnixSocket = false;
370 371
    DO_TEST("graphics-vnc-socket", NONE);
    DO_TEST("graphics-vnc-auto-socket", NONE);
372 373
    DO_TEST("graphics-vnc-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
374 375 376 377 378 379 380 381

    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);
382
    cfg->spiceAutoUnixSocket = true;
383
    DO_TEST("graphics-spice-auto-socket-cfg", NONE);
384
    cfg->spiceAutoUnixSocket = false;
385 386
    DO_TEST("graphics-spice-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
387

388 389 390
    DO_TEST("graphics-egl-headless-rendernode",
            QEMU_CAPS_EGL_HEADLESS,
            QEMU_CAPS_EGL_HEADLESS_RENDERNODE);
391

392 393 394 395 396 397 398 399 400 401
    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 已提交
402
    DO_TEST("net-user-addr", NONE);
403 404 405 406 407 408
    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);
409
    DO_TEST("net-eth-unmanaged-tap", NONE);
410
    DO_TEST("net-virtio-network-portgroup", NONE);
411
    DO_TEST("net-virtio-rxtxqueuesize", NONE);
412
    DO_TEST("net-hostdev", NONE);
413
    DO_TEST("net-hostdev-bootorder", NONE);
414 415 416 417 418 419 420 421
    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);
422
    DO_TEST("net-mtu", NONE);
423
    DO_TEST("net-coalesce", NONE);
424
    DO_TEST("net-many-models", NONE);
425

426
    DO_TEST("serial-tcp-tlsx509-chardev", NONE);
427
    DO_TEST("serial-tcp-tlsx509-chardev-notls", NONE);
428 429 430 431 432 433 434 435 436
    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);

437
    DO_TEST("channel-unix-source-path", NONE);
438

439 440
    DO_TEST("hostdev-usb-address", NONE);
    DO_TEST("hostdev-pci-address", NONE);
441
    DO_TEST("hostdev-pci-multifunction", NONE);
442
    DO_TEST("hostdev-vfio", NONE);
443 444 445
    DO_TEST("hostdev-vfio-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
446 447 448 449 450 451 452 453 454 455 456
    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);
457
    DO_TEST("hostdev-mdev-precreated", NONE);
458
    DO_TEST("hostdev-mdev-display", QEMU_CAPS_VFIO_PCI_DISPLAY);
459
    DO_TEST("pci-rom", NONE);
460
    DO_TEST("pci-rom-disabled", NONE);
461
    DO_TEST("pci-rom-disabled-invalid", NONE);
462 463
    DO_TEST("pci-serial-dev-chardev", NONE);

464 465
    DO_TEST("encrypted-disk", QEMU_CAPS_QCOW2_LUKS);
    DO_TEST("encrypted-disk-usage", QEMU_CAPS_QCOW2_LUKS);
466
    DO_TEST("luks-disks", NONE);
467
    DO_TEST("luks-disks-source", NONE);
468 469 470 471 472 473 474 475 476
    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);
477
    DO_TEST("vcpu-placement-static",
478 479
            QEMU_CAPS_KVM,
            QEMU_CAPS_OBJECT_IOTHREAD);
480

481 482 483 484 485 486
    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);
487
    DO_TEST("iothreads-disk-virtio-ccw",
488
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
489
    DO_TEST("iothreads-virtio-scsi-pci",
490
            QEMU_CAPS_VIRTIO_SCSI);
491
    DO_TEST("iothreads-virtio-scsi-ccw",
492
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_CCW,
493
            QEMU_CAPS_VIRTIO_S390);
494 495 496 497 498 499 500
    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);

501 502 503 504 505
    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",
506
            QEMU_CAPS_DEVICE_IOH3420,
507 508
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
509 510
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("usb-controller-explicit-q35",
511
            QEMU_CAPS_DEVICE_IOH3420,
512 513
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
514 515
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("ppc64-usb-controller",
516
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
517 518
            QEMU_CAPS_PCI_OHCI);
    DO_TEST("ppc64-usb-controller-legacy",
519
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
520
            QEMU_CAPS_PIIX3_USB_UHCI);
521 522 523 524 525
    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);
526
    DO_TEST("blkdeviotune-max", NONE);
527
    DO_TEST("blkdeviotune-group-num", NONE);
528
    DO_TEST("blkdeviotune-max-length", NONE);
529
    DO_TEST("controller-usb-order", NONE);
530

531 532 533 534 535 536 537 538
    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);
539
    DO_TEST("seclabel-static", NONE);
540
    DO_TEST("seclabel-static-labelskip", NONE);
541 542 543 544
    DO_TEST("seclabel-none", NONE);
    DO_TEST("seclabel-dac-none", NONE);
    DO_TEST("seclabel-dynamic-none", NONE);
    DO_TEST("seclabel-device-multiple", NONE);
545 546
    DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
547
    DO_TEST("numad-static-vcpu-no-numatune", NONE);
548

549
    DO_TEST("disk-scsi-lun-passthrough-sgio",
550
            QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
551
    DO_TEST("disk-scsi-disk-vpd",
552
            QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
553 554
    DO_TEST("disk-source-pool", NONE);
    DO_TEST("disk-source-pool-mode", NONE);
555

556 557
    DO_TEST("disk-discard", NONE);
    DO_TEST("disk-detect-zeroes", NONE);
O
Osier Yang 已提交
558

559 560
    DO_TEST("disk-serial", NONE);

561 562 563 564
    DO_TEST("virtio-rng-random",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
    DO_TEST("virtio-rng-egd",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
565

566 567 568 569 570 571
    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);
572

573 574 575 576
    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);
577 578 579 580
    DO_TEST("pseries-phb-numa-node",
            QEMU_CAPS_NUMA,
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE);
581

582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603
    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);

604
    DO_TEST("pseries-features",
605
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
606
            QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
607
            QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
608
            QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV,
609
            QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST,
610 611
            QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);

612
    DO_TEST("pseries-serial-native",
613
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
614 615
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial+console-native",
616
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
617 618
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial-compat",
619
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
620
            QEMU_CAPS_DEVICE_SPAPR_VTY);
621
    DO_TEST("pseries-serial-pci",
622
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
623 624
            QEMU_CAPS_DEVICE_PCI_SERIAL);
    DO_TEST("pseries-serial-usb",
625
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
626 627
            QEMU_CAPS_DEVICE_QEMU_XHCI,
            QEMU_CAPS_DEVICE_USB_SERIAL);
628
    DO_TEST("pseries-console-native",
629
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
630 631
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-console-virtio",
632 633 634 635 636
            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);
637 638 639 640 641 642 643 644 645 646 647
    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);
648 649 650 651
    DO_TEST("mach-virt-console-native",
            QEMU_CAPS_DEVICE_PL011);
    DO_TEST("mach-virt-console-virtio",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
652

653 654 655 656
    DO_TEST("balloon-device-auto", NONE);
    DO_TEST("balloon-device-period", NONE);
    DO_TEST("channel-virtio-auto", NONE);
    DO_TEST("console-compat-auto", NONE);
657
    DO_TEST("disk-scsi-device-auto",
658
            QEMU_CAPS_SCSI_LSI);
659 660 661 662 663 664 665 666 667
    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);
668 669 670 671 672
    DO_TEST_CAPS_LATEST("tpm-passthrough");
    DO_TEST_CAPS_LATEST("tpm-passthrough-crb");
    DO_TEST_CAPS_LATEST("tpm-emulator");
    DO_TEST_CAPS_LATEST("tpm-emulator-tpm2");
    DO_TEST_CAPS_LATEST("tpm-emulator-tpm2-enc");
673 674 675

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

677
    DO_TEST("pci-bridge",
678 679 680 681 682
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
    DO_TEST("pci-many",
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
683 684 685
    DO_TEST("pci-bridge-many-disks",
            QEMU_CAPS_DEVICE_PCI_BRIDGE);
    DO_TEST("pci-autoadd-addr",
686 687
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
688
    DO_TEST("pci-autoadd-idx",
689 690
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
691
    DO_TEST("pci-autofill-addr", NONE);
692

693
    DO_TEST("q35",
694 695
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
696
            QEMU_CAPS_DEVICE_IOH3420,
697 698 699
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
700
            QEMU_CAPS_DEVICE_QXL);
701 702 703
    DO_TEST("q35-usb2",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
704
            QEMU_CAPS_DEVICE_IOH3420,
705
            QEMU_CAPS_ICH9_AHCI,
706
            QEMU_CAPS_ICH9_USB_EHCI1,
707
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
708
            QEMU_CAPS_DEVICE_QXL);
709
    DO_TEST("q35-usb2-multi",
710 711
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
712
            QEMU_CAPS_DEVICE_IOH3420,
713 714 715
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
716
            QEMU_CAPS_DEVICE_QXL);
717
    DO_TEST("q35-usb2-reorder",
718 719
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
720
            QEMU_CAPS_DEVICE_IOH3420,
721 722 723
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
724
            QEMU_CAPS_DEVICE_QXL);
725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741
    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,
742
            QEMU_CAPS_NEC_USB_XHCI,
743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761
            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,
762
            QEMU_CAPS_NEC_USB_XHCI,
763
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
764 765 766 767 768 769 770 771 772
    /* 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,
773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791
            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,
792 793 794 795 796 797 798 799 800 801
            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,
802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820
            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,
821
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
822
    DO_TEST("q35-virt-manager-basic",
823 824 825
            QEMU_CAPS_KVM,
            QEMU_CAPS_ICH9_DISABLE_S3,
            QEMU_CAPS_ICH9_DISABLE_S4,
826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843
            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,
844 845 846 847 848
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_SPICE,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_HDA_DUPLEX,
            QEMU_CAPS_USB_REDIR);
849
    DO_TEST("pcie-root",
850 851
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
852
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
853
            QEMU_CAPS_DEVICE_QXL);
854 855

    /* Test automatic and manual setting of pcie-root-port attributes */
856
    DO_TEST("pcie-root-port",
857 858
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
859
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
860
            QEMU_CAPS_DEVICE_QXL);
861 862 863 864 865 866

    /* 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,
867
            QEMU_CAPS_DEVICE_IOH3420);
868
    DO_TEST("pcie-root-port-model-ioh3420",
869
            QEMU_CAPS_DEVICE_IOH3420);
870

871
    DO_TEST("pcie-switch-upstream-port",
872 873 874
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_ICH9_AHCI,
875
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
876
            QEMU_CAPS_DEVICE_QXL);
877
    DO_TEST("pcie-switch-downstream-port",
878 879 880 881
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_ICH9_AHCI,
882
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
883
            QEMU_CAPS_DEVICE_QXL);
884
    DO_TEST("pci-expander-bus",
885
            QEMU_CAPS_DEVICE_PXB);
886
    DO_TEST("pcie-expander-bus",
887 888 889 890
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_DEVICE_PXB_PCIE);
891
    DO_TEST("autoindex",
892 893 894 895 896 897 898
            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,
899
            QEMU_CAPS_NEC_USB_XHCI);
900 901 902 903 904 905 906
    /* 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);
907

908 909
    DO_TEST("hostdev-scsi-vhost-scsi-ccw",
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
910
            QEMU_CAPS_CCW);
911
    DO_TEST("hostdev-scsi-vhost-scsi-pci",
912 913
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VHOST_SCSI);
914 915 916 917 918
    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);
919
    DO_TEST("hostdev-scsi-lsi",
920 921
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
922
    DO_TEST("hostdev-scsi-virtio-scsi",
923 924
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
925
    DO_TEST("hostdev-scsi-readonly",
926 927
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
928 929

    DO_TEST("hostdev-scsi-shareable",
930 931
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
932
    DO_TEST("hostdev-scsi-sgio",
933 934
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
935
    DO_TEST("hostdev-scsi-rawio",
936 937
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
938 939

    DO_TEST("hostdev-scsi-autogen-address",
940 941
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
942
    DO_TEST("hostdev-scsi-large-unit",
943 944
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
945 946

    DO_TEST("hostdev-scsi-lsi-iscsi",
947 948
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
949
    DO_TEST("hostdev-scsi-lsi-iscsi-auth",
950 951
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
952
    DO_TEST("hostdev-scsi-virtio-iscsi",
953 954
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
955
    DO_TEST("hostdev-scsi-virtio-iscsi-auth",
956 957
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
958

959 960 961 962
    DO_TEST("hostdev-subsys-mdev-vfio-ccw",
            QEMU_CAPS_CCW,
            QEMU_CAPS_CCW_CSSID_UNRESTRICTED,
            QEMU_CAPS_DEVICE_VFIO_CCW);
963 964
    DO_TEST_CAPS_ARCH_LATEST("hostdev-subsys-mdev-vfio-ccw-boot",
                             "s390x");
B
Boris Fiuczynski 已提交
965 966 967 968
    DO_TEST("hostdev-subsys-mdev-vfio-ap",
            QEMU_CAPS_CCW,
            QEMU_CAPS_CCW_CSSID_UNRESTRICTED,
            QEMU_CAPS_DEVICE_VFIO_AP);
969

970
    DO_TEST("s390-defaultconsole",
971
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
972
    DO_TEST("s390-panic",
973
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
974
    DO_TEST("s390-panic-missing",
975
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
976
    DO_TEST("s390-panic-no-address",
977
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
978
    DO_TEST("s390-serial",
979
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
980
    DO_TEST("s390-serial-2",
981
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
982
    DO_TEST("s390-serial-console",
983
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
984

985 986 987
    DO_TEST("pcihole64", NONE);
    DO_TEST("pcihole64-gib", NONE);
    DO_TEST("pcihole64-none", NONE);
988
    DO_TEST("pcihole64-q35",
989
            QEMU_CAPS_DEVICE_IOH3420,
990 991
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
992
            QEMU_CAPS_DEVICE_QXL,
993
            QEMU_CAPS_Q35_PCI_HOLE64_SIZE);
994

995 996
    DO_TEST("panic", NONE);
    DO_TEST("panic-isa", NONE);
997 998
    DO_TEST("panic-pseries",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
999 1000
    DO_TEST("panic-double", NONE);
    DO_TEST("panic-no-address", NONE);
H
Hu Tao 已提交
1001

1002
    DO_TEST("disk-backing-chains", NONE);
1003 1004
    DO_TEST("disk-backing-chains-index", NONE);
    DO_TEST("disk-backing-chains-noindex", NONE);
1005

1006 1007
    DO_TEST("chardev-label",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
J
Ján Tomko 已提交
1008

1009 1010 1011 1012 1013 1014
    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);
1015

1016 1017 1018
    DO_TEST("numatune-auto-prefer", NONE);
    DO_TEST("numatune-memnode", NONE);
    DO_TEST("numatune-memnode-no-memory", NONE);
1019

1020 1021
    DO_TEST("bios-nvram", NONE);
    DO_TEST("bios-nvram-os-interleave", NONE);
1022

1023 1024 1025
    DO_TEST("tap-vhost", NONE);
    DO_TEST("tap-vhost-incorrect", NONE);
    DO_TEST("shmem", NONE);
1026
    DO_TEST("shmem-plain-doorbell", NONE);
1027 1028
    DO_TEST("smbios", NONE);
    DO_TEST("smbios-multiple-type2", NONE);
1029

1030 1031 1032
    DO_TEST_CAPS_LATEST("os-firmware-bios");
    DO_TEST_CAPS_LATEST("os-firmware-efi");
    DO_TEST_CAPS_LATEST("os-firmware-efi-secboot");
1033

1034
    DO_TEST("aarch64-aavmf-virtio-mmio",
1035 1036
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
1037
    DO_TEST_CAPS_ARCH_LATEST("aarch64-os-firmware-efi", "aarch64");
1038
    DO_TEST("aarch64-virtio-pci-default",
1039
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
1040 1041 1042
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
1043 1044 1045
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_VIRTIO_SCSI);
1046
    DO_TEST("aarch64-virtio-pci-manual-addresses",
1047 1048 1049
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
1050 1051 1052
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_VIRTIO_SCSI);
1053
    DO_TEST("aarch64-video-virtio-gpu-pci",
1054
            QEMU_CAPS_OBJECT_GPEX,
1055
            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420,
1056
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1057
            QEMU_CAPS_DEVICE_VIRTIO_GPU);
1058 1059 1060 1061 1062 1063 1064
    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);
1065 1066 1067 1068
    DO_TEST("aarch64-traditional-pci",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
1069
            QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE,
1070 1071
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_SERIAL);
1072 1073 1074 1075 1076 1077 1078 1079
    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);
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 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143
    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);
1144

1145 1146 1147
    DO_TEST("memory-hotplug", NONE);
    DO_TEST("memory-hotplug-nonuma", NONE);
    DO_TEST("memory-hotplug-dimm", NONE);
M
Michal Privoznik 已提交
1148
    DO_TEST("memory-hotplug-nvdimm", NONE);
1149
    DO_TEST("memory-hotplug-nvdimm-access", NONE);
1150
    DO_TEST("memory-hotplug-nvdimm-label", NONE);
1151
    DO_TEST("memory-hotplug-nvdimm-align", NONE);
1152
    DO_TEST("memory-hotplug-nvdimm-pmem", NONE);
1153
    DO_TEST("memory-hotplug-nvdimm-readonly", NONE);
1154
    DO_TEST("net-udp", NONE);
1155

1156 1157 1158
    DO_TEST("video-virtio-gpu-device", NONE);
    DO_TEST("video-virtio-gpu-virgl", NONE);
    DO_TEST("video-virtio-gpu-spice-gl", NONE);
1159
    DO_TEST("video-virtio-gpu-sdl-gl", NONE);
1160 1161 1162 1163 1164 1165 1166

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

1168 1169
    DO_TEST("memorybacking-set", NONE);
    DO_TEST("memorybacking-unset", NONE);
1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183

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

1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197
    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);
1198 1199 1200
    DO_TEST("memfd-memory-default-hugepage",
            QEMU_CAPS_OBJECT_MEMORY_MEMFD,
            QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB);
1201

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

1204 1205 1206 1207 1208
    DO_TEST("video-device-pciaddr-default",
            QEMU_CAPS_KVM,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_QXL);
1209 1210
    DO_TEST("video-qxl-heads", NONE);
    DO_TEST("video-qxl-noheads", NONE);
1211
    DO_TEST("video-qxl-resolution", NONE);
1212
    DO_TEST("video-virtio-gpu-secondary", NONE);
1213
    DO_TEST("video-virtio-gpu-ccw",
1214
            QEMU_CAPS_CCW,
1215 1216 1217 1218 1219
            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);
1220
    DO_TEST("video-virtio-gpu-ccw-auto",
1221
            QEMU_CAPS_CCW,
1222 1223 1224 1225 1226
            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);
1227
    DO_TEST("video-none-device", NONE);
1228

1229 1230 1231 1232 1233
    DO_TEST_CAPS_LATEST("intel-iommu");
    DO_TEST_CAPS_VER("intel-iommu", "2.6.0");
    DO_TEST_CAPS_LATEST("intel-iommu-caching-mode");
    DO_TEST_CAPS_LATEST("intel-iommu-eim");
    DO_TEST_CAPS_LATEST("intel-iommu-device-iotlb");
1234
    DO_TEST_CAPS_ARCH_LATEST("iommu-smmuv3", "aarch64");
J
Ján Tomko 已提交
1235

1236 1237 1238 1239 1240 1241 1242
    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 已提交
1243
    DO_TEST("vmcoreinfo", NONE);
1244

1245 1246
    DO_TEST("smartcard-host", NONE);
    DO_TEST("smartcard-host-certificates", NONE);
1247
    DO_TEST("smartcard-host-certificates-database", NONE);
1248 1249 1250 1251
    DO_TEST("smartcard-passthrough-tcp", NONE);
    DO_TEST("smartcard-passthrough-spicevmc", NONE);
    DO_TEST("smartcard-controller", NONE);

1252 1253 1254 1255 1256 1257
    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);
1258

1259
    DO_TEST("user-aliases", QEMU_CAPS_QCOW2_LUKS);
1260
    DO_TEST("input-virtio-ccw",
1261
            QEMU_CAPS_CCW,
1262 1263 1264 1265 1266 1267
            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);
1268

1269 1270 1271 1272 1273 1274 1275 1276 1277
    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);

1278
# define DO_TEST_STATUS(_name) \
1279
    do { \
1280 1281 1282
        static struct testQemuInfo info = { \
            .name = _name, \
        }; \
1283 1284 1285 1286
        if (testQemuInfoSetArgs(&info, capslatest, \
                                ARG_QEMU_CAPS, QEMU_CAPS_LAST, \
                                ARG_END) < 0 || \
            qemuTestCapsCacheInsert(driver.qemuCapsCache, info.qemuCaps) < 0 || \
1287 1288
            testInfoSetStatusPaths(&info) < 0) { \
            VIR_TEST_DEBUG("Failed to generate status test data for '%s'", _name); \
1289 1290 1291
            return -1; \
        } \
\
1292
        if (virTestRun("QEMU status XML-2-XML " _name, \
1293 1294 1295
                       testCompareStatusXMLToXMLFiles, &info) < 0) \
            ret = -1; \
\
1296
        testQemuInfoClear(&info); \
1297 1298 1299 1300 1301
    } while (0)


    DO_TEST_STATUS("blockjob-mirror");
    DO_TEST_STATUS("vcpus-multi");
1302
    DO_TEST_STATUS("modern");
1303
    DO_TEST_STATUS("migration-out-nbd");
1304 1305
    DO_TEST_STATUS("migration-in-params");
    DO_TEST_STATUS("migration-out-params");
1306
    DO_TEST_STATUS("migration-out-nbd-tls");
1307
    DO_TEST_STATUS("disk-secinfo-upgrade");
1308

1309 1310
    DO_TEST_STATUS("blockjob-blockdev");

1311 1312
    DO_TEST("vhost-vsock", QEMU_CAPS_DEVICE_VHOST_VSOCK);
    DO_TEST("vhost-vsock-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK);
1313 1314 1315 1316 1317
    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 已提交
1318 1319
    DO_TEST("riscv64-virt",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
1320 1321
    DO_TEST("riscv64-virt-pci",
            QEMU_CAPS_OBJECT_GPEX);
J
Ján Tomko 已提交
1322

1323 1324
    DO_TEST_CAPS_LATEST("virtio-transitional");
    DO_TEST_CAPS_LATEST("virtio-non-transitional");
1325

1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341
    /* Simple headless guests for various architectures */
    DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-headless", "aarch64");
    DO_TEST_CAPS_ARCH_LATEST("ppc64-pseries-headless", "ppc64");
    DO_TEST_CAPS_ARCH_LATEST("riscv64-virt-headless", "riscv64");
    DO_TEST_CAPS_ARCH_LATEST("s390x-ccw-headless", "s390x");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-headless", "x86_64");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-headless", "x86_64");

    /* Simple guests with graphics for various architectures */
    DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-graphics", "aarch64");
    DO_TEST_CAPS_ARCH_LATEST("ppc64-pseries-graphics", "ppc64");
    DO_TEST_CAPS_ARCH_LATEST("riscv64-virt-graphics", "riscv64");
    DO_TEST_CAPS_ARCH_LATEST("s390x-ccw-graphics", "s390x");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-graphics", "x86_64");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-graphics", "x86_64");

A
Andrea Bolognani 已提交
1342 1343 1344
    if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
        virFileDeleteTree(fakerootdir);

1345
    virHashFree(capslatest);
1346
    qemuTestDriverFree(&driver);
A
Andrea Bolognani 已提交
1347
    VIR_FREE(fakerootdir);
1348
    virFileWrapperClearPrefixes();
1349

1350
    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
1351 1352
}

A
Andrea Bolognani 已提交
1353
VIR_TEST_MAIN_PRELOAD(mymain,
1354 1355 1356
                      VIR_TEST_MOCK("virpci"),
                      VIR_TEST_MOCK("virrandom"),
                      VIR_TEST_MOCK("virdeterministichash"))
1357

1358 1359
#else

1360 1361 1362 1363 1364
int
main(void)
{
    return EXIT_AM_SKIP;
}
1365 1366

#endif /* WITH_QEMU */