[PATCH v2 2/9] qemuxml2xmltest: Split out status XML testing to qemustatusxml2xmltest.c

Peter Krempa pkrempa at redhat.com
Wed Nov 4 13:25:38 UTC 2020


Separate the test files.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 tests/meson.build             |   1 +
 tests/qemustatusxml2xmltest.c | 155 ++++++++++++++++++++++++++++++++++
 tests/qemuxml2xmltest.c       |  84 ------------------
 3 files changed, 156 insertions(+), 84 deletions(-)
 create mode 100644 tests/qemustatusxml2xmltest.c

diff --git a/tests/meson.build b/tests/meson.build
index a59002c083..56a916c090 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -454,6 +454,7 @@ if conf.has('WITH_QEMU')
     { 'name': 'qemuvhostusertest', 'link_with': [ test_qemu_driver_lib ], 'link_whole': [ test_file_wrapper_lib ] },
     { 'name': 'qemuxml2argvtest', 'link_with': [ test_qemu_driver_lib, test_utils_qemu_monitor_lib ], 'link_whole': [ test_utils_qemu_lib, test_file_wrapper_lib ] },
     { 'name': 'qemuxml2xmltest', 'link_with': [ test_qemu_driver_lib ], 'link_whole': [ test_utils_qemu_lib, test_file_wrapper_lib ] },
+    { 'name': 'qemustatusxml2xmltest', 'link_with': [ test_qemu_driver_lib ], 'link_whole': [ test_utils_qemu_lib, test_file_wrapper_lib ] },
   ]
 endif

diff --git a/tests/qemustatusxml2xmltest.c b/tests/qemustatusxml2xmltest.c
new file mode 100644
index 0000000000..0fcee34051
--- /dev/null
+++ b/tests/qemustatusxml2xmltest.c
@@ -0,0 +1,155 @@
+#include <config.h>
+
+#include <unistd.h>
+
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "testutils.h"
+
+#include "internal.h"
+#include "testutilsqemu.h"
+#include "configmake.h"
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+static virQEMUDriver driver;
+
+static int
+testCompareStatusXMLToXMLFiles(const void *opaque)
+{
+    const struct testQemuInfo *data = opaque;
+    virDomainObjPtr obj = NULL;
+    g_autofree char *actual = NULL;
+    int ret = -1;
+
+    if (!(obj = virDomainObjParseFile(data->infile, driver.xmlopt,
+                                      VIR_DOMAIN_DEF_PARSE_STATUS |
+                                      VIR_DOMAIN_DEF_PARSE_ACTUAL_NET |
+                                      VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES |
+                                      VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE |
+                                      VIR_DOMAIN_DEF_PARSE_ALLOW_POST_PARSE_FAIL))) {
+        VIR_TEST_DEBUG("\nfailed to parse '%s'", data->infile);
+        goto cleanup;
+    }
+
+    if (!(actual = virDomainObjFormat(obj, driver.xmlopt,
+                                      VIR_DOMAIN_DEF_FORMAT_SECURE |
+                                      VIR_DOMAIN_DEF_FORMAT_STATUS |
+                                      VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET |
+                                      VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES |
+                                      VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST))) {
+        VIR_TEST_DEBUG("\nfailed to format back '%s'", data->infile);
+        goto cleanup;
+    }
+
+    if (virTestCompareToFile(actual, data->outfile) < 0)
+        goto cleanup;
+
+    ret = 0;
+
+ cleanup:
+    virDomainObjEndAPI(&obj);
+    return ret;
+}
+
+
+static const char *statusPath = abs_srcdir "/qemustatusxml2xmldata/";
+
+static void
+testInfoSetStatusPaths(struct testQemuInfo *info)
+{
+    info->infile = g_strdup_printf("%s%s-in.xml", statusPath, info->name);
+    info->outfile = g_strdup_printf("%s%s-out.xml", statusPath, info->name);
+}
+
+
+#define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
+
+static int
+mymain(void)
+{
+    int ret = 0;
+    g_autofree char *fakerootdir = NULL;
+    g_autoptr(virQEMUDriverConfig) cfg = NULL;
+    g_autoptr(virHashTable) capslatest = NULL;
+    g_autoptr(virConnect) conn = NULL;
+
+    capslatest = testQemuGetLatestCaps();
+    if (!capslatest)
+        return EXIT_FAILURE;
+
+    fakerootdir = g_strdup(FAKEROOTDIRTEMPLATE);
+
+    if (!g_mkdtemp(fakerootdir)) {
+        fprintf(stderr, "Cannot create fakerootdir");
+        abort();
+    }
+
+    g_setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, TRUE);
+
+    if (qemuTestDriverInit(&driver) < 0)
+        return EXIT_FAILURE;
+
+    cfg = virQEMUDriverGetConfig(&driver);
+    driver.privileged = true;
+
+    if (!(conn = virGetConnect()))
+        goto cleanup;
+
+    virSetConnectInterface(conn);
+    virSetConnectNetwork(conn);
+    virSetConnectNWFilter(conn);
+    virSetConnectNodeDev(conn);
+    virSetConnectSecret(conn);
+    virSetConnectStorage(conn);
+
+#define DO_TEST_STATUS(_name) \
+    do { \
+        static struct testQemuInfo info = { \
+            .name = _name, \
+        }; \
+        if (testQemuInfoSetArgs(&info, capslatest, \
+                                ARG_QEMU_CAPS, QEMU_CAPS_LAST, \
+                                ARG_END) < 0 || \
+            qemuTestCapsCacheInsert(driver.qemuCapsCache, info.qemuCaps) < 0) { \
+            VIR_TEST_DEBUG("Failed to generate status test data for '%s'", _name); \
+            return -1; \
+        } \
+        testInfoSetStatusPaths(&info); \
+\
+        if (virTestRun("QEMU status XML-2-XML " _name, \
+                       testCompareStatusXMLToXMLFiles, &info) < 0) \
+            ret = -1; \
+\
+        testQemuInfoClear(&info); \
+    } while (0)
+
+
+    DO_TEST_STATUS("blockjob-mirror");
+    DO_TEST_STATUS("vcpus-multi");
+    DO_TEST_STATUS("modern");
+    DO_TEST_STATUS("migration-out-nbd");
+    DO_TEST_STATUS("migration-in-params");
+    DO_TEST_STATUS("migration-out-params");
+    DO_TEST_STATUS("migration-out-nbd-tls");
+    DO_TEST_STATUS("upgrade");
+
+    DO_TEST_STATUS("blockjob-blockdev");
+
+    DO_TEST_STATUS("backup-pull");
+
+ cleanup:
+    if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
+        virFileDeleteTree(fakerootdir);
+
+    qemuTestDriverFree(&driver);
+
+    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIR_TEST_MAIN_PRELOAD(mymain,
+                      VIR_TEST_MOCK("virpci"),
+                      VIR_TEST_MOCK("virrandom"),
+                      VIR_TEST_MOCK("domaincaps"),
+                      VIR_TEST_MOCK("virdeterministichash"))
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 99e50f5f66..1240ef389e 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -48,45 +48,6 @@ testXML2XMLInactive(const void *opaque)
 }


