qemuhelptest.c 22.7 KB
Newer Older
1 2
#include <config.h>

3 4
#include "testutils.h"

5 6
#ifdef WITH_QEMU

7 8
# include <stdio.h>
# include <stdlib.h>
9

10
# include "qemu/qemu_capabilities.h"
11
# include "viralloc.h"
12
# include "virstring.h"
13

14 15
# define VIR_FROM_THIS VIR_FROM_NONE

16 17
struct testInfo {
    const char *name;
18
    virQEMUCapsPtr flags;
19
    unsigned int version;
20
    bool is_kvm;
21
    unsigned int kvm_version;
22
    int error;
23 24
};

25 26
static void printMismatchedFlags(virQEMUCapsPtr got,
                                 virQEMUCapsPtr expect)
27
{
28
    size_t i;
29

30
    for (i = 0; i < QEMU_CAPS_LAST; i++) {
31 32
        bool gotFlag = virQEMUCapsGet(got, i);
        bool expectFlag = virQEMUCapsGet(expect, i);
33
        if (gotFlag && !expectFlag)
34
            fprintf(stderr, "Extra flag %zu\n", i);
35
        if (!gotFlag && expectFlag)
36
            fprintf(stderr, "Missing flag %zu\n", i);
37 38 39
    }
}

40 41 42
static int testHelpStrParsing(const void *data)
{
    const struct testInfo *info = data;
E
Eric Blake 已提交
43
    char *path = NULL;
44
    char *help = NULL;
45 46
    unsigned int version, kvm_version;
    bool is_kvm;
47
    virQEMUCapsPtr flags = NULL;
E
Eric Blake 已提交
48
    int ret = -1;
49 50
    char *got = NULL;
    char *expected = NULL;
51

E
Eric Blake 已提交
52 53
    if (virAsprintf(&path, "%s/qemuhelpdata/%s", abs_srcdir, info->name) < 0)
        return -1;
54

55
    if (virtTestLoadFile(path, &help) < 0)
E
Eric Blake 已提交
56
        goto cleanup;
57

58
    if (!(flags = virQEMUCapsNew()))
59 60
        goto cleanup;

61
    if (virQEMUCapsParseHelpStr("QEMU", help, flags,
62
                                &version, &is_kvm, &kvm_version, false, NULL) == -1) {
63 64
        if (info->error && virGetLastError()->code == info->error)
            ret = 0;
E
Eric Blake 已提交
65
        goto cleanup;
66
    }
E
Eric Blake 已提交
67

68
# ifndef WITH_YAJL
69 70
    if (virQEMUCapsGet(info->flags, QEMU_CAPS_MONITOR_JSON))
        virQEMUCapsSet(flags, QEMU_CAPS_MONITOR_JSON);
E
Eric Blake 已提交
71 72
# endif

73
    if (virQEMUCapsGet(info->flags, QEMU_CAPS_DEVICE)) {
E
Eric Blake 已提交
74
        VIR_FREE(path);
75
        VIR_FREE(help);
E
Eric Blake 已提交
76 77 78 79
        if (virAsprintf(&path, "%s/qemuhelpdata/%s-device", abs_srcdir,
                        info->name) < 0)
            goto cleanup;

80
        if (virtTestLoadFile(path, &help) < 0)
E
Eric Blake 已提交
81 82
            goto cleanup;

83
        if (virQEMUCapsParseDeviceStr(flags, help) < 0)
E
Eric Blake 已提交
84 85
            goto cleanup;
    }
86

87 88
    got = virQEMUCapsFlagsString(flags);
    expected = virQEMUCapsFlagsString(info->flags);
89 90 91 92
    if (!got || !expected)
        goto cleanup;

    if (STRNEQ(got, expected)) {
93 94
        VIR_TEST_DEBUG("%s: computed flags do not match: got %s, expected %s\n",
            info->name, got, expected);
95

96
        if (virTestGetDebug())
97 98
            printMismatchedFlags(flags, info->flags);

E
Eric Blake 已提交
99
        goto cleanup;
100 101 102
    }

    if (version != info->version) {
103 104
        fprintf(stderr, "%s: parsed versions do not match: got %u, expected %u\n",
                info->name, version, info->version);
E
Eric Blake 已提交
105
        goto cleanup;
106 107 108
    }

    if (is_kvm != info->is_kvm) {
E
Eric Blake 已提交
109
        fprintf(stderr,
110 111
                "%s: parsed is_kvm flag does not match: got %u, expected %u\n",
                info->name, is_kvm, info->is_kvm);
E
Eric Blake 已提交
112
        goto cleanup;
113 114
    }

115
    if (kvm_version != info->kvm_version) {
E
Eric Blake 已提交
116
        fprintf(stderr,
117 118
                "%s: parsed KVM versions do not match: got %u, expected %u\n",
                info->name, kvm_version, info->kvm_version);
E
Eric Blake 已提交
119
        goto cleanup;
120 121
    }

E
Eric Blake 已提交
122
    ret = 0;
123
 cleanup:
E
Eric Blake 已提交
124
    VIR_FREE(path);
125
    VIR_FREE(help);
126
    virObjectUnref(flags);
127 128
    VIR_FREE(got);
    VIR_FREE(expected);
E
Eric Blake 已提交
129
    return ret;
130 131 132
}

