[libvirt] [PATCH 2/3] test: Introduce testing of virStorageUtilGlusterExtractPoolSources

Peter Krempa pkrempa at redhat.com
Wed Mar 29 13:23:39 UTC 2017


Add a test program called virstorageutiltest and test the gluster pool
detection code.
---
 tests/Makefile.am                                  |  15 ++-
 .../virstorageutildata/gluster-parse-basic-dst.xml |   6 ++
 .../virstorageutildata/gluster-parse-basic-src.xml |  47 ++++++++++
 tests/virstorageutiltest.c                         | 102 +++++++++++++++++++++
 4 files changed, 167 insertions(+), 3 deletions(-)
 create mode 100644 tests/virstorageutildata/gluster-parse-basic-dst.xml
 create mode 100644 tests/virstorageutildata/gluster-parse-basic-src.xml
 create mode 100644 tests/virstorageutiltest.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index a6f189b8b..254c4c0ad 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -160,7 +160,9 @@ EXTRA_DIST =		\
 	xlconfigdata \
 	xmconfigdata \
 	xml2sexprdata \
-	xml2vmxdata
+	xml2vmxdata \
+	virstorageutildata \
+	$(NULL)

 test_helpers = commandhelper ssh
 test_programs = virshtest sockettest \
@@ -352,7 +354,7 @@ test_programs += nwfilterxml2firewalltest
 endif WITH_NWFILTER

 if WITH_STORAGE
-test_programs += storagevolxml2argvtest
+test_programs += storagevolxml2argvtest virstorageutiltest
 endif WITH_STORAGE

 if WITH_STORAGE_FS
@@ -859,6 +861,13 @@ genericxml2xmltest_LDADD = $(LDADDS)


 if WITH_STORAGE
+virstorageutiltest_SOURCES = \
+	virstorageutiltest.c testutils.c testutils.h
+virstorageutiltest_LDADD = \
+	../src/libvirt_driver_storage_impl.la \
+	$(LDADDS) \
+	$(NULL)
+
 storagevolxml2argvtest_SOURCES = \
     storagevolxml2argvtest.c \
     testutils.c testutils.h
@@ -867,7 +876,7 @@ storagevolxml2argvtest_LDADD = \
 	../src/libvirt_driver_storage_impl.la $(LDADDS)

 else ! WITH_STORAGE
-EXTRA_DIST += storagevolxml2argvtest.c
+EXTRA_DIST += storagevolxml2argvtest.c virstorageutiltest.c
 endif ! WITH_STORAGE

 storagevolxml2xmltest_SOURCES = \
