@@ -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,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;
@@ -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__ */