static int
E
Eric Blake 已提交
133
mymain(void)
134 135 136
{
    int ret = 0;

137
# define DO_TEST_FULL(name, version, is_kvm, kvm_version, error, ...)       \
138 139
    do {                                                                    \
        struct testInfo info = {                                            \
140
            name, NULL, version, is_kvm, kvm_version, error                 \
141
        };                                                                  \
142
        if (!(info.flags = virQEMUCapsNew()))                               \
143
            return EXIT_FAILURE;                                            \
144
        virQEMUCapsSetList(info.flags, __VA_ARGS__, QEMU_CAPS_LAST);        \
145
        if (virtTestRun("QEMU Help String Parsing " name,                   \
146
                        testHelpStrParsing, &info) < 0)                     \
147
            ret = -1;                                                       \
148
        virObjectUnref(info.flags);                                         \
149 150
    } while (0)

151 152 153
# define DO_TEST(name, version, is_kvm, kvm_version, ...) \
    DO_TEST_FULL(name, version, is_kvm, kvm_version, VIR_ERR_OK, __VA_ARGS__)

154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
    DO_TEST("qemu-0.12.1", 12001, 0, 0,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_ENABLE_KVM,
            QEMU_CAPS_SDL,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
            QEMU_CAPS_RTC,
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
175
            QEMU_CAPS_VGA_NONE,
176
            QEMU_CAPS_MIGRATE_QEMU_FD,
177
            QEMU_CAPS_DRIVE_AIO,
178
            QEMU_CAPS_NO_SHUTDOWN,
179
            QEMU_CAPS_PCI_ROMBAR,
180
            QEMU_CAPS_NO_ACPI,
181
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
182 183
            QEMU_CAPS_CPU_HOST,
            QEMU_CAPS_VNC);
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
    DO_TEST("qemu-kvm-0.12.1.2-rhel60", 12001, 1, 0,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_ENABLE_KVM,
201
            QEMU_CAPS_MONITOR_JSON,
202 203 204
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
205
            QEMU_CAPS_NETDEV,
206
            QEMU_CAPS_RTC,
207
            QEMU_CAPS_VHOST_NET,
208 209 210 211 212 213 214 215 216 217
            QEMU_CAPS_NO_KVM_PIT,
            QEMU_CAPS_TDF,
            QEMU_CAPS_PCI_CONFIGFD,
            QEMU_CAPS_NODEFCONFIG,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_NESTING,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
            QEMU_CAPS_VGA_QXL,
            QEMU_CAPS_SPICE,
218
            QEMU_CAPS_VGA_NONE,
219 220
            QEMU_CAPS_MIGRATE_QEMU_FD,
            QEMU_CAPS_DRIVE_AIO,
221 222
            QEMU_CAPS_DEVICE_SPICEVMC,
            QEMU_CAPS_PIIX3_USB_UHCI,
M
Marc-André Lureau 已提交
223
            QEMU_CAPS_PIIX4_USB_UHCI,
224
            QEMU_CAPS_USB_HUB,
225
            QEMU_CAPS_NO_SHUTDOWN,
226
            QEMU_CAPS_PCI_ROMBAR,
227
            QEMU_CAPS_NO_ACPI,
228
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
229
            QEMU_CAPS_CPU_HOST,
230 231 232 233
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
234
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
235
            QEMU_CAPS_DEVICE_USB_SERIAL,
236
            QEMU_CAPS_DEVICE_USB_NET,
L
Li Zhang 已提交
237
            QEMU_CAPS_DEVICE_USB_KBD,
238
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
239
            QEMU_CAPS_DEVICE_RTL8139,
240 241
            QEMU_CAPS_DEVICE_E1000,
            QEMU_CAPS_DEVICE_VIRTIO_NET);
242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
    DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_SDL,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
            QEMU_CAPS_RTC,
263
            QEMU_CAPS_VHOST_NET,
264 265 266 267 268 269 270
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_NO_KVM_PIT,
            QEMU_CAPS_TDF,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_NESTING,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
271
            QEMU_CAPS_VGA_NONE,
272
            QEMU_CAPS_MIGRATE_QEMU_FD,
273
            QEMU_CAPS_DRIVE_AIO,
274
            QEMU_CAPS_NO_SHUTDOWN,
275
            QEMU_CAPS_PCI_ROMBAR,
276
            QEMU_CAPS_NO_ACPI,
277
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
278 279
            QEMU_CAPS_CPU_HOST,
            QEMU_CAPS_VNC);
