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__ */