qemuhelptest.c 28.6 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
    DO_TEST("qemu-0.9.1", 9001, 0, 0,
            QEMU_CAPS_KQEMU,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
159
            QEMU_CAPS_NAME,
160 161
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VNC);
162 163 164 165 166
    DO_TEST("kvm-74", 9001, 1, 74,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
167
            QEMU_CAPS_NAME,
168 169 170 171 172
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_KVM_STDIO,
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_MEM_PATH,
173
            QEMU_CAPS_TDF,
174
            QEMU_CAPS_NO_SHUTDOWN,
175 176
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VNC);
177 178 179 180 181 182 183 184 185 186 187
    DO_TEST("kvm-83-rhel56", 9001, 1, 83,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
188
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
189 190 191 192 193 194 195 196 197 198
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_VGA,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_RTC_TD_HACK,
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_NO_KVM_PIT,
199
            QEMU_CAPS_TDF,
200 201
            QEMU_CAPS_DRIVE_READONLY,
            QEMU_CAPS_SMBIOS_TYPE,
202
            QEMU_CAPS_SPICE,
203
            QEMU_CAPS_NO_SHUTDOWN,
204 205
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VNC);
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
    DO_TEST("qemu-0.10.5", 10005, 0, 0,
            QEMU_CAPS_KQEMU,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_ENABLE_KVM,
            QEMU_CAPS_SDL,
            QEMU_CAPS_RTC_TD_HACK,
            QEMU_CAPS_NO_HPET,
224
            QEMU_CAPS_VGA_NONE,
225
            QEMU_CAPS_NO_SHUTDOWN,
226 227
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VNC);
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251
    DO_TEST("qemu-kvm-0.10.5", 10005, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_SDL,
            QEMU_CAPS_RTC_TD_HACK,
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_NO_KVM_PIT,
            QEMU_CAPS_TDF,
            QEMU_CAPS_NESTING,
252
            QEMU_CAPS_VGA_NONE,
253
            QEMU_CAPS_NO_SHUTDOWN,
254 255
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VNC);
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
    DO_TEST("kvm-86", 10050, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_SDL,
            QEMU_CAPS_RTC_TD_HACK,
            QEMU_CAPS_NO_HPET,
            QEMU_CAPS_NO_KVM_PIT,
            QEMU_CAPS_TDF,
            QEMU_CAPS_NESTING,
            QEMU_CAPS_SMBIOS_TYPE,
280
            QEMU_CAPS_VGA_NONE,
281
            QEMU_CAPS_NO_SHUTDOWN,
282 283
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VNC);
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
    DO_TEST("qemu-kvm-0.11.0-rc2", 10092, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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_VGA,
            QEMU_CAPS_0_10,
            QEMU_CAPS_PCIDEVICE,
            QEMU_CAPS_MEM_PATH,
            QEMU_CAPS_ENABLE_KVM,
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_SDL,
            QEMU_CAPS_RTC_TD_HACK,
            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,
313
            QEMU_CAPS_VGA_NONE,
314
            QEMU_CAPS_NO_SHUTDOWN,
315 316
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VNC);
317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343
    DO_TEST("qemu-0.12.1", 12001, 0, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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_XEN_DOMID,
            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,
344
            QEMU_CAPS_VGA_NONE,
345
            QEMU_CAPS_MIGRATE_QEMU_FD,
346
            QEMU_CAPS_DRIVE_AIO,
347
            QEMU_CAPS_NO_SHUTDOWN,
348
            QEMU_CAPS_PCI_ROMBAR,
349
            QEMU_CAPS_NO_ACPI,
350
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
351 352
            QEMU_CAPS_CPU_HOST,
            QEMU_CAPS_VNC);
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
    DO_TEST("qemu-kvm-0.12.1.2-rhel60", 12001, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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,
375
            QEMU_CAPS_MONITOR_JSON,
376 377 378
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
379
            QEMU_CAPS_NETDEV,
380
            QEMU_CAPS_RTC,
381
            QEMU_CAPS_VHOST_NET,
382 383 384 385 386 387 388 389 390 391
            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,
392
            QEMU_CAPS_VGA_NONE,
393 394
            QEMU_CAPS_MIGRATE_QEMU_FD,
            QEMU_CAPS_DRIVE_AIO,
395 396
            QEMU_CAPS_DEVICE_SPICEVMC,
            QEMU_CAPS_PIIX3_USB_UHCI,
M
Marc-André Lureau 已提交
397
            QEMU_CAPS_PIIX4_USB_UHCI,
398
            QEMU_CAPS_USB_HUB,
399
            QEMU_CAPS_NO_SHUTDOWN,
400
            QEMU_CAPS_PCI_ROMBAR,
401
            QEMU_CAPS_NO_ACPI,
402
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
403
            QEMU_CAPS_CPU_HOST,
404 405 406 407
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
408
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
409
            QEMU_CAPS_DEVICE_USB_SERIAL,
410
            QEMU_CAPS_DEVICE_USB_NET,
L
Li Zhang 已提交
411
            QEMU_CAPS_DEVICE_USB_KBD,
412
            QEMU_CAPS_DEVICE_PCI_BRIDGE);
