[libvirt] [PATCH 0/4] Test logical volume cloning in storagevolxml2argvtest

Ján Tomko (4): Use separate macros for failure/success in vol-to-argv test Move pool XML out of storagevolxml2argvdata Move volume XMLs out of storagevolxml2argvdata Add inputpool to storagevolxml2argvtest .../storagevolxml2argvdata/logical-from-qcow2.argv | 2 + tests/storagevolxml2argvdata/pool-dir.xml | 18 --- .../storagevolxml2argvdata/qcow2-from-logical.argv | 2 + tests/storagevolxml2argvdata/vol-file.xml | 20 ---- tests/storagevolxml2argvdata/vol-qcow2-1.1.xml | 32 ------ tests/storagevolxml2argvtest.c | 128 ++++++++++++++++----- .../vol-qcow2-0.10-lazy.xml | 0 tests/storagevolxml2xmlin/vol-qcow2-1.1.xml | 2 +- tests/storagevolxml2xmlin/vol-qcow2-lazy.xml | 2 +- .../vol-qcow2-nobacking.xml | 0 tests/storagevolxml2xmlin/vol-qcow2.xml | 2 +- .../vol-qcow2-0.10-lazy.xml} | 8 +- tests/storagevolxml2xmlout/vol-qcow2-1.1.xml | 2 +- tests/storagevolxml2xmlout/vol-qcow2-lazy.xml | 2 +- .../vol-qcow2-nobacking.xml} | 16 +-- tests/storagevolxml2xmlout/vol-qcow2.xml | 2 +- tests/storagevolxml2xmltest.c | 2 + 17 files changed, 120 insertions(+), 120 deletions(-) create mode 100644 tests/storagevolxml2argvdata/logical-from-qcow2.argv delete mode 100644 tests/storagevolxml2argvdata/pool-dir.xml create mode 100644 tests/storagevolxml2argvdata/qcow2-from-logical.argv delete mode 100644 tests/storagevolxml2argvdata/vol-file.xml delete mode 100644 tests/storagevolxml2argvdata/vol-qcow2-1.1.xml rename tests/{storagevolxml2argvdata => storagevolxml2xmlin}/vol-qcow2-0.10-lazy.xml (100%) rename tests/{storagevolxml2argvdata => storagevolxml2xmlin}/vol-qcow2-nobacking.xml (100%) rename tests/{storagevolxml2argvdata/vol-qcow2-lazy.xml => storagevolxml2xmlout/vol-qcow2-0.10-lazy.xml} (84%) rename tests/{storagevolxml2argvdata/vol-qcow2.xml => storagevolxml2xmlout/vol-qcow2-nobacking.xml} (55%) -- 1.8.1.5

Reindent them to put the input volume on a separate line. --- tests/storagevolxml2argvtest.c | 64 +++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 89c233f..4f4bf7d 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -161,7 +161,8 @@ mymain(void) int ret = 0; unsigned int flags = VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA; -#define DO_TEST(shouldFail, pool, vol, inputvol, cmdline, flags, imgformat) \ +#define DO_TEST_FULL(shouldFail, pool, vol, inputvol, cmdline, flags, \ + imgformat) \ do { \ struct testInfo info = { shouldFail, pool, vol, inputvol, cmdline, \ flags, imgformat }; \ @@ -171,31 +172,54 @@ mymain(void) } \ while (0); - DO_TEST(false, "pool-dir", "vol-qcow2", NULL, "qcow2", 0, FMT_OPTIONS); - DO_TEST(true, "pool-dir", "vol-qcow2", NULL, "qcow2-prealloc", flags, - FMT_OPTIONS); - DO_TEST(false, "pool-dir", "vol-qcow2-nobacking", NULL, +#define DO_TEST(pool, ...) \ + DO_TEST_FULL(false, pool, __VA_ARGS__) + +#define DO_TEST_FAIL(pool, ...) \ + DO_TEST_FULL(true, pool, __VA_ARGS__) + + DO_TEST("pool-dir", "vol-qcow2", + NULL, + "qcow2", 0, FMT_OPTIONS); + DO_TEST_FAIL("pool-dir", "vol-qcow2", + NULL, + "qcow2-prealloc", flags, FMT_OPTIONS); + DO_TEST("pool-dir", "vol-qcow2-nobacking", + NULL, "qcow2-nobacking-prealloc", flags, FMT_OPTIONS); - DO_TEST(false, "pool-dir", "vol-qcow2-nobacking", "vol-file", + DO_TEST("pool-dir", "vol-qcow2-nobacking", + "vol-file", "qcow2-nobacking-convert-prealloc", flags, FMT_OPTIONS); - DO_TEST(true, "pool-dir", "vol-qcow2", "vol-file", - "qcow2-convert-prealloc", flags, FMT_OPTIONS); - DO_TEST(false, "pool-dir", "vol-qcow2", NULL, "qcow2-flag", 0, FMT_FLAG); - DO_TEST(false, "pool-dir", "vol-qcow2-nobacking", NULL, + DO_TEST_FAIL("pool-dir", "vol-qcow2", + "vol-file", + "qcow2-convert-prealloc", flags, FMT_OPTIONS); + DO_TEST("pool-dir", "vol-qcow2", + NULL, + "qcow2-flag", 0, FMT_FLAG); + DO_TEST("pool-dir", "vol-qcow2-nobacking", + NULL, "qcow2-nobacking-flag", 0, FMT_FLAG); - DO_TEST(false, "pool-dir", "vol-qcow2-nobacking", "vol-file", + DO_TEST("pool-dir", "vol-qcow2-nobacking", + "vol-file", "qcow2-nobacking-convert-flag", 0, FMT_FLAG); - DO_TEST(false, "pool-dir", "vol-qcow2", NULL, "qcow2-none", 0, FMT_NONE); - DO_TEST(false, "pool-dir", "vol-qcow2-nobacking", NULL, + DO_TEST("pool-dir", "vol-qcow2", + NULL, + "qcow2-none", 0, FMT_NONE); + DO_TEST("pool-dir", "vol-qcow2-nobacking", + NULL, "qcow2-nobacking-none", 0, FMT_NONE); - DO_TEST(false, "pool-dir", "vol-qcow2-nobacking", "vol-file", + DO_TEST("pool-dir", "vol-qcow2-nobacking", + "vol-file", "qcow2-nobacking-convert-none", 0, FMT_NONE); - DO_TEST(false, "pool-dir", "vol-qcow2-lazy", NULL, "qcow2-lazy", 0, - FMT_OPTIONS); - DO_TEST(false, "pool-dir", "vol-qcow2-1.1", NULL, "qcow2-1.1", 0, - FMT_OPTIONS); - DO_TEST(true, "pool-dir", "vol-qcow2-0.10-lazy", NULL, "qcow2-0.10-lazy", 0, - FMT_OPTIONS); + DO_TEST("pool-dir", "vol-qcow2-lazy", + NULL, + "qcow2-lazy", 0, FMT_OPTIONS); + DO_TEST("pool-dir", "vol-qcow2-1.1", + NULL, + "qcow2-1.1", 0, FMT_OPTIONS); + DO_TEST_FAIL("pool-dir", "vol-qcow2-0.10-lazy", + NULL, + "qcow2-0.10-lazy", 0, FMT_OPTIONS); return ret==0 ? EXIT_SUCCESS : EXIT_FAILURE; } -- 1.8.1.5