diff --git a/tests/virstorageutildata/gluster-parse-basic-dst.xml b/tests/virstorageutildata/gluster-parse-basic-dst.xml
new file mode 100644
index 000000000..fbde06f3b
--- /dev/null
+++ b/tests/virstorageutildata/gluster-parse-basic-dst.xml
@@ -0,0 +1,6 @@
+<sources>
+  <source>
+    <host name='testhost'/>
+    <dir path='vol0'/>
+  </source>
+</sources>
diff --git a/tests/virstorageutildata/gluster-parse-basic-src.xml b/tests/virstorageutildata/gluster-parse-basic-src.xml
new file mode 100644
index 000000000..08f97cb72
--- /dev/null
+++ b/tests/virstorageutildata/gluster-parse-basic-src.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cliOutput>
+  <opRet>0</opRet>
+  <opErrno>0</opErrno>
+  <opErrstr/>
+  <volInfo>
+    <volumes>
+      <volume>
+        <name>vol0</name>
+        <id>ac14dfa5-0b98-4593-a2aa-9fe2bb9b9ce3</id>
+        <status>1</status>
+        <statusStr>Started</statusStr>
+        <snapshotCount>0</snapshotCount>
+        <brickCount>2</brickCount>
+        <distCount>2</distCount>
+        <stripeCount>1</stripeCount>
+        <replicaCount>2</replicaCount>
+        <arbiterCount>0</arbiterCount>
+        <disperseCount>0</disperseCount>
+        <redundancyCount>0</redundancyCount>
+        <type>2</type>
+        <typeStr>Replicate</typeStr>
+        <transport>0</transport>
+        <bricks>
+          <brick uuid="a6f5ddea-bc6a-44db-ae1d-5aa1db743490">virt-gluster-node1:/bricks/brick1/brick<name>virt-gluster-node1:/bricks/brick1/brick</name><hostUuid>a6f5ddea-bc6a-44db-ae1d-5aa1db743490</hostUuid><isArbiter>0</isArbiter></brick>
+          <brick uuid="f4ab9fb1-44ec-443b-8783-e5f70ed78da3">virt-gluster-node2:/bricks/brick1/brick<name>virt-gluster-node2:/bricks/brick1/brick</name><hostUuid>f4ab9fb1-44ec-443b-8783-e5f70ed78da3</hostUuid><isArbiter>0</isArbiter></brick>
+        </bricks>
+        <optCount>3</optCount>
+        <options>
+          <option>
+            <name>nfs.disable</name>
+            <value>on</value>
+          </option>
+          <option>
+            <name>performance.readdir-ahead</name>
+            <value>on</value>
+          </option>
+          <option>
+            <name>transport.address-family</name>
+            <value>inet</value>
+          </option>
+        </options>
+      </volume>
+      <count>1</count>
+    </volumes>
+  </volInfo>
+</cliOutput>
diff --git a/tests/virstorageutiltest.c b/tests/virstorageutiltest.c
new file mode 100644
index 000000000..0d4ede6c2
--- /dev/null
+++ b/tests/virstorageutiltest.c
@@ -0,0 +1,102 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "testutils.h"
+#include "virerror.h"
+#include "virfile.h"
+#include "virlog.h"
+#include "virstring.h"
+
+#include "storage/storage_util.h"
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+VIR_LOG_INIT("tests.storageutiltest");
+
+
+static int
+testGlusterLookupParse(const void *data)
+{
+    virStoragePoolSourceList list = { .type = VIR_STORAGE_POOL_GLUSTER,
+                                      .nsources = 0,
+                                      .sources = NULL
+                                    };
+    const char *testname = data;
+    size_t i;
+    char *srcxml = NULL;
+    char *srcxmldata = NULL;
+    char *destxml = NULL;
+    char *actual = NULL;
+    int ret = -1;
+
+    if (virAsprintf(&srcxml,
+                    "%s/virstorageutildata/gluster-parse-%s-src.xml",
+                    abs_srcdir, testname) < 0 ||
+        virAsprintf(&destxml,
+                    "%s/virstorageutildata/gluster-parse-%s-dst.xml",
+                    abs_srcdir, testname) < 0)
+        goto cleanup;
+
+    if (virTestLoadFile(srcxml, &srcxmldata) < 0)
+        goto cleanup;
+
+    if (virStorageUtilGlusterExtractPoolSources("testhost", srcxmldata,
+                                                VIR_STORAGE_POOL_GLUSTER,
+                                                &list) < 0)
+        goto cleanup;
+
+    if (!(actual = virStoragePoolSourceListFormat(&list)))
+        goto cleanup;
+
+    ret = virTestCompareToFile(actual, destxml);
+
+ cleanup:
+    VIR_FREE(srcxml);
+    VIR_FREE(srcxmldata);
+    VIR_FREE(destxml);
+    VIR_FREE(actual);
+
+    for (i = 0; i < list.nsources; i++)
+        virStoragePoolSourceClear(&list.sources[i]);
+    VIR_FREE(list.sources);
+
+
+    return ret;
+}
+
+
+static int
+mymain(void)
+{
+    int ret = 0;
+
+#define DO_TEST_GLUSTER_LOOKUP(testname)                                       \
+    if (virTestRun("gluster lookup " testname, testGlusterLookupParse,         \
+                   testname) < 0)                                              \
+        ret = -1
+
+    DO_TEST_GLUSTER_LOOKUP("basic");
+
+#undef DO_TEST_GLUSTER_LOOKUP
+
+    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIRT_TEST_MAIN(mymain)
-- 
2.12.1




More information about the libvir-list mailing list