[libvirt] [PATCH 3/6] tests: Share domain XML2XML compare helper
Laine Stump
laine at laine.org
Sat Jan 9 02:08:39 UTC 2016
On 01/08/2016 07:13 PM, Cole Robinson wrote:
> This creates a shared function in testutils.c that consolidates all
> the slightly different implementations.
> ---
> tests/bhyvexml2xmltest.c | 30 +++-----------------------
> tests/lxcxml2xmltest.c | 50 +++----------------------------------------
> tests/qemuxml2xmltest.c | 55 ++++--------------------------------------------
> tests/testutils.c | 34 ++++++++++++++++++++++++++++++
> tests/testutils.h | 6 ++++++
> 5 files changed, 50 insertions(+), 125 deletions(-)
ACK (assuming that make check succeeds with the changes of course :-)
>
> diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c
> index 826baea..d860a41 100644
> --- a/tests/bhyvexml2xmltest.c
> +++ b/tests/bhyvexml2xmltest.c
> @@ -11,31 +11,6 @@
>
> static bhyveConn driver;
>
> -static int
> -testCompareXMLToXMLFiles(const char *inxml, const char *outxml)
> -{
> - char *actual = NULL;
> - virDomainDefPtr def = NULL;
> - int ret = -1;
> -
> - if (!(def = virDomainDefParseFile(inxml, driver.caps, driver.xmlopt,
> - VIR_DOMAIN_DEF_PARSE_INACTIVE)))
> - goto fail;
> -
> - if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_DEF_FORMAT_INACTIVE)))
> - goto fail;
> -
> - if (virtTestCompareToFile(actual, outxml) < 0)
> - goto fail;
> -
> - ret = 0;
> -
> - fail:
> - VIR_FREE(actual);
> - virDomainDefFree(def);
> - return ret;
> -}
> -
> struct testInfo {
> const char *name;
> bool different;
> @@ -55,8 +30,9 @@ testCompareXMLToXMLHelper(const void *data)
> abs_srcdir, info->name) < 0)
> goto cleanup;
>
> - ret = testCompareXMLToXMLFiles(xml_in,
> - info->different ? xml_out : xml_in);
> + ret = testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, xml_in,
> + info->different ? xml_out : xml_in,
> + false);
>
> cleanup:
> VIR_FREE(xml_in);
> diff --git a/tests/lxcxml2xmltest.c b/tests/lxcxml2xmltest.c
> index 8d824b9..e460d0a 100644
> --- a/tests/lxcxml2xmltest.c
> +++ b/tests/lxcxml2xmltest.c
> @@ -22,35 +22,6 @@
> static virCapsPtr caps;
> static virDomainXMLOptionPtr xmlopt;
>
> -static int
> -testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live)
> -{
> - char *actual = NULL;
> - int ret = -1;
> - virDomainDefPtr def = NULL;
> -
> - if (!(def = virDomainDefParseFile(inxml, caps, xmlopt,
> - live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE)))
> - goto fail;
> -
> - if (!virDomainDefCheckABIStability(def, def)) {
> - fprintf(stderr, "ABI stability check failed on %s", inxml);
> - goto fail;
> - }
> -
> - if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_DEF_FORMAT_SECURE)))
> - goto fail;
> -
> - if (virtTestCompareToFile(actual, outxml) < 0)
> - goto fail;
> -
> - ret = 0;
> - fail:
> - VIR_FREE(actual);
> - virDomainDefFree(def);
> - return ret;
> -}
> -
> struct testInfo {
> const char *name;
> int different;
> @@ -71,24 +42,9 @@ testCompareXMLToXMLHelper(const void *data)
> abs_srcdir, info->name) < 0)
> goto cleanup;
>
> - if (info->different) {
> - if (testCompareXMLToXMLFiles(xml_in, xml_out, false) < 0)
> - goto cleanup;
> - } else {
> - if (testCompareXMLToXMLFiles(xml_in, xml_in, false) < 0)
> - goto cleanup;
> - }
> - if (!info->inactive_only) {
> - if (info->different) {
> - if (testCompareXMLToXMLFiles(xml_in, xml_out, true) < 0)
> - goto cleanup;
> - } else {
> - if (testCompareXMLToXMLFiles(xml_in, xml_in, true) < 0)
> - goto cleanup;
> - }
> - }
> -
> - ret = 0;
> + ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in,
> + info->different ? xml_out : xml_in,
> + !info->inactive_only);
> cleanup:
> VIR_FREE(xml_in);
> VIR_FREE(xml_out);
> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> index d654182..312bb53 100644
> --- a/tests/qemuxml2xmltest.c
> +++ b/tests/qemuxml2xmltest.c
> @@ -40,56 +40,12 @@ struct testInfo {
> };
>
> static int
> -testXML2XMLHelper(const char *inxml,
> - const char *inXmlData,
> - const char *outxml,
> - const char *outXmlData,
> - bool live)
> -{
> - char *actual = NULL;
> - int ret = -1;
> - virDomainDefPtr def = NULL;
> - unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE;
> - unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE;
> - if (!live)
> - format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE;
> -
> - if (!(def = virDomainDefParseString(inXmlData, driver.caps, driver.xmlopt,
> - parse_flags)))
> - goto fail;
> -
> - if (!virDomainDefCheckABIStability(def, def)) {
> - VIR_TEST_DEBUG("ABI stability check failed on %s", inxml);
> - goto fail;
> - }
> -
> - if (!(actual = virDomainDefFormat(def, format_flags)))
> - goto fail;
> -
> - if (STRNEQ(outXmlData, actual)) {
> - virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml);
> - goto fail;
> - }
> -
> - ret = 0;
> -
> - fail:
> - VIR_FREE(actual);
> - virDomainDefFree(def);
> - return ret;
> -}
> -
> -
> -static int
> testXML2XMLActive(const void *opaque)
> {
> const struct testInfo *info = opaque;
>
> - return testXML2XMLHelper(info->inName,
> - info->inFile,
> - info->outActiveName,
> - info->outActiveFile,
> - true);
> + return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
> + info->inName, info->outActiveName, true);
> }
>
>
> @@ -98,11 +54,8 @@ testXML2XMLInactive(const void *opaque)
> {
> const struct testInfo *info = opaque;
>
> - return testXML2XMLHelper(info->inName,
> - info->inFile,
> - info->outInactiveName,
> - info->outInactiveFile,
> - false);
> + return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName,
> + info->outInactiveName, false);
> }
>
>
> diff --git a/tests/testutils.c b/tests/testutils.c
> index 0091fcd..4ffea0c 100644
> --- a/tests/testutils.c
> +++ b/tests/testutils.c
> @@ -1072,6 +1072,40 @@ virDomainXMLOptionPtr virTestGenericDomainXMLConfInit(void)
> }
>
>
> +int
> +testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt,
> + const char *infile, const char *outfile, bool live)
> +{
> + char *actual = NULL;
> + int ret = -1;
> + virDomainDefPtr def = NULL;
> + unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE;
> + unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE;
> + if (!live)
> + format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE;
> +
> + if (!(def = virDomainDefParseFile(infile, caps, xmlopt, parse_flags)))
> + goto fail;
> +
> + if (!virDomainDefCheckABIStability(def, def)) {
> + VIR_TEST_DEBUG("ABI stability check failed on %s", infile);
> + goto fail;
> + }
> +
> + if (!(actual = virDomainDefFormat(def, format_flags)))
> + goto fail;
> +
> + if (virtTestCompareToFile(actual, outfile) < 0)
> + goto fail;
> +
> + ret = 0;
> + fail:
> + VIR_FREE(actual);
> + virDomainDefFree(def);
> + return ret;
> +}
> +
> +
> static int virtTestCounter;
> static char virtTestCounterStr[128];
> static char *virtTestCounterPrefixEndOffset;
> diff --git a/tests/testutils.h b/tests/testutils.h
> index 3bd9004..b1d7397 100644
> --- a/tests/testutils.h
> +++ b/tests/testutils.h
> @@ -137,4 +137,10 @@ int virtTestMain(int argc,
> virCapsPtr virTestGenericCapsInit(void);
> virDomainXMLOptionPtr virTestGenericDomainXMLConfInit(void);
>
> +int testCompareDomXML2XMLFiles(virCapsPtr caps,
> + virDomainXMLOptionPtr xmlopt,
> + const char *inxml,
> + const char *outfile,
> + bool live);
> +
> #endif /* __VIT_TEST_UTILS_H__ */
More information about the libvir-list
mailing list