static int testQemuHotplugCheckResult(virDomainObjPtr vm, const char *expected, bool fail) { char *actual; int ret; vm->def->id = -1; actual = virDomainDefFormat(vm->def, VIR_DOMAIN_DEF_FORMAT_SECURE); if (!actual) return -1; vm->def->id = QEMU_HOTPLUG_TEST_DOMAIN_ID; if (STREQ(expected, actual)) { if (fail) VIR_TEST_VERBOSE("domain XML should not match the expected result\n"); ret = 0; } else { if (!fail) virtTestDifference(stderr, expected, actual); ret = -1; } VIR_FREE(actual); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml) { char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virDomainDefPtr def = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(def = virDomainDefParseString(driver.caps, inXmlData, VIR_DOMAIN_XML_INACTIVE))) goto fail; if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: free(inXmlData); free(outXmlData); free(actual); virDomainDefFree(def); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml) { char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virSecretDefPtr secret = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(secret = virSecretDefParseString(inXmlData))) goto fail; if (!(actual = virSecretDefFormat(secret))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virSecretDefFree(secret); return ret; }
static int testCompareXMLToXMLFiles(const char *xml) { char *xmlData = NULL; char *actual = NULL; int ret = -1; virInterfaceDefPtr dev = NULL; if (virtTestLoadFile(xml, &xmlData) < 0) goto fail; if (!(dev = virInterfaceDefParseString(xmlData))) goto fail; if (!(actual = virInterfaceDefFormat(dev))) goto fail; if (STRNEQ(xmlData, actual)) { virtTestDifference(stderr, xmlData, actual); goto fail; } ret = 0; fail: free(xmlData); free(actual); virInterfaceDefFree(dev); return ret; }
static int cpuTestCompareXML(const char *arch, const virCPUDefPtr cpu, const char *name) { char *xml = NULL; char *expected = NULL; char *actual = NULL; int ret = -1; if (virAsprintf(&xml, "%s/cputestdata/%s-%s.xml", abs_srcdir, arch, name) < 0) goto cleanup; if (virtTestLoadFile(xml, &expected) < 0) goto cleanup; if (!(actual = virCPUDefFormat(cpu, NULL, 0))) goto cleanup; if (STRNEQ(expected, actual)) { virtTestDifference(stderr, expected, actual); goto cleanup; } ret = 0; cleanup: free(xml); free(expected); free(actual); return ret; }
static int testQemuHotplugCheckResult(virDomainObjPtr vm, const char *expected, bool fail) { char *actual; int ret; actual = virDomainDefFormat(vm->def, VIR_DOMAIN_XML_SECURE); if (!actual) return -1; if (STREQ(expected, actual)) { if (fail && virTestGetVerbose()) fprintf(stderr, "domain XML should not match the expected result\n"); ret = 0; } else { if (!fail) virtTestDifference(stderr, expected, actual); ret = -1; } VIR_FREE(actual); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml) { char inXmlData[MAX_FILE]; char *inXmlPtr = &(inXmlData[0]); char outXmlData[MAX_FILE]; char *outXmlPtr = &(outXmlData[0]); char *actual = NULL; int ret = -1; virNetworkDefPtr dev = NULL; if (virtTestLoadFile(inxml, &inXmlPtr, MAX_FILE) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlPtr, MAX_FILE) < 0) goto fail; if (!(dev = virNetworkDefParseString(inXmlData))) goto fail; if (!(actual = virNetworkDefFormat(dev))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: free(actual); virNetworkDefFree(dev); return ret; }
static int testCompareOutputLit(const char *expectData, const char *filter, const char *const argv[]) { int result = -1; char *actualData = NULL; if (virtTestCaptureProgramOutput(argv, &actualData, 4096) < 0) goto cleanup; if (filter && testFilterLine(actualData, filter) < 0) goto cleanup; if (STRNEQ(expectData, actualData)) { virtTestDifference(stderr, expectData, actualData); goto cleanup; } result = 0; cleanup: VIR_FREE(actualData); return result; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml, unsigned int flags) { char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virNetworkDefPtr dev = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(dev = virNetworkDefParseString(inXmlData))) goto fail; if (!(actual = virNetworkDefFormat(dev, flags))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virNetworkDefFree(dev); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live) { char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virDomainDefPtr def = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(def = virDomainDefParseString(inXmlData, driver.caps, driver.xmlopt, QEMU_EXPECTED_VIRT_TYPES, live ? 0 : VIR_DOMAIN_XML_INACTIVE))) goto fail; if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virDomainDefFree(def); return ret; }
static int testCompareXMLToXMLFiles(const char *xml) { char xmlData[MAX_FILE]; char *xmlPtr = &(xmlData[0]); char *actual = NULL; int ret = -1; virDomainDefPtr vmdef = NULL; if (virtTestLoadFile(xml, &xmlPtr, MAX_FILE) < 0) goto fail; if (!(vmdef = virDomainDefParseString(driver.caps, xmlData, VIR_DOMAIN_XML_INACTIVE))) goto fail; if (!(actual = virDomainDefFormat(vmdef, 0))) goto fail; if (STRNEQ(xmlData, actual)) { virtTestDifference(stderr, xmlData, actual); goto fail; } ret = 0; fail: free(actual); virDomainDefFree(vmdef); return ret; }
static int testCompareParseXML(const char *xmcfg, const char *xml, int xendConfigVersion) { char *xmlData = NULL; char *xmcfgData = NULL; char *gotxmcfgData = NULL; virConfPtr conf = NULL; int ret = -1; virConnectPtr conn = NULL; int wrote = 4096; struct _xenUnifiedPrivate priv; virDomainDefPtr def = NULL; if (VIR_ALLOC_N(gotxmcfgData, wrote) < 0) goto fail; conn = virGetConnect(); if (!conn) goto fail; if (virtTestLoadFile(xml, &xmlData) < 0) goto fail; if (virtTestLoadFile(xmcfg, &xmcfgData) < 0) goto fail; /* Many puppies died to bring you this code. */ priv.xendConfigVersion = xendConfigVersion; priv.caps = caps; conn->privateData = &priv; if (!(def = virDomainDefParseString(caps, xmlData, 1 << VIR_DOMAIN_VIRT_XEN, VIR_DOMAIN_XML_INACTIVE))) goto fail; if (!(conf = xenFormatXM(conn, def, xendConfigVersion))) goto fail; if (virConfWriteMem(gotxmcfgData, &wrote, conf) < 0) goto fail; gotxmcfgData[wrote] = '\0'; if (STRNEQ(xmcfgData, gotxmcfgData)) { virtTestDifference(stderr, xmcfgData, gotxmcfgData); goto fail; } ret = 0; fail: free(xmlData); free(xmcfgData); free(gotxmcfgData); if (conf) virConfFree(conf); virDomainDefFree(def); virUnrefConnect(conn); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml, const char *uuid, bool internal, bool redefine) { char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virDomainSnapshotDefPtr def = NULL; unsigned int flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS; if (internal) flags |= VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL; if (redefine) flags |= VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto cleanup; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto cleanup; if (!(def = virDomainSnapshotDefParseString(inXmlData, driver.caps, driver.xmlopt, QEMU_EXPECTED_VIRT_TYPES, flags))) goto cleanup; if (!(actual = virDomainSnapshotDefFormat(uuid, def, VIR_DOMAIN_XML_SECURE, internal))) goto cleanup; if (!redefine) { if (!(actual = testFilterXML(actual))) goto cleanup; if (!(outXmlData = testFilterXML(outXmlData))) goto cleanup; } if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto cleanup; } ret = 0; cleanup: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virDomainSnapshotDefFree(def); return ret; }
static int testCompareXMLToXMLFiles(const char *netxml, const char *updatexml, const char *outxml, unsigned int flags, unsigned int command, unsigned int section, int parentIndex, bool expectFailure) { char *netXmlData = NULL; char *updateXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virNetworkDefPtr def = NULL; if (virtTestLoadFile(netxml, &netXmlData) < 0) goto error; if (virtTestLoadFile(updatexml, &updateXmlData) < 0) goto error; if (!(def = virNetworkDefParseString(netXmlData))) goto fail; if (virNetworkDefUpdateSection(def, command, section, parentIndex, updateXmlData, 0) < 0) goto fail; if (!(actual = virNetworkDefFormat(def, flags))) goto fail; if (!expectFailure) { if (virtTestLoadFile(outxml, &outXmlData) < 0) goto error; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } } ret = 0; fail: if (expectFailure) { if (ret == 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", "Failed to fail."); ret = -1; } else { virResetLastError(); ret = 0; } } error: VIR_FREE(netXmlData); VIR_FREE(updateXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virNetworkDefFree(def); return ret; }
static int testCompareXMLToArgvFiles(const char *inxml, const char *outargv, dnsmasqCapsPtr caps) { char *inXmlData = NULL; char *outArgvData = NULL; char *actual = NULL; int ret = -1; virNetworkDefPtr dev = NULL; virNetworkObjPtr obj = NULL; virCommandPtr cmd = NULL; char *pidfile = NULL; dnsmasqContext *dctx = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outargv, &outArgvData) < 0) goto fail; if (replaceTokens(&outArgvData, "@DNSMASQ@", DNSMASQ)) goto fail; if (!(dev = virNetworkDefParseString(inXmlData))) goto fail; if (VIR_ALLOC(obj) < 0) goto fail; obj->def = dev; dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq"); if (dctx == NULL) goto fail; if (networkBuildDhcpDaemonCommandLine(obj, &cmd, pidfile, dctx, caps) < 0) goto fail; if (!(actual = virCommandToString(cmd))) goto fail; if (STRNEQ(outArgvData, actual)) { virtTestDifference(stderr, outArgvData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outArgvData); VIR_FREE(actual); VIR_FREE(pidfile); virCommandFree(cmd); virNetworkObjFree(obj); dnsmasqContextFree(dctx); return ret; }
static int testFirewallSingleGroup(const void *opaque) { virBuffer cmdbuf = VIR_BUFFER_INITIALIZER; virFirewallPtr fw = NULL; int ret = -1; const char *actual = NULL; const char *expected = IPTABLES_PATH " -A INPUT --source-host 192.168.122.1 --jump ACCEPT\n" IPTABLES_PATH " -A INPUT --source-host '!192.168.122.1' --jump REJECT\n"; const struct testFirewallData *data = opaque; fwDisabled = data->fwDisabled; if (virFirewallSetBackend(data->tryBackend) < 0) goto cleanup; if (data->expectBackend == VIR_FIREWALL_BACKEND_DIRECT) virCommandSetDryRun(&cmdbuf, NULL, NULL); else fwBuf = &cmdbuf; fw = virFirewallNew(); virFirewallStartTransaction(fw, 0); virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4, "-A", "INPUT", "--source-host", "192.168.122.1", "--jump", "ACCEPT", NULL); virFirewallAddRule(fw, VIR_FIREWALL_LAYER_IPV4, "-A", "INPUT", "--source-host", "!192.168.122.1", "--jump", "REJECT", NULL); if (virFirewallApply(fw) < 0) goto cleanup; if (virBufferError(&cmdbuf)) goto cleanup; actual = virBufferCurrentContent(&cmdbuf); if (STRNEQ_NULLABLE(expected, actual)) { fprintf(stderr, "Unexected command execution\n"); virtTestDifference(stderr, expected, actual); goto cleanup; } ret = 0; cleanup: virBufferFreeAndReset(&cmdbuf); fwBuf = NULL; virCommandSetDryRun(NULL, NULL, NULL); virFirewallFree(fw); return ret; }
static int linuxTestCompareFiles(const char *cpuinfofile, char *sysfs_dir, virArch arch, const char *outputfile) { int ret = -1; char *actualData = NULL; char *expectData = NULL; virNodeInfo nodeinfo; FILE *cpuinfo; if (virtTestLoadFile(outputfile, &expectData) < 0) goto fail; cpuinfo = fopen(cpuinfofile, "r"); if (!cpuinfo) { fprintf(stderr, "unable to open: %s : %s\n", cpuinfofile, strerror(errno)); goto fail; } memset(&nodeinfo, 0, sizeof(nodeinfo)); if (linuxNodeInfoCPUPopulate(cpuinfo, sysfs_dir, arch, &nodeinfo) < 0) { if (virTestGetDebug()) { virErrorPtr error = virSaveLastError(); if (error && error->code != VIR_ERR_OK) fprintf(stderr, "\n%s\n", error->message); virFreeError(error); } VIR_FORCE_FCLOSE(cpuinfo); goto fail; } VIR_FORCE_FCLOSE(cpuinfo); if (virAsprintf(&actualData, "CPUs: %u/%u, MHz: %u, Nodes: %u, Sockets: %u, " "Cores: %u, Threads: %u\n", nodeinfo.cpus, VIR_NODEINFO_MAXCPUS(nodeinfo), nodeinfo.mhz, nodeinfo.nodes, nodeinfo.sockets, nodeinfo.cores, nodeinfo.threads) < 0) goto fail; if (STRNEQ(actualData, expectData)) { virtTestDifference(stderr, expectData, actualData); goto fail; } ret = 0; fail: VIR_FREE(expectData); VIR_FREE(actualData); return ret; }
static int testCompareXMLToArgvFiles(const char *xml, const char *cmdfile, bool expect_warning) { char *expectxml = NULL; char *actualxml = NULL; char *cmd = NULL; int ret = -1; virDomainDefPtr vmdef = NULL; if (virtTestLoadFile(cmdfile, &cmd) < 0) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (!(vmdef = qemuParseCommandLineString(driver.caps, driver.xmlopt, cmd, NULL, NULL, NULL))) goto fail; if (!virtTestOOMActive()) { char *log; if ((log = virtTestLogContentAndReset()) == NULL) goto fail; if ((*log != '\0') != expect_warning) { VIR_FREE(log); goto fail; } VIR_FREE(log); } if (!virDomainDefCheckABIStability(vmdef, vmdef)) { fprintf(stderr, "ABI stability check failed on %s", xml); goto fail; } if (!(actualxml = virDomainDefFormat(vmdef, 0))) goto fail; if (blankProblemElements(expectxml) < 0 || blankProblemElements(actualxml) < 0) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: VIR_FREE(expectxml); VIR_FREE(actualxml); VIR_FREE(cmd); virDomainDefFree(vmdef); return ret; }
static int testCompareFiles(virArch hostmachine, const char *xml_rel, const char *cpuinfo_rel, const char *capabilities_rel) { char *expectxml = NULL; char *actualxml = NULL; FILE *fp1 = NULL, *fp2 = NULL; virCapsPtr caps = NULL; int ret = -1; char *xml = NULL; char *cpuinfo = NULL; char *capabilities = NULL; if (virAsprintf(&xml, "%s/%s", abs_srcdir, xml_rel) < 0 || virAsprintf(&cpuinfo, "%s/%s", abs_srcdir, cpuinfo_rel) < 0 || virAsprintf(&capabilities, "%s/%s", abs_srcdir, capabilities_rel) < 0) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (!(fp1 = fopen(cpuinfo, "r"))) goto fail; if (!(fp2 = fopen(capabilities, "r"))) goto fail; if (!(caps = xenHypervisorMakeCapabilitiesInternal(NULL, hostmachine, fp1, fp2))) goto fail; if (!(actualxml = virCapabilitiesFormatXML(caps))) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: VIR_FREE(expectxml); VIR_FREE(actualxml); VIR_FREE(xml); VIR_FREE(cpuinfo); VIR_FREE(capabilities); VIR_FORCE_FCLOSE(fp1); VIR_FORCE_FCLOSE(fp2); virObjectUnref(caps); return ret; }
static int testCompareFiles(const char *hostmachine, const char *xml_rel, const char *cpuinfo_rel, const char *capabilities_rel) { char xmlData[MAX_FILE]; char *expectxml = &(xmlData[0]); char *actualxml = NULL; FILE *fp1 = NULL, *fp2 = NULL; virCapsPtr caps = NULL; int ret = -1; char xml[PATH_MAX]; char cpuinfo[PATH_MAX]; char capabilities[PATH_MAX]; snprintf(xml, sizeof xml - 1, "%s/%s", abs_srcdir, xml_rel); snprintf(cpuinfo, sizeof cpuinfo - 1, "%s/%s", abs_srcdir, cpuinfo_rel); snprintf(capabilities, sizeof capabilities - 1, "%s/%s", abs_srcdir, capabilities_rel); if (virtTestLoadFile(xml, &expectxml, MAX_FILE) < 0) goto fail; if (!(fp1 = fopen(cpuinfo, "r"))) goto fail; if (!(fp2 = fopen(capabilities, "r"))) goto fail; if (!(caps = xenHypervisorMakeCapabilitiesInternal(NULL, hostmachine, fp1, fp2))) goto fail; if (!(actualxml = virCapabilitiesFormatXML(caps))) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: free(actualxml); VIR_FORCE_FCLOSE(fp1); VIR_FORCE_FCLOSE(fp2); virCapabilitiesFree(caps); return ret; }
static int testCompareFormatXML(const char *xmcfg, const char *xml, int xendConfigVersion) { char *xmlData = NULL; char *xmcfgData = NULL; char *gotxml = NULL; virConfPtr conf = NULL; int ret = -1; virConnectPtr conn; struct _xenUnifiedPrivate priv; virDomainDefPtr def = NULL; conn = virGetConnect(); if (!conn) goto fail; if (virtTestLoadFile(xml, &xmlData) < 0) goto fail; if (virtTestLoadFile(xmcfg, &xmcfgData) < 0) goto fail; /* Many puppies died to bring you this code. */ priv.xendConfigVersion = xendConfigVersion; priv.caps = caps; conn->privateData = &priv; if (!(conf = virConfReadMem(xmcfgData, strlen(xmcfgData), 0))) goto fail; if (!(def = xenParseXM(conf, priv.xendConfigVersion, priv.caps))) goto fail; if (!(gotxml = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE))) goto fail; if (STRNEQ(xmlData, gotxml)) { virtTestDifference(stderr, xmlData, gotxml); goto fail; } ret = 0; fail: if (conf) virConfFree(conf); VIR_FREE(xmlData); VIR_FREE(xmcfgData); VIR_FREE(gotxml); virDomainDefFree(def); virObjectUnref(conn); return ret; }
static int testCompareXMLToConfFiles(const char *inxml, const char *outconf, dnsmasqCapsPtr caps) { char *inXmlData = NULL; char *outConfData = NULL; char *actual = NULL; int ret = -1; virNetworkDefPtr dev = NULL; virNetworkObjPtr obj = NULL; virCommandPtr cmd = NULL; char *pidfile = NULL; dnsmasqContext *dctx = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outconf, &outConfData) < 0) goto fail; if (!(dev = virNetworkDefParseString(inXmlData))) goto fail; if (VIR_ALLOC(obj) < 0) goto fail; obj->def = dev; dctx = dnsmasqContextNew(dev->name, "/var/lib/libvirt/dnsmasq"); if (dctx == NULL) goto fail; if (networkDnsmasqConfContents(obj, pidfile, &actual, dctx, caps) < 0) goto fail; if (STRNEQ(outConfData, actual)) { virtTestDifference(stderr, outConfData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outConfData); VIR_FREE(actual); VIR_FREE(pidfile); virCommandFree(cmd); virNetworkObjFree(obj); dnsmasqContextFree(dctx); return ret; }
static int testCompareFiles(const char *xml, const char *vmx, int virtualHW_version) { int result = -1; char *xmlData = NULL; char *vmxData = NULL; char *formatted = NULL; virDomainDefPtr def = NULL; if (virtTestLoadFile(xml, &xmlData) < 0) { goto failure; } if (virtTestLoadFile(vmx, &vmxData) < 0) { goto failure; } def = virDomainDefParseString(xmlData, caps, xmlopt, 1 << VIR_DOMAIN_VIRT_VMWARE, VIR_DOMAIN_XML_INACTIVE); if (def == NULL) { goto failure; } if (!virDomainDefCheckABIStability(def, def)) { fprintf(stderr, "ABI stability check failed on %s", xml); goto failure; } formatted = virVMXFormatConfig(&ctx, xmlopt, def, virtualHW_version); if (formatted == NULL) { goto failure; } if (STRNEQ(vmxData, formatted)) { virtTestDifference(stderr, vmxData, formatted); goto failure; } result = 0; failure: VIR_FREE(xmlData); VIR_FREE(vmxData); VIR_FREE(formatted); virDomainDefFree(def); return result; }
static int checkoutput(const char *testname, char *prefix) { int ret = -1; char *expectname = NULL; char *expectlog = NULL; char *actualname = NULL; char *actuallog = NULL; if (virAsprintf(&expectname, "%s/commanddata/%s.log", abs_srcdir, testname) < 0) goto cleanup; if (virAsprintf(&actualname, "%s/commandhelper.log", abs_builddir) < 0) goto cleanup; if (virFileReadAll(expectname, 1024*64, &expectlog) < 0) { fprintf(stderr, "cannot read %s\n", expectname); goto cleanup; } if (virFileReadAll(actualname, 1024*64, &actuallog) < 0) { fprintf(stderr, "cannot read %s\n", actualname); goto cleanup; } if (prefix) { char *tmp = NULL; if (virAsprintf(&tmp, "%s%s", prefix, expectlog) < 0) goto cleanup; VIR_FREE(expectlog); expectlog = tmp; } if (STRNEQ(expectlog, actuallog)) { virtTestDifference(stderr, expectlog, actuallog); goto cleanup; } ret = 0; cleanup: if (actualname) unlink(actualname); VIR_FREE(actuallog); VIR_FREE(actualname); VIR_FREE(expectlog); VIR_FREE(expectname); return ret; }
static int testCompareXMLToArgvFiles(const char *xml, const char *cmdline) { char *expectargv = NULL; int len; char *actualargv = NULL; virDomainDefPtr vmdef = NULL; virDomainObj vm; virCommandPtr cmd = NULL; virConnectPtr conn; int ret = -1; if (!(conn = virGetConnect())) goto out; if (!(vmdef = virDomainDefParseFile(xml, driver.caps, driver.xmlopt, 1 << VIR_DOMAIN_VIRT_BHYVE, VIR_DOMAIN_XML_INACTIVE))) goto out; vm.def = vmdef; if (!(cmd = virBhyveProcessBuildBhyveCmd(conn, vmdef, false))) goto out; if (!(actualargv = virCommandToString(cmd))) goto out; len = virtTestLoadFile(cmdline, &expectargv); if (len < 0) goto out; if (len && expectargv[len - 1] == '\n') expectargv[len - 1] = '\0'; if (STRNEQ(expectargv, actualargv)) { virtTestDifference(stderr, expectargv, actualargv); goto out; } ret = 0; out: VIR_FREE(expectargv); VIR_FREE(actualargv); virCommandFree(cmd); virDomainDefFree(vmdef); return ret; }
static int testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool expect_warning) { char inXmlData[MAX_FILE]; char *inXmlPtr = &(inXmlData[0]); char outXmlData[MAX_FILE]; char *outXmlPtr = &(outXmlData[0]); char *actual = NULL; int ret = -1; virNWFilterDefPtr dev = NULL; char *log; if (virtTestLoadFile(inxml, &inXmlPtr, MAX_FILE) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlPtr, MAX_FILE) < 0) goto fail; if (!(dev = virNWFilterDefParseString(NULL, inXmlData))) goto fail; if ((log = virtTestLogContentAndReset()) == NULL) goto fail; if ((*log != '\0') != expect_warning) { free(log); goto fail; } free(log); if (expect_warning) { /* need to suppress the errors */ virResetLastError(); } if (!(actual = virNWFilterDefFormat(dev))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: free(actual); virNWFilterDefFree(dev); return ret; }
static int testCompareFiles(const char *vmx, const char *xml) { int result = -1; char *vmxData = NULL; char *xmlData = NULL; char *formatted = NULL; virDomainDefPtr def = NULL; virErrorPtr err = NULL; if (virtTestLoadFile(vmx, &vmxData) < 0) { goto failure; } if (virtTestLoadFile(xml, &xmlData) < 0) { goto failure; } def = virVMXParseConfig(&ctx, xmlopt, vmxData); if (def == NULL) { err = virGetLastError(); fprintf(stderr, "ERROR: %s\n", err != NULL ? err->message : "<unknown>"); goto failure; } formatted = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE); if (formatted == NULL) { err = virGetLastError(); fprintf(stderr, "ERROR: %s\n", err != NULL ? err->message : "<unknown>"); goto failure; } if (STRNEQ(xmlData, formatted)) { virtTestDifference(stderr, xmlData, formatted); goto failure; } result = 0; failure: VIR_FREE(vmxData); VIR_FREE(xmlData); VIR_FREE(formatted); virDomainDefFree(def); return result; }
static int testCompareXMLToXML(const char *inxmldata, const char *outxmldata) { int ret = -1; if (STRNEQ(outxmldata, inxmldata)) { virtTestDifference(stderr, outxmldata, inxmldata); goto cleanup; } ret = 0; cleanup: return ret; }
static int testCompareXMLToArgvFiles(const char *xml, const char *cmdfile, bool expect_warning) { char *expectxml = NULL; char *actualxml = NULL; char *cmd = NULL; int ret = -1; virDomainDefPtr vmdef = NULL; char *log; if (virtTestLoadFile(cmdfile, &cmd) < 0) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (!(vmdef = qemuParseCommandLineString(driver.caps, cmd))) goto fail; if ((log = virtTestLogContentAndReset()) == NULL) goto fail; if ((*log != '\0') != expect_warning) { free(log); goto fail; } free(log); if (!(actualxml = virDomainDefFormat(vmdef, 0))) goto fail; if (blankProblemElements(expectxml) < 0 || blankProblemElements(actualxml) < 0) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: free(expectxml); free(actualxml); free(cmd); virDomainDefFree(vmdef); return ret; }
static int testFormat(virSocketAddr *addr, const char *addrstr, bool pass) { char *newaddrstr; newaddrstr = virSocketAddrFormat(addr); if (!newaddrstr) return pass ? -1 : 0; if (STRNEQ(newaddrstr, addrstr)) { virtTestDifference(stderr, newaddrstr, addrstr); VIR_FREE(newaddrstr); return pass ? -1 : 0; } else { VIR_FREE(newaddrstr); return pass ? 0 : -1; } }