static int testQemuHotplugCheckResult(virDomainObjPtr vm, const char *expected, const char *expectedFile, bool fail) { char *actual; int ret; vm->def->id = -1; actual = virDomainDefFormat(vm->def, driver.caps, 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) virtTestDifferenceFull(stderr, expected, expectedFile, actual, NULL); ret = -1; } VIR_FREE(actual); 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)) { virtTestDifferenceFull(stderr, xmlData, xml, actual, NULL); goto fail; } ret = 0; fail: VIR_FREE(xmlData); VIR_FREE(actual); virInterfaceDefFree(dev); return ret; }
static int testCompareXMLToConfigFiles(const char *xml, const char *configfile, bool expectError) { int ret = -1; char *config = NULL; char *expectxml = NULL; char *actualxml = NULL; virDomainDefPtr vmdef = NULL; if (virtTestLoadFile(configfile, &config) < 0) goto fail; vmdef = lxcParseConfigString(config, caps, xmlopt); if ((vmdef && expectError) || (!vmdef && !expectError)) goto fail; if (vmdef) { if (!(actualxml = virDomainDefFormat(vmdef, 0))) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (blankProblemElements(expectxml) < 0 || blankProblemElements(actualxml) < 0) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifferenceFull(stderr, expectxml, xml, actualxml, NULL); goto fail; } } ret = 0; fail: VIR_FREE(expectxml); VIR_FREE(actualxml); VIR_FREE(config); virDomainDefFree(vmdef); return ret; }
static int testXML2XMLHelper(const char *inxml, const char *inXmlData, const char *outxml, const char *outXmlData, bool live) { char *actual = NULL; int ret = -1; virDomainDefPtr def = NULL; unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE; unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE; if (!live) format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE; if (!(def = virDomainDefParseString(inXmlData, driver.caps, driver.xmlopt, parse_flags))) goto fail; if (!virDomainDefCheckABIStability(def, def)) { fprintf(stderr, "ABI stability check failed on %s", inxml); goto fail; } if (!(actual = virDomainDefFormat(def, format_flags))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml); goto fail; } ret = 0; fail: VIR_FREE(actual); virDomainDefFree(def); return ret; }
static int testCompareStatusXMLToXMLFiles(const void *opaque) { const struct testInfo *data = opaque; virBuffer buf = VIR_BUFFER_INITIALIZER; xmlDocPtr xml = NULL; virDomainObjPtr obj = NULL; char *expect = NULL; char *actual = NULL; char *source = NULL; int ret = -1; int keepBlanksDefault = xmlKeepBlanksDefault(0); /* construct faked source status XML */ virBufferAdd(&buf, testStatusXMLPrefix, -1); virBufferAdjustIndent(&buf, 2); virBufferAddStr(&buf, data->inFile); virBufferAdjustIndent(&buf, -2); virBufferAdd(&buf, testStatusXMLSuffix, -1); if (!(source = virBufferContentAndReset(&buf))) { fprintf(stderr, "Failed to create the source XML"); goto cleanup; } /* construct the expect string */ virBufferAdd(&buf, testStatusXMLPrefix, -1); virBufferAdjustIndent(&buf, 2); virBufferAddStr(&buf, data->outActiveFile); virBufferAdjustIndent(&buf, -2); virBufferAdd(&buf, testStatusXMLSuffix, -1); if (!(expect = virBufferContentAndReset(&buf))) { fprintf(stderr, "Failed to create the expect XML"); goto cleanup; } /* parse the fake source status XML */ if (!(xml = virXMLParseString(source, "(domain_status_test_XML)")) || !(obj = virDomainObjParseNode(xml, xmlDocGetRootElement(xml), driver.caps, driver.xmlopt, VIR_DOMAIN_DEF_PARSE_STATUS | VIR_DOMAIN_DEF_PARSE_ACTUAL_NET | VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES | VIR_DOMAIN_DEF_PARSE_CLOCK_ADJUST))) { fprintf(stderr, "Failed to parse domain status XML:\n%s", source); goto cleanup; } /* format it back */ if (!(actual = virDomainObjFormat(driver.xmlopt, obj, VIR_DOMAIN_DEF_FORMAT_SECURE))) { fprintf(stderr, "Failed to format domain status XML"); goto cleanup; } if (STRNEQ(actual, expect)) { virtTestDifferenceFull(stderr, expect, data->outActiveName, actual, data->inName); goto cleanup; } ret = 0; cleanup: xmlKeepBlanksDefault(keepBlanksDefault); xmlFreeDoc(xml); virObjectUnref(obj); VIR_FREE(expect); VIR_FREE(actual); VIR_FREE(source); return ret; }