mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
tests: Enable failure testing with CompareDomXML2XML
This allows tests to check for specific failure scenarios
This commit is contained in:
parent
d0cc8b10c3
commit
c493d21642
@ -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__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user