This allows tests to check for specific failure scenarios --- tests/bhyvexml2xmltest.c | 4 ++-- tests/genericxml2xmltest.c | 4 ++-- tests/lxcxml2xmltest.c | 3 ++- tests/qemuxml2xmltest.c | 6 ++++-- tests/testutils.c | 47 ++++++++++++++++++++++++++++++++++------------ tests/testutils.h | 12 +++++++++++- 6 files changed, 56 insertions(+), 20 deletions(-) diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 8f556ee..c8c6c6e 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -32,8 +32,8 @@ testCompareXMLToXMLHelper(const void *data) ret = testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, xml_in, info->different ? xml_out : xml_in, - false, - NULL, NULL, 0); + false, NULL, NULL, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); cleanup: VIR_FREE(xml_in); diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c index bf9b11d..7d504db 100644 --- a/tests/genericxml2xmltest.c +++ b/tests/genericxml2xmltest.c @@ -39,8 +39,8 @@ testCompareXMLToXMLHelper(const void *data) ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in, info->different ? xml_out : xml_in, - !info->inactive_only, - NULL, NULL, 0); + !info->inactive_only, NULL, NULL, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); cleanup: VIR_FREE(xml_in); VIR_FREE(xml_out); diff --git a/tests/lxcxml2xmltest.c b/tests/lxcxml2xmltest.c index 0b51340..fec0142 100644 --- a/tests/lxcxml2xmltest.c +++ b/tests/lxcxml2xmltest.c @@ -46,7 +46,8 @@ testCompareXMLToXMLHelper(const void *data) ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in, info->different ? xml_out : xml_in, !info->inactive_only, - NULL, NULL, info->parse_flags); + NULL, NULL, info->parse_flags, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); cleanup: VIR_FREE(xml_in); VIR_FREE(xml_out); diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 0735677..b0f298c 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -54,7 +54,8 @@ testXML2XMLActive(const void *opaque) return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName, info->outActiveName, true, - qemuXML2XMLPreFormatCallback, opaque, 0); + qemuXML2XMLPreFormatCallback, opaque, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); } @@ -65,7 +66,8 @@ testXML2XMLInactive(const void *opaque) return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName, info->outInactiveName, false, - qemuXML2XMLPreFormatCallback, opaque, 0); + qemuXML2XMLPreFormatCallback, opaque, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); } diff --git a/tests/testutils.c b/tests/testutils.c index fc4c339..a0ce4b6 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -1079,10 +1079,12 @@ int testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt, const char *infile, const char *outfile, bool live, testCompareDomXML2XMLPreFormatCallback cb, - const void *opaque, unsigned int parseFlags) + const void *opaque, unsigned int parseFlags, + testCompareDomXML2XMLResult expectResult) { char *actual = NULL; int ret = -1; + testCompareDomXML2XMLResult result; virDomainDefPtr def = NULL; unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE; unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE; @@ -1092,25 +1094,46 @@ testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt, if (!live) format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE; - if (!(def = virDomainDefParseFile(infile, caps, xmlopt, parse_flags))) - goto fail; + if (!(def = virDomainDefParseFile(infile, caps, xmlopt, parse_flags))) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE; + goto out; + } if (!virDomainDefCheckABIStability(def, def)) { VIR_TEST_DEBUG("ABI stability check failed on %s", infile); - goto fail; + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_STABILITY; + goto out; } - if (cb && cb(def, opaque) < 0) - goto fail; + if (cb && cb(def, opaque) < 0) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_CB; + goto out; + } - if (!(actual = virDomainDefFormat(def, caps, format_flags))) - goto fail; + if (!(actual = virDomainDefFormat(def, caps, format_flags))) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_FORMAT; + goto out; + } - if (virtTestCompareToFile(actual, outfile) < 0) - goto fail; + if (virtTestCompareToFile(actual, outfile) < 0) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_COMPARE; + goto out; + } + + result = TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS; + out: + if (result == expectResult) { + ret = 0; + if (expectResult != TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS) { + VIR_TEST_DEBUG("Got expected failure code=%d msg=%s", + result, virGetLastErrorMessage()); + } + } else { + ret = -1; + VIR_TEST_DEBUG("Expected failure code=%d but received code=%d", + expectResult, result); + } - ret = 0; - fail: VIR_FREE(actual); virDomainDefFree(def); return ret; diff --git a/tests/testutils.h b/tests/testutils.h index 058be55..0417a0b 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -134,6 +134,15 @@ int virtTestMain(int argc, virCapsPtr virTestGenericCapsInit(void); virDomainXMLOptionPtr virTestGenericDomainXMLConfInit(void); +typedef enum { + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_STABILITY, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_CB, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_FORMAT, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_COMPARE, +} testCompareDomXML2XMLResult; + typedef int (*testCompareDomXML2XMLPreFormatCallback)(virDomainDefPtr def, const void *opaque); int testCompareDomXML2XMLFiles(virCapsPtr caps, @@ -143,6 +152,7 @@ int testCompareDomXML2XMLFiles(virCapsPtr caps, bool live, testCompareDomXML2XMLPreFormatCallback cb, const void *opaque, - unsigned int parseFlags); + unsigned int parseFlags, + testCompareDomXML2XMLResult expectResult); #endif /* __VIR_TEST_UTILS_H__ */ -- 2.5.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list