280 281 282 283 284 285
    DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
286
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_SDL,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_ENABLE_KVM,
            QEMU_CAPS_MONITOR_JSON,
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
            QEMU_CAPS_NETDEV,
            QEMU_CAPS_RTC,
305
            QEMU_CAPS_VHOST_NET,
306 307 308 309 310 311 312 313 314 315 316
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_NO_KVM_PIT,
            QEMU_CAPS_TDF,
            QEMU_CAPS_PCI_CONFIGFD,
            QEMU_CAPS_NODEFCONFIG,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_FSDEV,
            QEMU_CAPS_NESTING,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
            QEMU_CAPS_SPICE,
317
            QEMU_CAPS_VGA_NONE,
318
            QEMU_CAPS_MIGRATE_QEMU_FD,
319
            QEMU_CAPS_DRIVE_AIO,
320
            QEMU_CAPS_DEVICE_SPICEVMC,
321 322 323 324
            QEMU_CAPS_PCI_MULTIFUNCTION,
            QEMU_CAPS_PIIX3_USB_UHCI,
            QEMU_CAPS_PIIX4_USB_UHCI,
            QEMU_CAPS_VT82C686B_USB_UHCI,
M
Marc-André Lureau 已提交
325
            QEMU_CAPS_PCI_OHCI,
326
            QEMU_CAPS_USB_HUB,
327
            QEMU_CAPS_NO_SHUTDOWN,
328
            QEMU_CAPS_PCI_ROMBAR,
329
            QEMU_CAPS_NO_ACPI,
330
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
331
            QEMU_CAPS_CPU_HOST,
332
            QEMU_CAPS_SCSI_LSI,
333 334 335 336
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
337
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
338
            QEMU_CAPS_DEVICE_USB_SERIAL,
339
            QEMU_CAPS_DEVICE_USB_NET,
H
Han Cheng 已提交
340
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
341
            QEMU_CAPS_DEVICE_SCSI_GENERIC,
L
Li Zhang 已提交
342
            QEMU_CAPS_DEVICE_USB_KBD,
343
            QEMU_CAPS_DEVICE_USB_STORAGE,
344
            QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
345
            QEMU_CAPS_DEVICE_IVSHMEM,
346
            QEMU_CAPS_DEVICE_RTL8139,
347 348
            QEMU_CAPS_DEVICE_E1000,
            QEMU_CAPS_DEVICE_VIRTIO_NET);
349 350 351 352 353
    DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
354
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
355 356 357 358 359 360 361 362 363 364 365
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_ENABLE_KVM,
366
            QEMU_CAPS_MONITOR_JSON,
367 368 369
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
370
            QEMU_CAPS_NETDEV,
371
            QEMU_CAPS_RTC,
372
            QEMU_CAPS_VHOST_NET,