413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438
    DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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,
439
            QEMU_CAPS_VHOST_NET,
440 441 442 443 444 445 446
            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,
447
            QEMU_CAPS_VGA_NONE,
448
            QEMU_CAPS_MIGRATE_QEMU_FD,
449
            QEMU_CAPS_DRIVE_AIO,
450
            QEMU_CAPS_NO_SHUTDOWN,
451
            QEMU_CAPS_PCI_ROMBAR,
452
            QEMU_CAPS_NO_ACPI,
453
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
454 455
            QEMU_CAPS_CPU_HOST,
            QEMU_CAPS_VNC);
456 457 458 459 460 461 462 463 464 465 466
    DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_DRIVE_BOOT,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
467
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486
            QEMU_CAPS_KVM,
            QEMU_CAPS_DRIVE_FORMAT,
            QEMU_CAPS_DRIVE_SERIAL,
            QEMU_CAPS_XEN_DOMID,
            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,
487
            QEMU_CAPS_VHOST_NET,
488 489 490 491 492 493 494 495 496 497 498
            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,
499
            QEMU_CAPS_VGA_NONE,
500
            QEMU_CAPS_MIGRATE_QEMU_FD,
501
            QEMU_CAPS_DRIVE_AIO,
502
            QEMU_CAPS_DEVICE_SPICEVMC,
503 504 505 506
            QEMU_CAPS_PCI_MULTIFUNCTION,
            QEMU_CAPS_PIIX3_USB_UHCI,
            QEMU_CAPS_PIIX4_USB_UHCI,
            QEMU_CAPS_VT82C686B_USB_UHCI,
M
Marc-André Lureau 已提交
507
            QEMU_CAPS_PCI_OHCI,
508
            QEMU_CAPS_USB_HUB,
509
            QEMU_CAPS_NO_SHUTDOWN,
510
            QEMU_CAPS_PCI_ROMBAR,
511
            QEMU_CAPS_NO_ACPI,
512
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
513
            QEMU_CAPS_CPU_HOST,
514
            QEMU_CAPS_SCSI_LSI,
515 516 517 518
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
519
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
520
            QEMU_CAPS_DEVICE_USB_SERIAL,
521
            QEMU_CAPS_DEVICE_USB_NET,
H
Han Cheng 已提交
522
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
523
            QEMU_CAPS_DEVICE_SCSI_GENERIC,
L
Li Zhang 已提交
524
            QEMU_CAPS_DEVICE_USB_KBD,
525
            QEMU_CAPS_DEVICE_USB_STORAGE,
526 527
            QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
            QEMU_CAPS_DEVICE_IVSHMEM);
528 529 530 531 532 533 534 535 536 537
    DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            QEMU_CAPS_VNET_HDR,
            QEMU_CAPS_MIGRATE_QEMU_TCP,
            QEMU_CAPS_MIGRATE_QEMU_EXEC,
            QEMU_CAPS_DRIVE_CACHE_V2,
538
            QEMU_CAPS_DRIVE_CACHE_UNSAFE,
539 540 541 542 543 544 545 546 547 548 549
            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,
550
            QEMU_CAPS_MONITOR_JSON,
551 552 553
            QEMU_CAPS_BALLOON,
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
554
            QEMU_CAPS_NETDEV,
555
            QEMU_CAPS_RTC,
556
            QEMU_CAPS_VHOST_NET,
557 558 559 560 561 562 563 564 565 566 567 568 569
            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,
570
            QEMU_CAPS_DRIVE_AIO,
571 572
            QEMU_CAPS_CCID_PASSTHRU,
            QEMU_CAPS_CHARDEV_SPICEVMC,
573
            QEMU_CAPS_DEVICE_QXL_VGA,
574
            QEMU_CAPS_VIRTIO_TX_ALG,
575 576
            QEMU_CAPS_VIRTIO_IOEVENTFD,
            QEMU_CAPS_PIIX3_USB_UHCI,
M
Marc-André Lureau 已提交
577
            QEMU_CAPS_PIIX4_USB_UHCI,
578
            QEMU_CAPS_USB_HUB,
579
            QEMU_CAPS_NO_SHUTDOWN,
580
            QEMU_CAPS_PCI_ROMBAR,
581 582
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VIRTIO_BLK_SCSI,
583
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
584
            QEMU_CAPS_CPU_HOST,
585
            QEMU_CAPS_BLOCKIO,
586 587 588 589
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
590
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
591
            QEMU_CAPS_DEVICE_USB_SERIAL,
592
            QEMU_CAPS_DEVICE_USB_NET,
L
Li Zhang 已提交
593
            QEMU_CAPS_DEVICE_USB_KBD,
594
            QEMU_CAPS_DEVICE_PCI_BRIDGE);
595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617
    DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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,
618
            QEMU_CAPS_MONITOR_JSON,
619 620
            QEMU_CAPS_DEVICE,
            QEMU_CAPS_SMP_TOPOLOGY,
