]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
tests: Add storage volume XML 2 XML tests.
authorCole Robinson <crobinso@redhat.com>
Fri, 9 Oct 2009 18:17:21 +0000 (14:17 -0400)
committerCole Robinson <crobinso@redhat.com>
Fri, 16 Oct 2009 14:52:27 +0000 (10:52 -0400)
16 files changed:
tests/.gitignore
tests/Makefile.am
tests/storagevolschematest
tests/storagevolxml2xmlin/vol-file-backing.xml [new file with mode: 0644]
tests/storagevolxml2xmlin/vol-file.xml [new file with mode: 0644]
tests/storagevolxml2xmlin/vol-logical-backing.xml [new file with mode: 0644]
tests/storagevolxml2xmlin/vol-logical.xml [moved from tests/storagevolschemadata/vol-logical.xml with 94% similarity]
tests/storagevolxml2xmlin/vol-partition.xml [moved from tests/storagevolschemadata/vol-partition.xml with 94% similarity]
tests/storagevolxml2xmlin/vol-qcow2.xml [moved from tests/storagevolschemadata/vol-qcow2.xml with 93% similarity]
tests/storagevolxml2xmlout/vol-file-backing.xml [new file with mode: 0644]
tests/storagevolxml2xmlout/vol-file.xml [new file with mode: 0644]
tests/storagevolxml2xmlout/vol-logical-backing.xml [new file with mode: 0644]
tests/storagevolxml2xmlout/vol-logical.xml [new file with mode: 0644]
tests/storagevolxml2xmlout/vol-partition.xml [new file with mode: 0644]
tests/storagevolxml2xmlout/vol-qcow2.xml [new file with mode: 0644]
tests/storagevolxml2xmltest.c [new file with mode: 0644]

index c2021412d6c106cd5d12a9d7e49fa3e7794fbd9e..399baee0c201c2509d269d84749f087eee6f1a75 100644 (file)
@@ -16,6 +16,7 @@ qemuhelptest
 networkxml2xmltest
 nodedevxml2xmltest
 interfacexml2xmltest
+storagevolxml2xmltest
 storagepoolxml2xmltest
 nodeinfotest
 statstest
index b6acfa4105c70ebc401c6b7ffc41f73a620e3da3..44f16adc09dbaf1dbb6a5ab58b07cb30b243182b 100644 (file)
@@ -65,7 +65,8 @@ EXTRA_DIST =          \
        storagepoolxml2xmlout \
        storagepoolxml2xmlin \
        storagevolschematest \
-       storagevolschemadata \
+       storagevolxml2xmlout \
+       storagevolxml2xmlin \
        nodedevschematest \
        nodedevschemadata \
        $(patsubst %,qemuhelpdata/%,$(qemuhelpdata))
@@ -99,7 +100,7 @@ endif
 
 noinst_PROGRAMS += networkxml2xmltest
 
-noinst_PROGRAMS += storagepoolxml2xmltest
+noinst_PROGRAMS += storagevolxml2xmltest storagepoolxml2xmltest
 
 noinst_PROGRAMS += nodedevxml2xmltest
 
@@ -176,7 +177,7 @@ endif
 
 TESTS += networkxml2xmltest
 
-TESTS += storagepoolxml2xmltest
+TESTS += storagevolxml2xmltest storagepoolxml2xmltest
 
 TESTS += nodedevxml2xmltest
 
@@ -279,6 +280,11 @@ networkxml2xmltest_SOURCES = \
        testutils.c testutils.h
 networkxml2xmltest_LDADD = $(LDADDS)
 
+storagevolxml2xmltest_SOURCES = \
+       storagevolxml2xmltest.c \
+       testutils.c testutils.h
+storagevolxml2xmltest_LDADD = $(LDADDS)
+
 storagepoolxml2xmltest_SOURCES = \
        storagepoolxml2xmltest.c \
        testutils.c testutils.h