-static int
-testCompareStatusXMLToXMLFiles(const void *opaque)
-{
-    const struct testQemuInfo *data = opaque;
-    virDomainObjPtr obj = NULL;
-    g_autofree char *actual = NULL;
-    int ret = -1;
-
-    if (!(obj = virDomainObjParseFile(data->infile, driver.xmlopt,
-                                      VIR_DOMAIN_DEF_PARSE_STATUS |
-                                      VIR_DOMAIN_DEF_PARSE_ACTUAL_NET |
-                                      VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES |
-                                      VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE |
-                                      VIR_DOMAIN_DEF_PARSE_ALLOW_POST_PARSE_FAIL))) {
-        VIR_TEST_DEBUG("\nfailed to parse '%s'", data->infile);
-        goto cleanup;
-    }
-
-    if (!(actual = virDomainObjFormat(obj, driver.xmlopt,
-                                      VIR_DOMAIN_DEF_FORMAT_SECURE |
-                                      VIR_DOMAIN_DEF_FORMAT_STATUS |
-                                      VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET |
-                                      VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES |
-                                      VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST))) {
-        VIR_TEST_DEBUG("\nfailed to format back '%s'", data->infile);
-        goto cleanup;
-    }
-
-    if (virTestCompareToFile(actual, data->outfile) < 0)
-        goto cleanup;
-
-    ret = 0;
-
- cleanup:
-    virDomainObjEndAPI(&obj);
-    return ret;
-}
-
-
 static int
 testInfoSetPaths(struct testQemuInfo *info,
                  const char *suffix,
@@ -113,16 +74,6 @@ testInfoSetPaths(struct testQemuInfo *info,
 }


-static const char *statusPath = abs_srcdir "/qemustatusxml2xmldata/";
-
-static void
-testInfoSetStatusPaths(struct testQemuInfo *info)
-{
-    info->infile = g_strdup_printf("%s%s-in.xml", statusPath, info->name);
-    info->outfile = g_strdup_printf("%s%s-out.xml", statusPath, info->name);
-}
-
-
 #define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"

 static int
@@ -1421,41 +1372,6 @@ mymain(void)
             QEMU_CAPS_VIRTIO_SCSI,
             QEMU_CAPS_MCH_EXTENDED_TSEG_MBYTES);

-#define DO_TEST_STATUS(_name) \
-    do { \
-        static struct testQemuInfo info = { \
-            .name = _name, \
-        }; \
-        if (testQemuInfoSetArgs(&info, capslatest, \
-                                ARG_QEMU_CAPS, QEMU_CAPS_LAST, \
-                                ARG_END) < 0 || \
-            qemuTestCapsCacheInsert(driver.qemuCapsCache, info.qemuCaps) < 0) { \
-            VIR_TEST_DEBUG("Failed to generate status test data for '%s'", _name); \
-            return -1; \
-        } \
-        testInfoSetStatusPaths(&info); \
-\
-        if (virTestRun("QEMU status XML-2-XML " _name, \
-                       testCompareStatusXMLToXMLFiles, &info) < 0) \
-            ret = -1; \
-\
-        testQemuInfoClear(&info); \
-    } while (0)
-
-
-    DO_TEST_STATUS("blockjob-mirror");
-    DO_TEST_STATUS("vcpus-multi");
-    DO_TEST_STATUS("modern");
-    DO_TEST_STATUS("migration-out-nbd");
-    DO_TEST_STATUS("migration-in-params");
-    DO_TEST_STATUS("migration-out-params");
-    DO_TEST_STATUS("migration-out-nbd-tls");
-    DO_TEST_STATUS("upgrade");
-
-    DO_TEST_STATUS("blockjob-blockdev");
-
-    DO_TEST_STATUS("backup-pull");
-
     DO_TEST("vhost-vsock", QEMU_CAPS_DEVICE_VHOST_VSOCK);
     DO_TEST("vhost-vsock-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK);
     DO_TEST("vhost-vsock-ccw", QEMU_CAPS_DEVICE_VHOST_VSOCK,
-- 
2.26.2




More information about the libvir-list mailing list