On 07/22/2013 08:52 AM, Ján Tomko wrote:
Reindent them to put the input volume on a separate line. --- tests/storagevolxml2argvtest.c | 64 +++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 20 deletions(-)
diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 89c233f..4f4bf7d 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -161,7 +161,8 @@ mymain(void) int ret = 0; unsigned int flags = VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
-#define DO_TEST(shouldFail, pool, vol, inputvol, cmdline, flags, imgformat) \ +#define DO_TEST_FULL(shouldFail, pool, vol, inputvol, cmdline, flags, \ + imgformat) \
Is it worth lining up the \ to a single column? But that's cosmetic, I don't care if you do that or not. ACK. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 07/25/2013 12:29 AM, Eric Blake wrote:
On 07/22/2013 08:52 AM, Ján Tomko wrote:
Reindent them to put the input volume on a separate line. --- tests/storagevolxml2argvtest.c | 64 +++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 20 deletions(-)
diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 89c233f..4f4bf7d 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -161,7 +161,8 @@ mymain(void) int ret = 0; unsigned int flags = VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
-#define DO_TEST(shouldFail, pool, vol, inputvol, cmdline, flags, imgformat) \ +#define DO_TEST_FULL(shouldFail, pool, vol, inputvol, cmdline, flags, \ + imgformat) \
Is it worth lining up the \ to a single column? But that's cosmetic, I don't care if you do that or not.
ACK.
I've lined them up and pushed the series. Jan

Reuse the pool definition from storagepoolxml2xmlin. --- tests/storagevolxml2argvdata/pool-dir.xml | 18 ------------------ tests/storagevolxml2argvtest.c | 2 +- 2 files changed, 1 insertion(+), 19 deletions(-) delete mode 100644 tests/storagevolxml2argvdata/pool-dir.xml diff --git a/tests/storagevolxml2argvdata/pool-dir.xml b/tests/storagevolxml2argvdata/pool-dir.xml deleted file mode 100644 index e10ccb7..0000000 --- a/tests/storagevolxml2argvdata/pool-dir.xml +++ /dev/null @@ -1,18 +0,0 @@ -<pool type='dir'> - <name>virtimages</name> - <uuid>70a7eb15-6c34-ee9c-bf57-69e8e5ff3fb2</uuid> - <capacity>0</capacity> - <allocation>0</allocation> - <available>0</available> - <source> - </source> - <target> - <path>///var/////lib/libvirt/images//</path> - <permissions> - <mode>0700</mode> - <owner>-1</owner> - <group>-1</group> - <label>some_label_t</label> - </permissions> - </target> -</pool> diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 4f4bf7d..1e3ff9a 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -124,7 +124,7 @@ testCompareXMLToArgvHelper(const void *data) virAsprintf(&inputvolxml, "%s/storagevolxml2argvdata/%s.xml", abs_srcdir, info->inputvol) < 0) goto cleanup; - if (virAsprintf(&poolxml, "%s/storagevolxml2argvdata/%s.xml", + if (virAsprintf(&poolxml, "%s/storagepoolxml2xmlin/%s.xml", abs_srcdir, info->pool) < 0 || virAsprintf(&volxml, "%s/storagevolxml2argvdata/%s.xml", abs_srcdir, info->vol) < 0) { -- 1.8.1.5

