]> xenbits.xensource.com Git - libvirt.git/commitdiff
tests: Enable failure testing with CompareDomXML2XML
authorCole Robinson <crobinso@redhat.com>
Fri, 8 Apr 2016 16:04:10 +0000 (12:04 -0400)
committerCole Robinson <crobinso@redhat.com>
Thu, 14 Apr 2016 16:25:57 +0000 (12:25 -0400)
This allows tests to check for specific failure scenarios

tests/bhyvexml2xmltest.c
tests/genericxml2xmltest.c
tests/lxcxml2xmltest.c
tests/qemuxml2xmltest.c
tests/testutils.c
tests/testutils.h

index 8f556eeee64cf4b5bc2d086efd652cefab38ff52..c8c6c6e5bd44587bffa3d92e71a9604651f6092d 100644 (file)
@@ -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);
index bf9b11d3de58bbcf24ba1cde2f9c73e8bc9fefee..7d504db6f29d1043f917ba66e28d15d03017dd97 100644 (file)
@@ -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);
index 0b51340bdfd107f05f17d4af5e253b1b9b9877a9..fec0142b16f87a661d6a4fcd95ac39f055085adc 100644 (file)
@@ -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);
index f4093f1ff0e82fea15a7702d7b955ec068168b70..cbe6b7821c3391cf7314138b228be621321fee46 100644 (file)
@@ -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);
 }
 
 
index fc4c339bb7fe9e7c9024a63dbebce88e8c01d62b..79d076378a169bad9d7a9623356f0aaab3b3fa82 100644 (file)
@@ -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;
index 058be55cdf04b38d8f5d7d7b64989ff7fa75f765..0417a0b9feba63af5fe38cf06de1eb85cbbc0014 100644 (file)
@@ -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__ */