提交 c493d216 编写于 作者: C Cole Robinson

tests: Enable failure testing with CompareDomXML2XML

This allows tests to check for specific failure scenarios
上级 d0cc8b10
...@@ -32,8 +32,8 @@ testCompareXMLToXMLHelper(const void *data) ...@@ -32,8 +32,8 @@ testCompareXMLToXMLHelper(const void *data)
ret = testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, xml_in, ret = testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, xml_in,
info->different ? xml_out : xml_in, info->different ? xml_out : xml_in,
false, false, NULL, NULL, 0,
NULL, NULL, 0); TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
cleanup: cleanup:
VIR_FREE(xml_in); VIR_FREE(xml_in);
......
...@@ -39,8 +39,8 @@ testCompareXMLToXMLHelper(const void *data) ...@@ -39,8 +39,8 @@ testCompareXMLToXMLHelper(const void *data)
ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in, ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in,
info->different ? xml_out : xml_in, info->different ? xml_out : xml_in,
!info->inactive_only, !info->inactive_only, NULL, NULL, 0,
NULL, NULL, 0); TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
cleanup: cleanup:
VIR_FREE(xml_in); VIR_FREE(xml_in);
VIR_FREE(xml_out); VIR_FREE(xml_out);
......
...@@ -46,7 +46,8 @@ testCompareXMLToXMLHelper(const void *data) ...@@ -46,7 +46,8 @@ testCompareXMLToXMLHelper(const void *data)
ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in, ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in,
info->different ? xml_out : xml_in, info->different ? xml_out : xml_in,
!info->inactive_only, !info->inactive_only,
NULL, NULL, info->parse_flags); NULL, NULL, info->parse_flags,
TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
cleanup: cleanup:
VIR_FREE(xml_in); VIR_FREE(xml_in);
VIR_FREE(xml_out); VIR_FREE(xml_out);
......
...@@ -54,7 +54,8 @@ testXML2XMLActive(const void *opaque) ...@@ -54,7 +54,8 @@ testXML2XMLActive(const void *opaque)
return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
info->inName, info->outActiveName, true, 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) ...@@ -65,7 +66,8 @@ testXML2XMLInactive(const void *opaque)
return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName, return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName,
info->outInactiveName, false, info->outInactiveName, false,
qemuXML2XMLPreFormatCallback, opaque, 0); qemuXML2XMLPreFormatCallback, opaque, 0,
TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
} }
......
...@@ -1079,10 +1079,12 @@ int ...@@ -1079,10 +1079,12 @@ int
testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt, testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt,
const char *infile, const char *outfile, bool live, const char *infile, const char *outfile, bool live,
testCompareDomXML2XMLPreFormatCallback cb, testCompareDomXML2XMLPreFormatCallback cb,
const void *opaque, unsigned int parseFlags) const void *opaque, unsigned int parseFlags,
testCompareDomXML2XMLResult expectResult)
{ {
char *actual = NULL; char *actual = NULL;
int ret = -1; int ret = -1;
testCompareDomXML2XMLResult result;
virDomainDefPtr def = NULL; virDomainDefPtr def = NULL;
unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE; unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE;
unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE; unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE;
...@@ -1092,25 +1094,47 @@ testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt, ...@@ -1092,25 +1094,47 @@ testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt,
if (!live) if (!live)
format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE; format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE;
if (!(def = virDomainDefParseFile(infile, caps, xmlopt, parse_flags))) if (!(def = virDomainDefParseFile(infile, caps, xmlopt, parse_flags))) {
goto fail; result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE;
goto out;
}
if (!virDomainDefCheckABIStability(def, def)) { if (!virDomainDefCheckABIStability(def, def)) {
VIR_TEST_DEBUG("ABI stability check failed on %s", infile); 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) if (cb && cb(def, opaque) < 0) {
goto fail; result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_CB;
goto out;
}
if (!(actual = virDomainDefFormat(def, caps, format_flags))) if (!(actual = virDomainDefFormat(def, caps, format_flags))) {
goto fail; result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_FORMAT;
goto out;
}
if (virtTestCompareToFile(actual, outfile) < 0) {
result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_COMPARE;
goto out;
}
if (virtTestCompareToFile(actual, outfile) < 0) result = TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS;
goto fail;
out:
if (result == expectResult) {
ret = 0; ret = 0;
fail: 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 result code=%d but received code=%d",
expectResult, result);
}
VIR_FREE(actual); VIR_FREE(actual);
virDomainDefFree(def); virDomainDefFree(def);
return ret; return ret;
......
...@@ -134,6 +134,15 @@ int virtTestMain(int argc, ...@@ -134,6 +134,15 @@ int virtTestMain(int argc,
virCapsPtr virTestGenericCapsInit(void); virCapsPtr virTestGenericCapsInit(void);
virDomainXMLOptionPtr virTestGenericDomainXMLConfInit(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, typedef int (*testCompareDomXML2XMLPreFormatCallback)(virDomainDefPtr def,
const void *opaque); const void *opaque);
int testCompareDomXML2XMLFiles(virCapsPtr caps, int testCompareDomXML2XMLFiles(virCapsPtr caps,
...@@ -143,6 +152,7 @@ int testCompareDomXML2XMLFiles(virCapsPtr caps, ...@@ -143,6 +152,7 @@ int testCompareDomXML2XMLFiles(virCapsPtr caps,
bool live, bool live,
testCompareDomXML2XMLPreFormatCallback cb, testCompareDomXML2XMLPreFormatCallback cb,
const void *opaque, const void *opaque,
unsigned int parseFlags); unsigned int parseFlags,
testCompareDomXML2XMLResult expectResult);
#endif /* __VIR_TEST_UTILS_H__ */ #endif /* __VIR_TEST_UTILS_H__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册