373 374 375 376 377 378 379 380 381 382 383 384 385
            QEMU_CAPS_NO_KVM_PIT,
            QEMU_CAPS_TDF,
            QEMU_CAPS_PCI_CONFIGFD,
            QEMU_CAPS_NODEFCONFIG,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_NESTING,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
            QEMU_CAPS_VGA_QXL,
            QEMU_CAPS_SPICE,
            QEMU_CAPS_VGA_NONE,
            QEMU_CAPS_MIGRATE_QEMU_FD,
            QEMU_CAPS_HDA_DUPLEX,
386
            QEMU_CAPS_DRIVE_AIO,
387 388
            QEMU_CAPS_CCID_PASSTHRU,
            QEMU_CAPS_CHARDEV_SPICEVMC,
389
            QEMU_CAPS_DEVICE_QXL_VGA,
390
            QEMU_CAPS_VIRTIO_TX_ALG,
391 392
            QEMU_CAPS_VIRTIO_IOEVENTFD,
            QEMU_CAPS_PIIX3_USB_UHCI,
M
Marc-André Lureau 已提交
393
            QEMU_CAPS_PIIX4_USB_UHCI,
394
            QEMU_CAPS_USB_HUB,
395
            QEMU_CAPS_NO_SHUTDOWN,
396
            QEMU_CAPS_PCI_ROMBAR,
397 398
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VIRTIO_BLK_SCSI,
399
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
400
            QEMU_CAPS_CPU_HOST,
401
            QEMU_CAPS_BLOCKIO,
402 403 404 405
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
406
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
407
            QEMU_CAPS_DEVICE_USB_SERIAL,
408
            QEMU_CAPS_DEVICE_USB_NET,
L
Li Zhang 已提交
409
            QEMU_CAPS_DEVICE_USB_KBD,
410
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
411
            QEMU_CAPS_DEVICE_RTL8139,
412 413
            QEMU_CAPS_DEVICE_E1000,
            QEMU_CAPS_DEVICE_VIRTIO_NET);
414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431
    DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_ENABLE_KVM,
            QEMU_CAPS_BALLOON,
432
            QEMU_CAPS_MONITOR_JSON,
433 434
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
435
            QEMU_CAPS_NETDEV,
436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468
            QEMU_CAPS_RTC,
            QEMU_CAPS_VHOST_NET,
            QEMU_CAPS_NO_KVM_PIT,
            QEMU_CAPS_TDF,
            QEMU_CAPS_PCI_CONFIGFD,
            QEMU_CAPS_NODEFCONFIG,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
            QEMU_CAPS_VGA_QXL,
            QEMU_CAPS_SPICE,
            QEMU_CAPS_VGA_NONE,
            QEMU_CAPS_MIGRATE_QEMU_FD,
            QEMU_CAPS_BOOTINDEX,
            QEMU_CAPS_HDA_DUPLEX,
            QEMU_CAPS_DRIVE_AIO,
            QEMU_CAPS_PCI_BOOTINDEX,
            QEMU_CAPS_CCID_PASSTHRU,
            QEMU_CAPS_CHARDEV_SPICEVMC,
            QEMU_CAPS_DEVICE_QXL_VGA,
            QEMU_CAPS_PCI_MULTIFUNCTION,
            QEMU_CAPS_VIRTIO_IOEVENTFD,
            QEMU_CAPS_SGA,
            QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
            QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
            QEMU_CAPS_VIRTIO_TX_ALG,
            QEMU_CAPS_VIRTIO_IOEVENTFD,
            QEMU_CAPS_PIIX3_USB_UHCI,
            QEMU_CAPS_PIIX4_USB_UHCI,
            QEMU_CAPS_USB_EHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_USB_HUB,
            QEMU_CAPS_NO_SHUTDOWN,
469
            QEMU_CAPS_PCI_ROMBAR,
470 471
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VIRTIO_BLK_SCSI,
O
Osier Yang 已提交
472
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
473
            QEMU_CAPS_DRIVE_COPY_ON_READ,
474
            QEMU_CAPS_CPU_HOST,
475
            QEMU_CAPS_SCSI_CD,
476
            QEMU_CAPS_BLOCKIO,
477 478 479
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
480
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
481
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
L
Li Zhang 已提交
482
            QEMU_CAPS_DEVICE_USB_KBD,
483
            QEMU_CAPS_DEVICE_USB_STORAGE,
484
            QEMU_CAPS_DEVICE_RTL8139,
