static virCapsPtr testGetCaps(char *capsData, const testQemuData *data) { virQEMUCapsPtr qemuCaps = NULL; virCapsPtr caps = NULL; if ((qemuCaps = testQemuGetCaps(capsData)) == NULL) { fprintf(stderr, "failed to parse qemu capabilities flags"); goto error; } if ((caps = virCapabilitiesNew(data->guestarch, false, false)) == NULL) { fprintf(stderr, "failed to create the fake capabilities"); goto error; } if (virQEMUCapsInitGuestFromBinary(caps, "/usr/bin/qemu-system-i386", qemuCaps, "/usr/bin/qemu-system-i386", qemuCaps, data->guestarch) < 0) { fprintf(stderr, "failed to create the capabilities from qemu"); goto error; } virObjectUnref(qemuCaps); return caps; error: virObjectUnref(qemuCaps); return NULL; }
static int testQemuCaps(const void *opaque) { int ret = -1; const testQemuDataPtr data = (const testQemuDataPtr) opaque; char *repliesFile = NULL, *capsFile = NULL; char *replies = NULL, *caps = NULL; qemuMonitorTestPtr mon = NULL; virQEMUCapsPtr capsProvided = NULL, capsComputed = NULL; if (virAsprintf(&repliesFile, "%s/qemucapabilitiesdata/%s.replies", abs_srcdir, data->base) < 0 || virAsprintf(&capsFile, "%s/qemucapabilitiesdata/%s.caps", abs_srcdir, data->base) < 0) goto cleanup; if (virtTestLoadFile(repliesFile, &replies) < 0 || virtTestLoadFile(capsFile, &caps) < 0) goto cleanup; if (!(mon = testQemuFeedMonitor(replies, data->xmlopt))) goto cleanup; if (!(capsProvided = testQemuGetCaps(caps))) goto cleanup; if (!(capsComputed = virQEMUCapsNew())) goto cleanup; if (virQEMUCapsInitQMPMonitor(capsComputed, qemuMonitorTestGetMonitor(mon)) < 0) goto cleanup; if (testQemuCapsCompare(capsProvided, capsComputed) < 0) goto cleanup; ret = 0; cleanup: VIR_FREE(repliesFile); VIR_FREE(capsFile); VIR_FREE(replies); VIR_FREE(caps); qemuMonitorTestFree(mon); virObjectUnref(capsProvided); virObjectUnref(capsComputed); return ret; }