index 8b5559aaec1e41d29b31d41aece5ef25ed6bef22..ffc5c8ae002708291f1b09b48b0e3f5d1cc1923a 100755 (executable)
@@ -2,8 +2,7 @@
 
 source ./schematestutils.sh
 
-DIRS="storagevolschemadata"
+DIRS="storagevolxml2xmlin storagevolxml2xmlout"
 SCHEMA="storagevol.rng"
 
 check_schema "$DIRS" "$SCHEMA"
-
diff --git a/tests/storagevolxml2xmlin/vol-file-backing.xml b/tests/storagevolxml2xmlin/vol-file-backing.xml
new file mode 100644 (file)
index 0000000..c1a5837
--- /dev/null
@@ -0,0 +1,24 @@
+<volume>
+  <name>sparse.img</name>
+  <source/>
+  <capacity>10000000000</capacity>
+  <allocation>0</allocation>
+  <target>
+    <path>/var/lib/libvirt/images/sparse.img</path>
+    <permissions>
+      <mode>0</mode>
+      <owner>0744</owner>
+      <group>0</group>
+    </permissions>
+  </target>
+  <backingStore>
+    <path>/var/lib/virt/images/master.img</path>
+    <format type='vmdk'/>
+    <permissions>
+      <mode>0744</mode>
+      <owner>1</owner>
+      <group>1</group>
+      <label>virt_image_t</label>
+    </permissions>
+  </backingStore>
+</volume>
diff --git a/tests/storagevolxml2xmlin/vol-file.xml b/tests/storagevolxml2xmlin/vol-file.xml
new file mode 100644 (file)
index 0000000..d7de0aa
--- /dev/null
@@ -0,0 +1,15 @@
+<volume>
+  <name>sparse.img</name>
+  <source/>
+  <capacity unit="T">1</capacity>
+  <allocation>0</allocation>
+  <target>
+    <path>/var/lib/libvirt/images/sparse.img</path>
+    <permissions>
+      <mode>0</mode>
+      <owner>0744</owner>
+      <group>0</group>
+      <label>virt_image_t</label>
+    </permissions>
+  </target>
+</volume>
diff --git a/tests/storagevolxml2xmlin/vol-logical-backing.xml b/tests/storagevolxml2xmlin/vol-logical-backing.xml
new file mode 100644 (file)
index 0000000..b4141a5
--- /dev/null
@@ -0,0 +1,29 @@
+<volume>
+  <name>Swap</name>
+  <key>r4xkCv-MQhr-WKIT-R66x-Epn2-e8hG-1Z5gY0</key>
+  <source>
+    <device path='/dev/sda2'>
+      <extent start='31440502784' end='33520877568'/>
+    </device>
+  </source>
+  <capacity>2080374784</capacity>
+  <allocation>2080374784</allocation>
+  <target>
+    <path>/dev/HostVG/Swap</path>
+    <permissions>
+      <mode>0660</mode>
+      <owner>0</owner>
+      <group>6</group>
+      <label>system_u:object_r:fixed_disk_device_t:s0</label>
+    </permissions>
+  </target>
+  <backingStore>
+    <path>/dev/HostVG/snapshot</path>
+    <permissions>
+      <mode>0744</mode>
+      <owner>1</owner>
+      <group>1</group>
+      <label>virt_image_t</label>
+    </permissions>
+  </backingStore>
+</volume>
similarity index 94%
rename from tests/storagevolschemadata/vol-logical.xml
rename to tests/storagevolxml2xmlin/vol-logical.xml
index 1c1e29c43a80d0232094cdf305bddd00b108b060..cd4d3f7f03c79eee305f4de1de04c998161bf8f7 100644 (file)
@@ -11,7 +11,7 @@
   <target>
     <path>/dev/HostVG/Swap</path>
     <permissions>
