diff --git a/tests/.gitignore b/tests/.gitignore index c2021412d6c106cd5d12a9d7e49fa3e7794fbd9e..399baee0c201c2509d269d84749f087eee6f1a75 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -16,6 +16,7 @@ qemuhelptest networkxml2xmltest nodedevxml2xmltest interfacexml2xmltest +storagevolxml2xmltest storagepoolxml2xmltest nodeinfotest statstest diff --git a/tests/Makefile.am b/tests/Makefile.am index b6acfa4105c70ebc401c6b7ffc41f73a620e3da3..44f16adc09dbaf1dbb6a5ab58b07cb30b243182b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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 diff --git a/tests/storagevolschematest b/tests/storagevolschematest index 8b5559aaec1e41d29b31d41aece5ef25ed6bef22..ffc5c8ae002708291f1b09b48b0e3f5d1cc1923a 100755 --- a/tests/storagevolschematest +++ b/tests/storagevolschematest @@ -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 index 0000000000000000000000000000000000000000..c1a5837c6a92280118d6221102138cd3866439b3 --- /dev/null +++ b/tests/storagevolxml2xmlin/vol-file-backing.xml @@ -0,0 +1,24 @@ + + sparse.img + + 10000000000 + 0 + + /var/lib/libvirt/images/sparse.img + + 0 + 0744 + 0 + + + + /var/lib/virt/images/master.img + + + 0744 + 1 + 1 + + + + diff --git a/tests/storagevolxml2xmlin/vol-file.xml b/tests/storagevolxml2xmlin/vol-file.xml new file mode 100644 index 0000000000000000000000000000000000000000..d7de0aa23ce3e938070e5a84a89bb0980b4685f7 --- /dev/null +++ b/tests/storagevolxml2xmlin/vol-file.xml @@ -0,0 +1,15 @@ + + sparse.img + + 1 + 0 + + /var/lib/libvirt/images/sparse.img + + 0 + 0744 + 0 + + + + diff --git a/tests/storagevolxml2xmlin/vol-logical-backing.xml b/tests/storagevolxml2xmlin/vol-logical-backing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b4141a5c99715ff3cc362e5ac78fc53f1beb1194 --- /dev/null +++ b/tests/storagevolxml2xmlin/vol-logical-backing.xml @@ -0,0 +1,29 @@ + + Swap + r4xkCv-MQhr-WKIT-R66x-Epn2-e8hG-1Z5gY0 + + + + + + 2080374784 + 2080374784 + + /dev/HostVG/Swap + + 0660 + 0 + 6 + + + + + /dev/HostVG/snapshot + + 0744 + 1 + 1 + + + + diff --git a/tests/storagevolschemadata/vol-logical.xml b/tests/storagevolxml2xmlin/vol-logical.xml similarity index 94% rename from tests/storagevolschemadata/vol-logical.xml rename to tests/storagevolxml2xmlin/vol-logical.xml index 1c1e29c43a80d0232094cdf305bddd00b108b060..cd4d3f7f03c79eee305f4de1de04c998161bf8f7 100644 --- a/tests/storagevolschemadata/vol-logical.xml +++ b/tests/storagevolxml2xmlin/vol-logical.xml @@ -11,7 +11,7 @@ /dev/HostVG/Swap - 060660 + 0660 0 6 diff --git a/tests/storagevolschemadata/vol-partition.xml b/tests/storagevolxml2xmlin/vol-partition.xml similarity index 94% rename from tests/storagevolschemadata/vol-partition.xml rename to tests/storagevolxml2xmlin/vol-partition.xml index 2db7e9230b6c4701207ebc75709fdb3ef734a364..6990bb59030fdabf08cddb6062bc3f64911d319a 100644 --- a/tests/storagevolschemadata/vol-partition.xml +++ b/tests/storagevolxml2xmlin/vol-partition.xml @@ -12,7 +12,7 @@ /dev/sda1 - 060660 + 0660 0 6 diff --git a/tests/storagevolschemadata/vol-qcow2.xml b/tests/storagevolxml2xmlin/vol-qcow2.xml similarity index 93% rename from tests/storagevolschemadata/vol-qcow2.xml rename to tests/storagevolxml2xmlin/vol-qcow2.xml index 2a13cd16e46d4e0bb4a9fd03415809e69e45c321..b4924de8404f6958444b55d5bcc6b8d88df8927f 100644 --- a/tests/storagevolschemadata/vol-qcow2.xml +++ b/tests/storagevolxml2xmlin/vol-qcow2.xml @@ -9,7 +9,7 @@ /var/lib/libvirt/images/OtherDemo.img - 0100644 + 0644 0 0 @@ -22,7 +22,7 @@ /var/lib/libvirt/images/BaseDemo.img - 0100644 + 0644 0 0 diff --git a/tests/storagevolxml2xmlout/vol-file-backing.xml b/tests/storagevolxml2xmlout/vol-file-backing.xml new file mode 100644 index 0000000000000000000000000000000000000000..2d7b9d03e37f0344bae6b3fbac77476144a939ad --- /dev/null +++ b/tests/storagevolxml2xmlout/vol-file-backing.xml @@ -0,0 +1,27 @@ + + sparse.img + (null) + + + 10000000000 + 0 + + /var/lib/libvirt/images/sparse.img + + + 00 + 744 + 0 + + + + /var/lib/virt/images/master.img + + + 0744 + 1 + 1 + + + + diff --git a/tests/storagevolxml2xmlout/vol-file.xml b/tests/storagevolxml2xmlout/vol-file.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4cc91e36bf2c653b8a606757b86a9c49f04c351 --- /dev/null +++ b/tests/storagevolxml2xmlout/vol-file.xml @@ -0,0 +1,18 @@ + + sparse.img + (null) + + + 1099511627776 + 0 + + /var/lib/libvirt/images/sparse.img + + + 00 + 744 + 0 + + + + diff --git a/tests/storagevolxml2xmlout/vol-logical-backing.xml b/tests/storagevolxml2xmlout/vol-logical-backing.xml new file mode 100644 index 0000000000000000000000000000000000000000..45b8f3a9f4d126144cc1e0cc3fa0213711b77181 --- /dev/null +++ b/tests/storagevolxml2xmlout/vol-logical-backing.xml @@ -0,0 +1,26 @@ + + Swap + (null) + + + 2080374784 + 2080374784 + + /dev/HostVG/Swap + + 0660 + 0 + 6 + + + + + /dev/HostVG/snapshot + + 0744 + 1 + 1 + + + + diff --git a/tests/storagevolxml2xmlout/vol-logical.xml b/tests/storagevolxml2xmlout/vol-logical.xml new file mode 100644 index 0000000000000000000000000000000000000000..570956e1a0daa86168f4c2cfeacdba17c8e100da --- /dev/null +++ b/tests/storagevolxml2xmlout/vol-logical.xml @@ -0,0 +1,17 @@ + + Swap + (null) + + + 2080374784 + 2080374784 + + /dev/HostVG/Swap + + 0660 + 0 + 6 + + + + diff --git a/tests/storagevolxml2xmlout/vol-partition.xml b/tests/storagevolxml2xmlout/vol-partition.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3d861e7f1afbba337844136cf3a077506097e30 --- /dev/null +++ b/tests/storagevolxml2xmlout/vol-partition.xml @@ -0,0 +1,18 @@ + + sda1 + (null) + + + 106896384 + 106896384 + + /dev/sda1 + + + 0660 + 0 + 6 + + + + diff --git a/tests/storagevolxml2xmlout/vol-qcow2.xml b/tests/storagevolxml2xmlout/vol-qcow2.xml new file mode 100644 index 0000000000000000000000000000000000000000..30fea1ecb45f96c9689cccab942dafeb06112465 --- /dev/null +++ b/tests/storagevolxml2xmlout/vol-qcow2.xml @@ -0,0 +1,31 @@ + + OtherDemo.img + (null) + + + 5368709120 + 294912 + + /var/lib/libvirt/images/OtherDemo.img + + + 0644 + 0 + 0 + + + + + + + + /var/lib/libvirt/images/BaseDemo.img + + + 0644 + 0 + 0 + + + + diff --git a/tests/storagevolxml2xmltest.c b/tests/storagevolxml2xmltest.c new file mode 100644 index 0000000000000000000000000000000000000000..17bf009d82b598f511aafcc9c802aa24fe07591c --- /dev/null +++ b/tests/storagevolxml2xmltest.c @@ -0,0 +1,123 @@ +#include + +#include +#include +#include +#include + +#include +#include + +#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)