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

    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

VIRT_TEST_MAIN(mymain)

#else

617 618 619 620
int main(void)
{
    return EXIT_AM_SKIP;
}
621 622

#endif /* WITH_QEMU */