485 486
            QEMU_CAPS_DEVICE_E1000,
            QEMU_CAPS_DEVICE_VIRTIO_NET);
J
Jiri Denemark 已提交
487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541
    DO_TEST("qemu-1.0", 1000000, 0, 0,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_SDL,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_ENABLE_KVM,
            QEMU_CAPS_MONITOR_JSON,
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
            QEMU_CAPS_NETDEV,
            QEMU_CAPS_RTC,
            QEMU_CAPS_VHOST_NET,
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_NODEFCONFIG,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_FSDEV,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
            QEMU_CAPS_VGA_QXL,
            QEMU_CAPS_SPICE,
            QEMU_CAPS_VGA_NONE,
            QEMU_CAPS_MIGRATE_QEMU_FD,
            QEMU_CAPS_BOOTINDEX,
            QEMU_CAPS_HDA_DUPLEX,
            QEMU_CAPS_DRIVE_AIO,
            QEMU_CAPS_CCID_EMULATED,
            QEMU_CAPS_CCID_PASSTHRU,
            QEMU_CAPS_CHARDEV_SPICEVMC,
            QEMU_CAPS_VIRTIO_TX_ALG,
            QEMU_CAPS_DEVICE_QXL_VGA,
            QEMU_CAPS_PCI_MULTIFUNCTION,
            QEMU_CAPS_VIRTIO_IOEVENTFD,
            QEMU_CAPS_SGA,
            QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
            QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
            QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC,
            QEMU_CAPS_PIIX3_USB_UHCI,
            QEMU_CAPS_PIIX4_USB_UHCI,
            QEMU_CAPS_USB_EHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_VT82C686B_USB_UHCI,
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_USB_HUB,
            QEMU_CAPS_NO_SHUTDOWN,
            QEMU_CAPS_PCI_ROMBAR,
542
            QEMU_CAPS_ICH9_AHCI,
543
            QEMU_CAPS_NO_ACPI,
544 545
            QEMU_CAPS_FSDEV_READONLY,
            QEMU_CAPS_VIRTIO_BLK_SCSI,
546
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
547
            QEMU_CAPS_CPU_HOST,
548
            QEMU_CAPS_FSDEV_WRITEOUT,
549
            QEMU_CAPS_SCSI_BLOCK,
550
            QEMU_CAPS_SCSI_CD,
551
            QEMU_CAPS_IDE_CD,
552
            QEMU_CAPS_SCSI_LSI,
553
            QEMU_CAPS_BLOCKIO,
554
            QEMU_CAPS_VNC,
555
            QEMU_CAPS_MACHINE_OPT,
556 557 558
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
559
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
560
            QEMU_CAPS_DEVICE_USB_SERIAL,
H
Han Cheng 已提交
561 562
            QEMU_CAPS_DEVICE_USB_NET,
            QEMU_CAPS_DEVICE_SCSI_GENERIC,
563
            QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
L
Li Zhang 已提交
564
            QEMU_CAPS_DEVICE_USB_KBD,
565
            QEMU_CAPS_DEVICE_USB_STORAGE,
566
            QEMU_CAPS_SPLASH_TIMEOUT,
567
            QEMU_CAPS_DEVICE_IVSHMEM,
568
            QEMU_CAPS_DEVICE_IOH3420,
569
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
570
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
571
            QEMU_CAPS_DEVICE_RTL8139,
572 573
            QEMU_CAPS_DEVICE_E1000,
            QEMU_CAPS_DEVICE_VIRTIO_NET);