621
            QEMU_CAPS_NETDEV,
622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654
            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,
655
            QEMU_CAPS_PCI_ROMBAR,
656 657
            QEMU_CAPS_NO_ACPI,
            QEMU_CAPS_VIRTIO_BLK_SCSI,
O
Osier Yang 已提交
658
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
659
            QEMU_CAPS_DRIVE_COPY_ON_READ,
660
            QEMU_CAPS_CPU_HOST,
661
            QEMU_CAPS_SCSI_CD,
662
            QEMU_CAPS_BLOCKIO,
663 664 665
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
666
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
667
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
L
Li Zhang 已提交
668
            QEMU_CAPS_DEVICE_USB_KBD,
669
            QEMU_CAPS_DEVICE_USB_STORAGE);
J
Jiri Denemark 已提交
670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730
    DO_TEST("qemu-1.0", 1000000, 0, 0,
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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_XEN_DOMID,
            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,
731
            QEMU_CAPS_ICH9_AHCI,
732
            QEMU_CAPS_NO_ACPI,
733 734
            QEMU_CAPS_FSDEV_READONLY,
            QEMU_CAPS_VIRTIO_BLK_SCSI,
735
            QEMU_CAPS_VIRTIO_BLK_SG_IO,
736
            QEMU_CAPS_CPU_HOST,
737
            QEMU_CAPS_FSDEV_WRITEOUT,
738
            QEMU_CAPS_SCSI_BLOCK,
739
            QEMU_CAPS_SCSI_CD,
740
            QEMU_CAPS_IDE_CD,
741
            QEMU_CAPS_SCSI_LSI,
742
            QEMU_CAPS_BLOCKIO,
743
            QEMU_CAPS_VNC,
744
            QEMU_CAPS_MACHINE_OPT,
745 746 747
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
748
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
749
            QEMU_CAPS_DEVICE_USB_SERIAL,
H
Han Cheng 已提交
750 751
            QEMU_CAPS_DEVICE_USB_NET,
            QEMU_CAPS_DEVICE_SCSI_GENERIC,
752
            QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
L
Li Zhang 已提交
753
            QEMU_CAPS_DEVICE_USB_KBD,
754
            QEMU_CAPS_DEVICE_USB_STORAGE,
755
            QEMU_CAPS_SPLASH_TIMEOUT,
756
            QEMU_CAPS_DEVICE_IVSHMEM,
757
            QEMU_CAPS_DEVICE_IOH3420,
758 759
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM);
J
Jiri Denemark 已提交
760
    DO_TEST("qemu-1.1.0", 1001000, 0, 0,
761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833
            QEMU_CAPS_VNC_COLON,
            QEMU_CAPS_NO_REBOOT,
            QEMU_CAPS_DRIVE,
            QEMU_CAPS_NAME,
            QEMU_CAPS_UUID,
            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_XEN_DOMID,
            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 已提交
834
            QEMU_CAPS_NO_USER_CONFIG,
G
Gerd Hoffmann 已提交
835
            QEMU_CAPS_HDA_MICRO,
R
Richa Marwaha 已提交
836
            QEMU_CAPS_NEC_USB_XHCI,
837 838
            QEMU_CAPS_NETDEV_BRIDGE,
            QEMU_CAPS_SCSI_LSI,
839
            QEMU_CAPS_VIRTIO_SCSI,
840
            QEMU_CAPS_BLOCKIO,
841
            QEMU_CAPS_VNC,
842
            QEMU_CAPS_MACHINE_OPT,
843 844 845
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_DEVICE_VGA,
            QEMU_CAPS_DEVICE_CIRRUS_VGA,
G
Guannan Ren 已提交
846
            QEMU_CAPS_DEVICE_VMWARE_SVGA,
G
Guannan Ren 已提交
847
            QEMU_CAPS_DEVICE_USB_SERIAL,
O
Olivia Yin 已提交
848
            QEMU_CAPS_DEVICE_USB_NET,
J
Ján Tomko 已提交
849
            QEMU_CAPS_DTB,
850
            QEMU_CAPS_IPV6_MIGRATION,
H
Han Cheng 已提交
851 852
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_SCSI_GENERIC,
853
            QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
854
            QEMU_CAPS_VNC_SHARE_POLICY,
L
Li Zhang 已提交
855
            QEMU_CAPS_DEVICE_USB_KBD,
856
            QEMU_CAPS_DEVICE_USB_STORAGE,
857
            QEMU_CAPS_OBJECT_USB_AUDIO,
858
            QEMU_CAPS_SPLASH_TIMEOUT,
859
            QEMU_CAPS_DEVICE_IVSHMEM,
860
            QEMU_CAPS_DEVICE_IOH3420,
861 862
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM);
863 864 865 866
    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);
867 868 869 870 871 872 873 874

    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

VIRT_TEST_MAIN(mymain)

#else

875 876 877 878
int main(void)
{
    return EXIT_AM_SKIP;
}
879 880

#endif /* WITH_QEMU */