提交 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)
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);
......
......@@ -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);
......
......@@ -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);
......
......@@ -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);
}
......
......@@ -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,47 @@ 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 result code=%d but received code=%d",
expectResult, result);
}
ret = 0;
fail:
VIR_FREE(actual);
virDomainDefFree(def);
return ret;
......
......@@ -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__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册