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,
|
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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
|
|||||||
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,
|
|||||||
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)
|
if (virtTestCompareToFile(actual, outfile) < 0) {
|
||||||
goto fail;
|
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);
|
VIR_FREE(actual);
|
||||||
virDomainDefFree(def);
|
virDomainDefFree(def);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -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,
|
|||||||
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__ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user