-      <mode>060660</mode>
+      <mode>0660</mode>
       <owner>0</owner>
       <group>6</group>
       <label>system_u:object_r:fixed_disk_device_t:s0</label>
similarity index 94%
rename from tests/storagevolschemadata/vol-partition.xml
rename to tests/storagevolxml2xmlin/vol-partition.xml
index 2db7e9230b6c4701207ebc75709fdb3ef734a364..6990bb59030fdabf08cddb6062bc3f64911d319a 100644 (file)
@@ -12,7 +12,7 @@
     <path>/dev/sda1</path>
     <format type='none'/>
     <permissions>
-      <mode>060660</mode>
+      <mode>0660</mode>
       <owner>0</owner>
       <group>6</group>
       <label>system_u:object_r:fixed_disk_device_t:s0</label>
similarity index 93%
rename from tests/storagevolschemadata/vol-qcow2.xml
rename to tests/storagevolxml2xmlin/vol-qcow2.xml
index 2a13cd16e46d4e0bb4a9fd03415809e69e45c321..b4924de8404f6958444b55d5bcc6b8d88df8927f 100644 (file)
@@ -9,7 +9,7 @@
     <path>/var/lib/libvirt/images/OtherDemo.img</path>
     <format type='qcow2'/>
     <permissions>
-      <mode>0100644</mode>
+      <mode>0644</mode>
       <owner>0</owner>
       <group>0</group>
       <label>unconfined_u:object_r:virt_image_t:s0</label>
@@ -22,7 +22,7 @@
     <path>/var/lib/libvirt/images/BaseDemo.img</path>
     <format type='raw'/>
     <permissions>
-      <mode>0100644</mode>
+      <mode>0644</mode>
       <owner>0</owner>
       <group>0</group>
       <label>unconfined_u:object_r:virt_image_t:s0</label>
