diff mbox

[1/2] tests: Enable failure testing with CompareDomXML2XML

Message ID b5bafa4efe85a5345ece559dfbab68aa0bbd7b49.1460137366.git.crobinso@redhat.com
State Accepted
Commit c493d216424e64723d958f31958ac386ea6a3acf
Headers show

Commit Message

Cole Robinson April 8, 2016, 5:48 p.m. UTC
This allows tests to check for specific failure scenarios
---
 tests/bhyvexml2xmltest.c   |  4 ++--
 tests/genericxml2xmltest.c |  4 ++--
 tests/lxcxml2xmltest.c     |  3 ++-
 tests/qemuxml2xmltest.c    |  6 ++++--
 tests/testutils.c          | 47 ++++++++++++++++++++++++++++++++++------------
 tests/testutils.h          | 12 +++++++++++-
 6 files changed, 56 insertions(+), 20 deletions(-)

-- 
2.5.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Comments

Cole Robinson April 14, 2016, 4:53 p.m. UTC | #1
On 04/14/2016 10:00 AM, Andrea Bolognani wrote:
> On Fri, 2016-04-08 at 13:48 -0400, Cole Robinson wrote:

>> This allows tests to check for specific failure scenarios

>> ---

>>  tests/bhyvexml2xmltest.c   |  4 ++--

>>  tests/genericxml2xmltest.c |  4 ++--

>>  tests/lxcxml2xmltest.c     |  3 ++-

>>  tests/qemuxml2xmltest.c    |  6 ++++--

>>  tests/testutils.c          | 47 ++++++++++++++++++++++++++++++++++------------

>>  tests/testutils.h          | 12 +++++++++++-

>>  6 files changed, 56 insertions(+), 20 deletions(-)

> 

> [...]

>  

>> -    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;

> 

> Would look nicer with an empty line before the label.

> 

>> + 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);

> 

> s/failure/result/ in the second message above... If

> expectResult == TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS

> we don't want to call "success" a "failure code" :)

> 

> ACK with the above taken care of.

> 


Thanks, made those changes and pushed

- Cole

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
diff mbox

Patch

diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c
index 8f556ee..c8c6c6e 100644
--- a/tests/bhyvexml2xmltest.c
+++ b/tests/bhyvexml2xmltest.c
@@ -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);
diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c
index bf9b11d..7d504db 100644
--- a/tests/genericxml2xmltest.c
+++ b/tests/genericxml2xmltest.c
@@ -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);
diff --git a/tests/lxcxml2xmltest.c b/tests/lxcxml2xmltest.c
index 0b51340..fec0142 100644
--- a/tests/lxcxml2xmltest.c
+++ b/tests/lxcxml2xmltest.c
@@ -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);
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 0735677..b0f298c 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -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);
 }
 
 
diff --git a/tests/testutils.c b/tests/testutils.c
index fc4c339..a0ce4b6 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -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;
diff --git a/tests/testutils.h b/tests/testutils.h
index 058be55..0417a0b 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -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__ */