On 07/22/2013 08:52 AM, Ján Tomko wrote:
Reuse the pool definition from storagepoolxml2xmlin. --- tests/storagevolxml2argvdata/pool-dir.xml | 18 ------------------ tests/storagevolxml2argvtest.c | 2 +- 2 files changed, 1 insertion(+), 19 deletions(-) delete mode 100644 tests/storagevolxml2argvdata/pool-dir.xml
ACK. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

Reuse the XML files in storagevolxml2xmlin. (This requires changing a few backing files to /dev/null, since virStorageBackendCreateQemuImgCmd checks for its presence) --- tests/storagevolxml2argvdata/vol-file.xml | 20 -------------- tests/storagevolxml2argvdata/vol-qcow2-1.1.xml | 32 ---------------------- tests/storagevolxml2argvtest.c | 4 +-- .../vol-qcow2-0.10-lazy.xml | 0 tests/storagevolxml2xmlin/vol-qcow2-1.1.xml | 2 +- tests/storagevolxml2xmlin/vol-qcow2-lazy.xml | 2 +- .../vol-qcow2-nobacking.xml | 0 tests/storagevolxml2xmlin/vol-qcow2.xml | 2 +- .../vol-qcow2-0.10-lazy.xml} | 8 +++--- tests/storagevolxml2xmlout/vol-qcow2-1.1.xml | 2 +- tests/storagevolxml2xmlout/vol-qcow2-lazy.xml | 2 +- .../vol-qcow2-nobacking.xml} | 16 ++--------- tests/storagevolxml2xmlout/vol-qcow2.xml | 2 +- tests/storagevolxml2xmltest.c | 2 ++ 14 files changed, 17 insertions(+), 77 deletions(-) delete mode 100644 tests/storagevolxml2argvdata/vol-file.xml delete mode 100644 tests/storagevolxml2argvdata/vol-qcow2-1.1.xml rename tests/{storagevolxml2argvdata => storagevolxml2xmlin}/vol-qcow2-0.10-lazy.xml (100%) rename tests/{storagevolxml2argvdata => storagevolxml2xmlin}/vol-qcow2-nobacking.xml (100%) rename tests/{storagevolxml2argvdata/vol-qcow2-lazy.xml => storagevolxml2xmlout/vol-qcow2-0.10-lazy.xml} (84%) rename tests/{storagevolxml2argvdata/vol-qcow2.xml => storagevolxml2xmlout/vol-qcow2-nobacking.xml} (55%) diff --git a/tests/storagevolxml2argvdata/vol-file.xml b/tests/storagevolxml2argvdata/vol-file.xml deleted file mode 100644 index d3f65f6..0000000 --- a/tests/storagevolxml2argvdata/vol-file.xml +++ /dev/null @@ -1,20 +0,0 @@ -<volume> - <name>sparse.img</name> - <source/> - <capacity unit="TiB">1</capacity> - <allocation unit="bytes">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> - <timestamps> - <atime>1341933637.273190990</atime> - <mtime>1341930622.047245868</mtime> - <ctime>1341930622.047245868</ctime> - </timestamps> - </target> -</volume> diff --git a/tests/storagevolxml2argvdata/vol-qcow2-1.1.xml b/tests/storagevolxml2argvdata/vol-qcow2-1.1.xml deleted file mode 100644 index 696e1e0..0000000 --- a/tests/storagevolxml2argvdata/vol-qcow2-1.1.xml +++ /dev/null @@ -1,32 +0,0 @@ -<volume> - <name>OtherDemo.img</name> - <key>/var/lib/libvirt/images/OtherDemo.img</key> - <source> - </source> - <capacity unit="G">5</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> - <features/> - </target> - <backingStore> - <path>/dev/null</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/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 1e3ff9a..b220994 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -121,12 +121,12 @@ testCompareXMLToArgvHelper(const void *data) char *cmdline = NULL; if (info->inputvol && - virAsprintf(&inputvolxml, "%s/storagevolxml2argvdata/%s.xml", + virAsprintf(&inputvolxml, "%s/storagevolxml2xmlin/%s.xml", abs_srcdir, info->inputvol) < 0) goto cleanup; if (virAsprintf(&poolxml, "%s/storagepoolxml2xmlin/%s.xml", abs_srcdir, info->pool) < 0 || - virAsprintf(&volxml, "%s/storagevolxml2argvdata/%s.xml", + virAsprintf(&volxml, "%s/storagevolxml2xmlin/%s.xml", abs_srcdir, info->vol) < 0) { goto cleanup; } diff --git a/tests/storagevolxml2argvdata/vol-qcow2-0.10-lazy.xml b/tests/storagevolxml2xmlin/vol-qcow2-0.10-lazy.xml similarity index 100% rename from tests/storagevolxml2argvdata/vol-qcow2-0.10-lazy.xml rename to tests/storagevolxml2xmlin/vol-qcow2-0.10-lazy.xml diff --git a/tests/storagevolxml2xmlin/vol-qcow2-1.1.xml b/tests/storagevolxml2xmlin/vol-qcow2-1.1.xml index e8df8b3..696e1e0 100644 --- a/tests/storagevolxml2xmlin/vol-qcow2-1.1.xml +++ b/tests/storagevolxml2xmlin/vol-qcow2-1.1.xml @@ -20,7 +20,7 @@ <features/> </target> <backingStore> - <path>/var/lib/libvirt/images/BaseDemo.img</path> + <path>/dev/null</path> <format type='raw'/> <permissions> <mode>0644</mode> diff --git a/tests/storagevolxml2xmlin/vol-qcow2-lazy.xml b/tests/storagevolxml2xmlin/vol-qcow2-lazy.xml index 336342a..c1d7875 100644 --- a/tests/storagevolxml2xmlin/vol-qcow2-lazy.xml +++ b/tests/storagevolxml2xmlin/vol-qcow2-lazy.xml @@ -23,7 +23,7 @@ </features> </target> <backingStore> - <path>/var/lib/libvirt/images/BaseDemo.img</path> + <path>/dev/null</path> <format type='raw'/> <permissions> <mode>0644</mode> diff --git a/tests/storagevolxml2argvdata/vol-qcow2-nobacking.xml b/tests/storagevolxml2xmlin/vol-qcow2-nobacking.xml similarity index 100% rename from tests/storagevolxml2argvdata/vol-qcow2-nobacking.xml rename to tests/storagevolxml2xmlin/vol-qcow2-nobacking.xml diff --git a/tests/storagevolxml2xmlin/vol-qcow2.xml b/tests/storagevolxml2xmlin/vol-qcow2.xml index b4924de..49a7de3 100644 --- a/tests/storagevolxml2xmlin/vol-qcow2.xml +++ b/tests/storagevolxml2xmlin/vol-qcow2.xml @@ -19,7 +19,7 @@ </encryption> </target> <backingStore> - <path>/var/lib/libvirt/images/BaseDemo.img</path> + <path>/dev/null</path> <format type='raw'/> <permissions> <mode>0644</mode> diff --git a/tests/storagevolxml2argvdata/vol-qcow2-lazy.xml b/tests/storagevolxml2xmlout/vol-qcow2-0.10-lazy.xml similarity index 84% rename from tests/storagevolxml2argvdata/vol-qcow2-lazy.xml rename to tests/storagevolxml2xmlout/vol-qcow2-0.10-lazy.xml index c1d7875..a7b5fed 100644 --- a/tests/storagevolxml2argvdata/vol-qcow2-lazy.xml +++ b/tests/storagevolxml2xmlout/vol-qcow2-0.10-lazy.xml @@ -1,10 +1,10 @@ <volume> <name>OtherDemo.img</name> - <key>/var/lib/libvirt/images/OtherDemo.img</key> + <key>(null)</key> <source> </source> - <capacity unit="G">5</capacity> - <allocation>294912</allocation> + <capacity unit='bytes'>5368709120</capacity> + <allocation unit='bytes'>294912</allocation> <target> <path>/var/lib/libvirt/images/OtherDemo.img</path> <format type='qcow2'/> @@ -17,7 +17,7 @@ <encryption format='qcow'> <secret type='passphrase' uuid='e78d4b51-a2af-485f-b0f5-afca709a80f4'/> </encryption> - <compat>1.1</compat> + <compat>0.10</compat> <features> <lazy_refcounts/> </features> diff --git a/tests/storagevolxml2xmlout/vol-qcow2-1.1.xml b/tests/storagevolxml2xmlout/vol-qcow2-1.1.xml index 454ac11..b7df8a6 100644 --- a/tests/storagevolxml2xmlout/vol-qcow2-1.1.xml +++ b/tests/storagevolxml2xmlout/vol-qcow2-1.1.xml @@ -21,7 +21,7 @@ <features/> </target> <backingStore> - <path>/var/lib/libvirt/images/BaseDemo.img</path> + <path>/dev/null</path> <format type='raw'/> <permissions> <mode>0644</mode> diff --git a/tests/storagevolxml2xmlout/vol-qcow2-lazy.xml b/tests/storagevolxml2xmlout/vol-qcow2-lazy.xml index 4e30ede..92b7875 100644 --- a/tests/storagevolxml2xmlout/vol-qcow2-lazy.xml +++ b/tests/storagevolxml2xmlout/vol-qcow2-lazy.xml @@ -23,7 +23,7 @@ </features> </target> <backingStore> - <path>/var/lib/libvirt/images/BaseDemo.img</path> + <path>/dev/null</path> <format type='raw'/> <permissions> <mode>0644</mode> diff --git a/tests/storagevolxml2argvdata/vol-qcow2.xml b/tests/storagevolxml2xmlout/vol-qcow2-nobacking.xml similarity index 55% rename from tests/storagevolxml2argvdata/vol-qcow2.xml rename to tests/storagevolxml2xmlout/vol-qcow2-nobacking.xml index 49a7de3..e2da702 100644 --- a/tests/storagevolxml2argvdata/vol-qcow2.xml +++ b/tests/storagevolxml2xmlout/vol-qcow2-nobacking.xml @@ -1,10 +1,10 @@ <volume> <name>OtherDemo.img</name> - <key>/var/lib/libvirt/images/OtherDemo.img</key> + <key>(null)</key> <source> </source> - <capacity unit="G">5</capacity> - <allocation>294912</allocation> + <capacity unit='bytes'>5368709120</capacity> + <allocation unit='bytes'>294912</allocation> <target> <path>/var/lib/libvirt/images/OtherDemo.img</path> <format type='qcow2'/> @@ -18,14 +18,4 @@ <secret type='passphrase' uuid='e78d4b51-a2af-485f-b0f5-afca709a80f4'/> </encryption> </target> - <backingStore> - <path>/dev/null</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/storagevolxml2xmlout/vol-qcow2.xml b/tests/storagevolxml2xmlout/vol-qcow2.xml index 4490931..f931a62 100644 --- a/tests/storagevolxml2xmlout/vol-qcow2.xml +++ b/tests/storagevolxml2xmlout/vol-qcow2.xml @@ -19,7 +19,7 @@ </encryption> </target> <backingStore> - <path>/var/lib/libvirt/images/BaseDemo.img</path> + <path>/dev/null</path> <format type='raw'/> <permissions> <mode>0644</mode> diff --git a/tests/storagevolxml2xmltest.c b/tests/storagevolxml2xmltest.c index 05d2306..5b0a60b 100644 --- a/tests/storagevolxml2xmltest.c +++ b/tests/storagevolxml2xmltest.c @@ -114,6 +114,8 @@ mymain(void) DO_TEST("pool-dir", "vol-qcow2"); DO_TEST("pool-dir", "vol-qcow2-1.1"); DO_TEST("pool-dir", "vol-qcow2-lazy"); + DO_TEST("pool-dir", "vol-qcow2-0.10-lazy"); + DO_TEST("pool-dir", "vol-qcow2-nobacking"); DO_TEST("pool-disk", "vol-partition"); DO_TEST("pool-logical", "vol-logical"); DO_TEST("pool-logical", "vol-logical-backing"); -- 1.8.1.5

On 07/22/2013 08:52 AM, Ján Tomko wrote:
Reuse the XML files in storagevolxml2xmlin.
(This requires changing a few backing files to /dev/null, since virStorageBackendCreateQemuImgCmd checks for its presence)
Fair enough; it's a bit annoying that we rely on the actual file system, but /dev/null is safe.
--- tests/storagevolxml2argvdata/vol-file.xml | 20 --------------
ACK. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

This allows testing the command line for cloning file-based volumes into logical volumes and vice versa. --- .../storagevolxml2argvdata/logical-from-qcow2.argv | 2 + .../storagevolxml2argvdata/qcow2-from-logical.argv | 2 + tests/storagevolxml2argvtest.c | 90 +++++++++++++++++----- 3 files changed, 74 insertions(+), 20 deletions(-) create mode 100644 tests/storagevolxml2argvdata/logical-from-qcow2.argv create mode 100644 tests/storagevolxml2argvdata/qcow2-from-logical.argv diff --git a/tests/storagevolxml2argvdata/logical-from-qcow2.argv b/tests/storagevolxml2argvdata/logical-from-qcow2.argv new file mode 100644 index 0000000..7beded8 --- /dev/null +++ b/tests/storagevolxml2argvdata/logical-from-qcow2.argv @@ -0,0 +1,2 @@ +qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/OtherDemo.img \ +/dev/HostVG/Swap diff --git a/tests/storagevolxml2argvdata/qcow2-from-logical.argv b/tests/storagevolxml2argvdata/qcow2-from-logical.argv new file mode 100644 index 0000000..6a75815 --- /dev/null +++ b/tests/storagevolxml2argvdata/qcow2-from-logical.argv @@ -0,0 +1,2 @@ +qemu-img convert -f raw -O qcow2 -o encryption=on /dev/HostVG/Swap \ +/var/lib/libvirt/images/OtherDemo.img diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index b220994..3c338ce 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -11,10 +11,32 @@ const char create_tool[] = "qemu-img"; +/* createVol sets this on volume creation */ +static void +testSetVolumeType(virStorageVolDefPtr vol, + virStoragePoolDefPtr pool) +{ + if (!vol) + return; + + switch (pool->type) { + case VIR_STORAGE_POOL_DIR: + case VIR_STORAGE_POOL_FS: + case VIR_STORAGE_POOL_NETFS: + vol->type = VIR_STORAGE_VOL_FILE; + return; + + case VIR_STORAGE_POOL_LOGICAL: + vol->type = VIR_STORAGE_VOL_BLOCK; + return; + } +} + static int testCompareXMLToArgvFiles(bool shouldFail, const char *poolxml, const char *volxml, + const char *inputpoolxml, const char *inputvolxml, const char *cmdline, unsigned int flags, @@ -22,6 +44,7 @@ testCompareXMLToArgvFiles(bool shouldFail, { char *volXmlData = NULL; char *poolXmlData = NULL; + char *inputpoolXmlData = NULL; char *inputvolXmlData = NULL; char *expectedCmdline = NULL; char *actualCmdline = NULL; @@ -34,6 +57,7 @@ testCompareXMLToArgvFiles(bool shouldFail, virStorageVolDefPtr vol = NULL, inputvol = NULL; virStoragePoolDefPtr pool = NULL; + virStoragePoolDefPtr inputpool = NULL; virStoragePoolObj poolobj = {.def = NULL }; @@ -53,13 +77,23 @@ testCompareXMLToArgvFiles(bool shouldFail, poolobj.def = pool; + if (inputpoolxml) { + if (virtTestLoadFile(inputpoolxml, &inputpoolXmlData) < 0) + goto cleanup; + if (!(inputpool = virStoragePoolDefParseString(inputpoolXmlData))) + goto cleanup; + } + if (!(vol = virStorageVolDefParseString(pool, volXmlData))) goto cleanup; if (inputvolxml && - !(inputvol = virStorageVolDefParseString(pool, inputvolXmlData))) + !(inputvol = virStorageVolDefParseString(inputpool, inputvolXmlData))) goto cleanup; + testSetVolumeType(vol, pool); + testSetVolumeType(inputvol, inputpool); + cmd = virStorageBackendCreateQemuImgCmd(conn, &poolobj, vol, inputvol, flags, create_tool, imgformat); if (!cmd) { @@ -88,11 +122,13 @@ testCompareXMLToArgvFiles(bool shouldFail, cleanup: virStoragePoolDefFree(pool); + virStoragePoolDefFree(inputpool); virStorageVolDefFree(vol); virStorageVolDefFree(inputvol); virCommandFree(cmd); VIR_FREE(actualCmdline); VIR_FREE(expectedCmdline); + VIR_FREE(inputpoolXmlData); VIR_FREE(poolXmlData); VIR_FREE(volXmlData); VIR_FREE(inputvolXmlData); @@ -104,6 +140,7 @@ struct testInfo { bool shouldFail; const char *pool; const char *vol; + const char *inputpool; const char *inputvol; const char *cmdline; unsigned int flags; @@ -116,6 +153,7 @@ testCompareXMLToArgvHelper(const void *data) int result = -1; const struct testInfo *info = data; char *poolxml = NULL; + char *inputpoolxml = NULL; char *volxml = NULL; char *inputvolxml = NULL; char *cmdline = NULL; @@ -124,6 +162,10 @@ testCompareXMLToArgvHelper(const void *data) virAsprintf(&inputvolxml, "%s/storagevolxml2xmlin/%s.xml", abs_srcdir, info->inputvol) < 0) goto cleanup; + if (info->inputpool && + virAsprintf(&inputpoolxml, "%s/storagepoolxml2xmlin/%s.xml", + abs_srcdir, info->inputpool) < 0) + goto cleanup; if (virAsprintf(&poolxml, "%s/storagepoolxml2xmlin/%s.xml", abs_srcdir, info->pool) < 0 || virAsprintf(&volxml, "%s/storagevolxml2xmlin/%s.xml", @@ -135,13 +177,15 @@ testCompareXMLToArgvHelper(const void *data) goto cleanup; result = testCompareXMLToArgvFiles(info->shouldFail, poolxml, volxml, - inputvolxml, cmdline, info->flags, + inputpoolxml, inputvolxml, + cmdline, info->flags, info->imgformat); cleanup: VIR_FREE(poolxml); VIR_FREE(volxml); VIR_FREE(inputvolxml); + VIR_FREE(inputpoolxml); VIR_FREE(cmdline); return result; @@ -161,11 +205,11 @@ mymain(void) int ret = 0; unsigned int flags = VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA; -#define DO_TEST_FULL(shouldFail, pool, vol, inputvol, cmdline, flags, \ - imgformat) \ +#define DO_TEST_FULL(shouldFail, pool, vol, inputpool, inputvol, cmdline, \ + flags, imgformat) \ do { \ - struct testInfo info = { shouldFail, pool, vol, inputvol, cmdline, \ - flags, imgformat }; \ + struct testInfo info = { shouldFail, pool, vol, inputpool, inputvol, \ + cmdline, flags, imgformat }; \ if (virtTestRun("Storage Vol XML-2-argv " cmdline, \ 1, testCompareXMLToArgvHelper, &info) < 0) \ ret = -1; \ @@ -179,47 +223,53 @@ mymain(void) DO_TEST_FULL(true, pool, __VA_ARGS__) DO_TEST("pool-dir", "vol-qcow2", - NULL, + NULL, NULL, "qcow2", 0, FMT_OPTIONS); DO_TEST_FAIL("pool-dir", "vol-qcow2", - NULL, + NULL, NULL, "qcow2-prealloc", flags, FMT_OPTIONS); DO_TEST("pool-dir", "vol-qcow2-nobacking", - NULL, + NULL, NULL, "qcow2-nobacking-prealloc", flags, FMT_OPTIONS); DO_TEST("pool-dir", "vol-qcow2-nobacking", - "vol-file", + "pool-dir", "vol-file", "qcow2-nobacking-convert-prealloc", flags, FMT_OPTIONS); DO_TEST_FAIL("pool-dir", "vol-qcow2", - "vol-file", + "pool-dir", "vol-file", "qcow2-convert-prealloc", flags, FMT_OPTIONS); DO_TEST("pool-dir", "vol-qcow2", - NULL, + NULL, NULL, "qcow2-flag", 0, FMT_FLAG); DO_TEST("pool-dir", "vol-qcow2-nobacking", - NULL, + NULL, NULL, "qcow2-nobacking-flag", 0, FMT_FLAG); DO_TEST("pool-dir", "vol-qcow2-nobacking", - "vol-file", + "pool-dir", "vol-file", "qcow2-nobacking-convert-flag", 0, FMT_FLAG); DO_TEST("pool-dir", "vol-qcow2", - NULL, + NULL, NULL, "qcow2-none", 0, FMT_NONE); DO_TEST("pool-dir", "vol-qcow2-nobacking", - NULL, + NULL, NULL, "qcow2-nobacking-none", 0, FMT_NONE); DO_TEST("pool-dir", "vol-qcow2-nobacking", - "vol-file", + "pool-dir", "vol-file", "qcow2-nobacking-convert-none", 0, FMT_NONE); DO_TEST("pool-dir", "vol-qcow2-lazy", - NULL, + NULL, NULL, "qcow2-lazy", 0, FMT_OPTIONS); DO_TEST("pool-dir", "vol-qcow2-1.1", - NULL, + NULL, NULL, "qcow2-1.1", 0, FMT_OPTIONS); DO_TEST_FAIL("pool-dir", "vol-qcow2-0.10-lazy", - NULL, + NULL, NULL, "qcow2-0.10-lazy", 0, FMT_OPTIONS); + DO_TEST("pool-dir", "vol-qcow2-nobacking", + "pool-logical", "vol-logical", + "qcow2-from-logical", 0, FMT_OPTIONS); + DO_TEST("pool-logical", "vol-logical", + "pool-dir", "vol-qcow2-nobacking", + "logical-from-qcow2", 0, FMT_OPTIONS); return ret==0 ? EXIT_SUCCESS : EXIT_FAILURE; } -- 1.8.1.5

On 07/22/2013 08:53 AM, Ján Tomko wrote:
This allows testing the command line for cloning file-based volumes into logical volumes and vice versa. --- .../storagevolxml2argvdata/logical-from-qcow2.argv | 2 + .../storagevolxml2argvdata/qcow2-from-logical.argv | 2 + tests/storagevolxml2argvtest.c | 90 +++++++++++++++++----- 3 files changed, 74 insertions(+), 20 deletions(-) create mode 100644 tests/storagevolxml2argvdata/logical-from-qcow2.argv create mode 100644 tests/storagevolxml2argvdata/qcow2-from-logical.argv
ACK. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

<...snip...?>> diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c
index b220994..3c338ce 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -11,10 +11,32 @@
const char create_tool[] = "qemu-img";
+/* createVol sets this on volume creation */ +static void +testSetVolumeType(virStorageVolDefPtr vol, + virStoragePoolDefPtr pool) +{ + if (!vol) + return; + + switch (pool->type) { + case VIR_STORAGE_POOL_DIR: + case VIR_STORAGE_POOL_FS: + case VIR_STORAGE_POOL_NETFS: + vol->type = VIR_STORAGE_VOL_FILE; + return; + + case VIR_STORAGE_POOL_LOGICAL: + vol->type = VIR_STORAGE_VOL_BLOCK; + return; + } +} + static int testCompareXMLToArgvFiles(bool shouldFail, const char *poolxml, const char *volxml, + const char *inputpoolxml, const char *inputvolxml, const char *cmdline, unsigned int flags, @@ -22,6 +44,7 @@ testCompareXMLToArgvFiles(bool shouldFail, { char *volXmlData = NULL; char *poolXmlData = NULL; + char *inputpoolXmlData = NULL; char *inputvolXmlData = NULL; char *expectedCmdline = NULL; char *actualCmdline = NULL; @@ -34,6 +57,7 @@ testCompareXMLToArgvFiles(bool shouldFail,
virStorageVolDefPtr vol = NULL, inputvol = NULL; virStoragePoolDefPtr pool = NULL; + virStoragePoolDefPtr inputpool = NULL; virStoragePoolObj poolobj = {.def = NULL };
@@ -53,13 +77,23 @@ testCompareXMLToArgvFiles(bool shouldFail,
poolobj.def = pool;
+ if (inputpoolxml) { + if (virtTestLoadFile(inputpoolxml, &inputpoolXmlData) < 0) + goto cleanup; + if (!(inputpool = virStoragePoolDefParseString(inputpoolXmlData))) + goto cleanup; + } + if (!(vol = virStorageVolDefParseString(pool, volXmlData))) goto cleanup;
if (inputvolxml && - !(inputvol = virStorageVolDefParseString(pool, inputvolXmlData))) + !(inputvol = virStorageVolDefParseString(inputpool, inputvolXmlData))) goto cleanup;
+ testSetVolumeType(vol, pool); + testSetVolumeType(inputvol, inputpool);
Coverity is grumpy (FORWARD_NULL) right here as inputpool could be NULL since setting 'inputpool' has been based upon 'inputpoolxml' being true up to this point 94 testSetVolumeType(vol, pool); (13) Event var_deref_model: Passing null pointer "inputpool" to function "testSetVolumeType(virStorageVolDefPtr, virStoragePoolDefPtr)", which dereferences it. [details] Also see events: [assign_zero] 95 testSetVolumeType(inputvol, inputpool);
+ cmd = virStorageBackendCreateQemuImgCmd(conn, &poolobj, vol, inputvol, flags, create_tool, imgformat); if (!cmd) { @@ -88,11 +122,13 @@ testCompareXMLToArgvFiles(bool shouldFail,
cleanup: virStoragePoolDefFree(pool); + virStoragePoolDefFree(inputpool); virStorageVolDefFree(vol); virStorageVolDefFree(inputvol); virCommandFree(cmd); VIR_FREE(actualCmdline); VIR_FREE(expectedCmdline); + VIR_FREE(inputpoolXmlData); VIR_FREE(poolXmlData); VIR_FREE(volXmlData); VIR_FREE(inputvolXmlData); @@ -104,6 +140,7 @@ struct testInfo { bool shouldFail; const char *pool; const char *vol; + const char *inputpool; const char *inputvol; const char *cmdline; unsigned int flags; @@ -116,6 +153,7 @@ testCompareXMLToArgvHelper(const void *data) int result = -1; const struct testInfo *info = data; char *poolxml = NULL; + char *inputpoolxml = NULL; char *volxml = NULL; char *inputvolxml = NULL; char *cmdline = NULL; @@ -124,6 +162,10 @@ testCompareXMLToArgvHelper(const void *data) virAsprintf(&inputvolxml, "%s/storagevolxml2xmlin/%s.xml", abs_srcdir, info->inputvol) < 0) goto cleanup; + if (info->inputpool && + virAsprintf(&inputpoolxml, "%s/storagepoolxml2xmlin/%s.xml", + abs_srcdir, info->inputpool) < 0) + goto cleanup; if (virAsprintf(&poolxml, "%s/storagepoolxml2xmlin/%s.xml", abs_srcdir, info->pool) < 0 || virAsprintf(&volxml, "%s/storagevolxml2xmlin/%s.xml", @@ -135,13 +177,15 @@ testCompareXMLToArgvHelper(const void *data) goto cleanup;
result = testCompareXMLToArgvFiles(info->shouldFail, poolxml, volxml, - inputvolxml, cmdline, info->flags, + inputpoolxml, inputvolxml, + cmdline, info->flags, info->imgformat);
cleanup: VIR_FREE(poolxml); VIR_FREE(volxml); VIR_FREE(inputvolxml); + VIR_FREE(inputpoolxml); VIR_FREE(cmdline);
return result; <...snip...>

Ignore NULL pool in testSetVolumeType to silence Coverity, even though we only call it with NULL pool when vol is also NULL. (13) Event var_deref_model: Passing null pointer "inputpool" to function "testSetVolumeType(virStorageVolDefPtr, virStoragePoolDefPtr)", which dereferences it. [details] Also see events: [assign_zero] 95 testSetVolumeType(inputvol, inputpool); --- tests/storagevolxml2argvtest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 7774617..b1cf09f 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -16,7 +16,7 @@ static void testSetVolumeType(virStorageVolDefPtr vol, virStoragePoolDefPtr pool) { - if (!vol) + if (!vol || !pool) return; switch (pool->type) { -- 1.8.1.5

On 07/26/2013 07:27 AM, Ján Tomko wrote:
Ignore NULL pool in testSetVolumeType to silence Coverity, even though we only call it with NULL pool when vol is also NULL.
(13) Event var_deref_model: Passing null pointer "inputpool" to function "testSetVolumeType(virStorageVolDefPtr, virStoragePoolDefPtr)", which dereferences it. [details] Also see events: [assign_zero]
95 testSetVolumeType(inputvol, inputpool); --- tests/storagevolxml2argvtest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 7774617..b1cf09f 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -16,7 +16,7 @@ static void testSetVolumeType(virStorageVolDefPtr vol, virStoragePoolDefPtr pool) { - if (!vol) + if (!vol || !pool) return;
switch (pool->type) {
ACK. I ran the coverity analysis and it's happy. John

On 07/26/2013 01:42 PM, John Ferlan wrote:
On 07/26/2013 07:27 AM, Ján Tomko wrote:
Ignore NULL pool in testSetVolumeType to silence Coverity, even though we only call it with NULL pool when vol is also NULL.
(13) Event var_deref_model: Passing null pointer "inputpool" to function "testSetVolumeType(virStorageVolDefPtr, virStoragePoolDefPtr)", which dereferences it. [details] Also see events: [assign_zero]
95 testSetVolumeType(inputvol, inputpool); --- tests/storagevolxml2argvtest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
ACK.
I ran the coverity analysis and it's happy.
Yay! Pushed. Jan
participants (3)
-
Eric Blake
-
John Ferlan
-
Ján Tomko