J
Jiri Denemark 已提交
574
    DO_TEST("qemu-1.1.0", 1001000, 0, 0,
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_SDL,
            QEMU_CAPS_MIGRATE_QEMU_UNIX,
            QEMU_CAPS_CHARDEV,
            QEMU_CAPS_ENABLE_KVM,
            QEMU_CAPS_MONITOR_JSON,
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
            QEMU_CAPS_NETDEV,
            QEMU_CAPS_RTC,
            QEMU_CAPS_VHOST_NET,
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_NODEFCONFIG,
            QEMU_CAPS_BOOT_MENU,
            QEMU_CAPS_FSDEV,
            QEMU_CAPS_NAME_PROCESS,
            QEMU_CAPS_SMBIOS_TYPE,
            QEMU_CAPS_VGA_QXL,
            QEMU_CAPS_SPICE,
            QEMU_CAPS_VGA_NONE,
            QEMU_CAPS_MIGRATE_QEMU_FD,
            QEMU_CAPS_BOOTINDEX,
            QEMU_CAPS_HDA_DUPLEX,
            QEMU_CAPS_DRIVE_AIO,
            QEMU_CAPS_CCID_EMULATED,
            QEMU_CAPS_CCID_PASSTHRU,
            QEMU_CAPS_CHARDEV_SPICEVMC,
            QEMU_CAPS_VIRTIO_TX_ALG,
            QEMU_CAPS_DEVICE_QXL_VGA,
            QEMU_CAPS_PCI_MULTIFUNCTION,
            QEMU_CAPS_VIRTIO_IOEVENTFD,
            QEMU_CAPS_SGA,
            QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
            QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
            QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC,
            QEMU_CAPS_PIIX3_USB_UHCI,
            QEMU_CAPS_PIIX4_USB_UHCI,
            QEMU_CAPS_USB_EHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_VT82C686B_USB_UHCI,
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_USB_HUB,
            QEMU_CAPS_NO_SHUTDOWN,
            QEMU_CAPS_PCI_ROMBAR,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_FSDEV_READONLY,
            QEMU_CAPS_VIRTIO_BLK_SCSI,
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
            QEMU_CAPS_DRIVE_COPY_ON_READ,
            QEMU_CAPS_CPU_HOST,
            QEMU_CAPS_FSDEV_WRITEOUT,
            QEMU_CAPS_DRIVE_IOTUNE,
            QEMU_CAPS_SCSI_DISK_CHANNEL,
            QEMU_CAPS_SCSI_BLOCK,
            QEMU_CAPS_SCSI_CD,
            QEMU_CAPS_IDE_CD,
M
Marc-André Lureau 已提交
642
            QEMU_CAPS_NO_USER_CONFIG,
G
Gerd Hoffmann 已提交
643
            QEMU_CAPS_HDA_MICRO,
R
Richa Marwaha 已提交
644
            QEMU_CAPS_NEC_USB_XHCI,
645 646
            QEMU_CAPS_NETDEV_BRIDGE,
            QEMU_CAPS_SCSI_LSI,
647
            QEMU_CAPS_VIRTIO_SCSI,
648
            QEMU_CAPS_BLOCKIO,
649
            QEMU_CAPS_VNC,
650
            QEMU_CAPS_MACHINE_OPT,
651 652 653
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
654
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
655
            QEMU_CAPS_DEVICE_USB_SERIAL,
O
Olivia Yin 已提交
656
            QEMU_CAPS_DEVICE_USB_NET,
J
Ján Tomko 已提交
657
            QEMU_CAPS_DTB,
658
            QEMU_CAPS_IPV6_MIGRATION,
H
Han Cheng 已提交
659 660
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_SCSI_GENERIC,
661
            QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
662
            QEMU_CAPS_VNC_SHARE_POLICY,
L
Li Zhang 已提交
663
            QEMU_CAPS_DEVICE_USB_KBD,
664
            QEMU_CAPS_DEVICE_USB_STORAGE,
665
            QEMU_CAPS_OBJECT_USB_AUDIO,
666
            QEMU_CAPS_SPLASH_TIMEOUT,
667
            QEMU_CAPS_DEVICE_IVSHMEM,
668
            QEMU_CAPS_DEVICE_IOH3420,
669
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
670
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
671
            QEMU_CAPS_DEVICE_RTL8139,
672 673
            QEMU_CAPS_DEVICE_E1000,
            QEMU_CAPS_DEVICE_VIRTIO_NET);
674 675 676 677
    DO_TEST_FULL("qemu-1.2.0", 1002000, 0, 0, VIR_ERR_CONFIG_UNSUPPORTED,
            QEMU_CAPS_LAST);
    DO_TEST_FULL("qemu-kvm-1.2.0", 1002000, 1, 0, VIR_ERR_CONFIG_UNSUPPORTED,
            QEMU_CAPS_LAST);
678 679 680 681 682 683 684 685

    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

VIRT_TEST_MAIN(mymain)

#else

686 687 688 689
int main(void)
{
    return EXIT_AM_SKIP;
}
690 691

#endif /* WITH_QEMU */