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

    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

VIRT_TEST_MAIN(mymain)

#else

633 634 635 636
int main(void)
{
    return EXIT_AM_SKIP;
}
637 638

#endif /* WITH_QEMU */