diff --git a/tests/storagevolxml2xmlout/vol-file-backing.xml b/tests/storagevolxml2xmlout/vol-file-backing.xml
new file mode 100644 (file)
index 0000000..2d7b9d0
--- /dev/null
@@ -0,0 +1,27 @@
+<volume>
+  <name>sparse.img</name>
+  <key>(null)</key>
+  <source>
+  </source>
+  <capacity>10000000000</capacity>
+  <allocation>0</allocation>
+  <target>
+    <path>/var/lib/libvirt/images/sparse.img</path>
+    <format type='raw'/>
+    <permissions>
+      <mode>00</mode>
+      <owner>744</owner>
+      <group>0</group>
+    </permissions>
+  </target>
+  <backingStore>
+    <path>/var/lib/virt/images/master.img</path>
+    <format type='vmdk'/>
+    <permissions>
+      <mode>0744</mode>
+      <owner>1</owner>
+      <group>1</group>
+      <label>virt_image_t</label>
+    </permissions>
+  </backingStore>
+</volume>
diff --git a/tests/storagevolxml2xmlout/vol-file.xml b/tests/storagevolxml2xmlout/vol-file.xml
new file mode 100644 (file)
index 0000000..c4cc91e
--- /dev/null
@@ -0,0 +1,18 @@
+<volume>
+  <name>sparse.img</name>
+  <key>(null)</key>
+  <source>
+  </source>
+  <capacity>1099511627776</capacity>
+  <allocation>0</allocation>
+  <target>
+    <path>/var/lib/libvirt/images/sparse.img</path>
+    <format type='raw'/>
+    <permissions>
+      <mode>00</mode>
+      <owner>744</owner>
+      <group>0</group>
+      <label>virt_image_t</label>
+    </permissions>
+  </target>
+</volume>
diff --git a/tests/storagevolxml2xmlout/vol-logical-backing.xml b/tests/storagevolxml2xmlout/vol-logical-backing.xml
new file mode 100644 (file)
index 0000000..45b8f3a
--- /dev/null
@@ -0,0 +1,26 @@
+<volume>
+  <name>Swap</name>
+  <key>(null)</key>
+  <source>
+  </source>
+  <capacity>2080374784</capacity>
+  <allocation>2080374784</allocation>
+  <target>
+    <path>/dev/HostVG/Swap</path>
+    <permissions>
+      <mode>0660</mode>
+      <owner>0</owner>
+      <group>6</group>
+      <label>system_u:object_r:fixed_disk_device_t:s0</label>
+    </permissions>
+  </target>
+  <backingStore>
+    <path>/dev/HostVG/snapshot</path>
+    <permissions>
+      <mode>0744</mode>
+      <owner>1</owner>
+      <group>1</group>
+      <label>virt_image_t</label>
+    </permissions>
+  </backingStore>
+</volume>
diff --git a/tests/storagevolxml2xmlout/vol-logical.xml b/tests/storagevolxml2xmlout/vol-logical.xml
new file mode 100644 (file)
index 0000000..570956e
--- /dev/null
@@ -0,0 +1,17 @@
+<volume>
+  <name>Swap</name>
+  <key>(null)</key>
+  <source>
+  </source>
+  <capacity>2080374784</capacity>
+  <allocation>2080374784</allocation>
+  <target>
+    <path>/dev/HostVG/Swap</path>
+    <permissions>
+      <mode>0660</mode>
+      <owner>0</owner>
+      <group>6</group>
+      <label>system_u:object_r:fixed_disk_device_t:s0</label>
+    </permissions>
+  </target>
+</volume>
diff --git a/tests/storagevolxml2xmlout/vol-partition.xml b/tests/storagevolxml2xmlout/vol-partition.xml
new file mode 100644 (file)
index 0000000..c3d861e
--- /dev/null
@@ -0,0 +1,18 @@
+<volume>
+  <name>sda1</name>
+  <key>(null)</key>
+  <source>
+  </source>
+  <capacity>106896384</capacity>
+  <allocation>106896384</allocation>
+  <target>
+    <path>/dev/sda1</path>
+    <format type='none'/>
+    <permissions>
+      <mode>0660</mode>
+      <owner>0</owner>
+      <group>6</group>
+      <label>system_u:object_r:fixed_disk_device_t:s0</label>
+    </permissions>
+  </target>
+</volume>
diff --git a/tests/storagevolxml2xmlout/vol-qcow2.xml b/tests/storagevolxml2xmlout/vol-qcow2.xml
new file mode 100644 (file)
index 0000000..30fea1e
--- /dev/null
@@ -0,0 +1,31 @@
+<volume>
+  <name>OtherDemo.img</name>
+  <key>(null)</key>
+  <source>
+  </source>
+  <capacity>5368709120</capacity>
+  <allocation>294912</allocation>
+  <target>
+    <path>/var/lib/libvirt/images/OtherDemo.img</path>
+    <format type='qcow2'/>
+    <permissions>
+      <mode>0644</mode>
+      <owner>0</owner>
+      <group>0</group>
+      <label>unconfined_u:object_r:virt_image_t:s0</label>
+    </permissions>
+    <encryption format='qcow'>
+      <secret type='passphrase' uuid='e78d4b51-a2af-485f-b0f5-afca709a80f4'/>
+    </encryption>
+  </target>
+  <backingStore>
+    <path>/var/lib/libvirt/images/BaseDemo.img</path>
+    <format type='raw'/>
+    <permissions>
+      <mode>0644</mode>
+      <owner>0</owner>
+      <group>0</group>
+      <label>unconfined_u:object_r:virt_image_t:s0</label>
+    </permissions>
+  </backingStore>
+</volume>
diff --git a/tests/storagevolxml2xmltest.c b/tests/storagevolxml2xmltest.c
new file mode 100644 (file)
index 0000000..17bf009
--- /dev/null
@@ -0,0 +1,123 @@
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "internal.h"
+#include "testutils.h"
+#include "storage_conf.h"
+#include "testutilsqemu.h"
+
+static char *progname;
+static char *abs_srcdir;
+
+#define MAX_FILE 4096
+
+
+static int testCompareXMLToXMLFiles(const char *poolxml,
+                                    const char *inxml,
+                                    const char *outxml) {
+    char poolXmlData[MAX_FILE];
+    char *poolXmlPtr = &(poolXmlData[0]);
+    char inXmlData[MAX_FILE];
+    char *inXmlPtr = &(inXmlData[0]);
+    char outXmlData[MAX_FILE];
+    char *outXmlPtr = &(outXmlData[0]);
+    char *actual = NULL;
+    int ret = -1;
+    virStoragePoolDefPtr pool = NULL;
+    virStorageVolDefPtr dev = NULL;
+
+    if (virtTestLoadFile(poolxml, &poolXmlPtr, MAX_FILE) < 0)
+        goto fail;
+    if (virtTestLoadFile(inxml, &inXmlPtr, MAX_FILE) < 0)
+        goto fail;
+    if (virtTestLoadFile(outxml, &outXmlPtr, MAX_FILE) < 0)
+        goto fail;
+
+    if (!(pool = virStoragePoolDefParseString(NULL, poolXmlData)))
+        goto fail;
+
+    if (!(dev = virStorageVolDefParseString(NULL, pool, inXmlData)))
+        goto fail;
+
+    if (!(actual = virStorageVolDefFormat(NULL, pool, dev)))
+        goto fail;
+
+    if (STRNEQ(outXmlData, actual)) {
+        virtTestDifference(stderr, outXmlData, actual);
+        goto fail;
+    }
+
+    ret = 0;
+
+ fail:
+    free(actual);
+    virStoragePoolDefFree(pool);
+    virStorageVolDefFree(dev);
+    return ret;
+}
+
+struct testInfo {
+    const char *pool;
+    const char *name;
+};
+
+static int testCompareXMLToXMLHelper(const void *data) {
+    char poolxml[PATH_MAX];
+    char inxml[PATH_MAX];
+    char outxml[PATH_MAX];
+    const struct testInfo *info = data;
+
+    snprintf(poolxml, PATH_MAX, "%s/storagepoolxml2xmlin/%s.xml",
+             abs_srcdir, (const char*)info->pool);
+    snprintf(inxml, PATH_MAX, "%s/storagevolxml2xmlin/%s.xml",
+             abs_srcdir, (const char*)info->name);
+    snprintf(outxml, PATH_MAX, "%s/storagevolxml2xmlout/%s.xml",
+             abs_srcdir, (const char*)info->name);
+    return testCompareXMLToXMLFiles(poolxml, inxml, outxml);
+}
+
+
+static int
+mymain(int argc, char **argv)
+{
+    int ret = 0;
+    char cwd[PATH_MAX];
+
+    progname = argv[0];
+
+    if (argc > 1) {
+        fprintf(stderr, "Usage: %s\n", progname);
+        return (EXIT_FAILURE);
+    }
+
+    abs_srcdir = getenv("abs_srcdir");
+    if (!abs_srcdir)
+        abs_srcdir = getcwd(cwd, sizeof(cwd));
+
+#define DO_TEST(pool, name) \
+    do {                    \
+        struct testInfo info = { pool, name };             \
+        if (virtTestRun("Storage Vol XML-2-XML " name, \
+                        1, testCompareXMLToXMLHelper, &info) < 0) \
+            ret = -1;   \
+       }    \
+    while(0);
+
+    DO_TEST("pool-dir", "vol-file");
+    DO_TEST("pool-dir", "vol-file-backing");
+    DO_TEST("pool-dir", "vol-qcow2");
+    DO_TEST("pool-disk", "vol-partition");
+    DO_TEST("pool-logical", "vol-logical");
+    DO_TEST("pool-logical", "vol-logical-backing");
+
+    return (ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+VIRT_TEST_MAIN(mymain)