diff mbox series

[7/7] iotests: Add test for image creation fallback

Message ID 20190712173600.14554-8-mreitz@redhat.com (mailing list archive)
State New, archived
Headers show
Series block: Generic file creation fallback | expand

Commit Message

Max Reitz July 12, 2019, 5:36 p.m. UTC
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/259     | 61 ++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/259.out | 14 +++++++++
 tests/qemu-iotests/group   |  1 +
 3 files changed, 76 insertions(+)
 create mode 100755 tests/qemu-iotests/259
 create mode 100644 tests/qemu-iotests/259.out

Comments

Thomas Huth July 15, 2019, 9:31 a.m. UTC | #1
On 12/07/2019 19.36, Max Reitz wrote:
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  tests/qemu-iotests/259     | 61 ++++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/259.out | 14 +++++++++
>  tests/qemu-iotests/group   |  1 +
>  3 files changed, 76 insertions(+)
>  create mode 100755 tests/qemu-iotests/259
>  create mode 100644 tests/qemu-iotests/259.out
> 
> diff --git a/tests/qemu-iotests/259 b/tests/qemu-iotests/259
> new file mode 100755
> index 0000000000..22b4c10241
> --- /dev/null
> +++ b/tests/qemu-iotests/259
> @@ -0,0 +1,61 @@
> +#!/usr/bin/env bash
> +#
> +# Test generic image creation fallback (by using NBD)
> +#
> +# Copyright (C) 2019 Red Hat, Inc.
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program 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 General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +
> +# creator
> +owner=mreitz@redhat.com
> +
> +seq=$(basename $0)
> +echo "QA output created by $seq"
> +
> +status=1	# failure is the default!
> +
> +_cleanup()
> +{
> +    _cleanup_test_img
> +}
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter
> +
> +_supported_fmt raw

Why is this stating "raw" here...

> +_supported_proto nbd
> +_supported_os Linux
> +
> +
> +_make_test_img 64M
> +
> +echo
> +echo '--- Testing creation ---'
> +
> +$QEMU_IMG create -f qcow2 "$TEST_IMG" 64M | _filter_img_create

... and using qcow2 here instead?

> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
> index b34c8e3c0c..80e7603174 100644
> --- a/tests/qemu-iotests/group
> +++ b/tests/qemu-iotests/group
> @@ -269,3 +269,4 @@
>  254 rw auto backing quick
>  255 rw auto quick
>  256 rw auto quick
> +259 rw auto quick

If this test only supports "raw", I think it should not be in the "auto"
group anymore.

 Thomas
Max Reitz July 15, 2019, 9:48 a.m. UTC | #2
On 15.07.19 11:31, Thomas Huth wrote:
> On 12/07/2019 19.36, Max Reitz wrote:
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>  tests/qemu-iotests/259     | 61 ++++++++++++++++++++++++++++++++++++++
>>  tests/qemu-iotests/259.out | 14 +++++++++
>>  tests/qemu-iotests/group   |  1 +
>>  3 files changed, 76 insertions(+)
>>  create mode 100755 tests/qemu-iotests/259
>>  create mode 100644 tests/qemu-iotests/259.out
>>
>> diff --git a/tests/qemu-iotests/259 b/tests/qemu-iotests/259
>> new file mode 100755
>> index 0000000000..22b4c10241
>> --- /dev/null
>> +++ b/tests/qemu-iotests/259
>> @@ -0,0 +1,61 @@
>> +#!/usr/bin/env bash
>> +#
>> +# Test generic image creation fallback (by using NBD)
>> +#
>> +# Copyright (C) 2019 Red Hat, Inc.
>> +#
>> +# This program is free software; you can redistribute it and/or modify
>> +# it under the terms of the GNU General Public License as published by
>> +# the Free Software Foundation; either version 2 of the License, or
>> +# (at your option) any later version.
>> +#
>> +# This program 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 General Public License for more details.
>> +#
>> +# You should have received a copy of the GNU General Public License
>> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
>> +#
>> +
>> +# creator
>> +owner=mreitz@redhat.com
>> +
>> +seq=$(basename $0)
>> +echo "QA output created by $seq"
>> +
>> +status=1	# failure is the default!
>> +
>> +_cleanup()
>> +{
>> +    _cleanup_test_img
>> +}
>> +trap "_cleanup; exit \$status" 0 1 2 3 15
>> +
>> +# get standard environment, filters and checks
>> +. ./common.rc
>> +. ./common.filter
>> +
>> +_supported_fmt raw
> 
> Why is this stating "raw" here...
> 
>> +_supported_proto nbd

Because it’s an NBD test.

>> +_supported_os Linux
>> +
>> +
>> +_make_test_img 64M

Also, because I don‘t want this to create a qcow2 image.  This should
just set up a raw NBD node.

>> +echo
>> +echo '--- Testing creation ---'
>> +
>> +$QEMU_IMG create -f qcow2 "$TEST_IMG" 64M | _filter_img_create
> 
> ... and using qcow2 here instead?

Practical answer: Nobody tests qcow2+nbd.  Ever.  Because it is
generally a stupid combination.  We need it for this test, though,
because NBD is the simplest way to get a fixed-size block device.

The more involved answer is because nobody has introduced anything yet
to simply let the test decide on which format/protocol combination to
use by default (and then let the check script just use that, unless
overridden by the user).

But there‘s also the _make_test_img thing.

>> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
>> index b34c8e3c0c..80e7603174 100644
>> --- a/tests/qemu-iotests/group
>> +++ b/tests/qemu-iotests/group
>> @@ -269,3 +269,4 @@
>>  254 rw auto backing quick
>>  255 rw auto quick
>>  256 rw auto quick
>> +259 rw auto quick
> 
> If this test only supports "raw", I think it should not be in the "auto"
> group anymore.

Oh, I didn‘t know that only runs qcow2 tests.  OK then.

Max
Eric Blake July 16, 2019, 2:10 p.m. UTC | #3
On 7/15/19 4:48 AM, Max Reitz wrote:

>>> +
>>> +_supported_fmt raw
>>
>> Why is this stating "raw" here...
>>
>>> +_supported_proto nbd
> 
> Because it’s an NBD test.
> 
>>> +_supported_os Linux
>>> +
>>> +
>>> +_make_test_img 64M
> 
> Also, because I don‘t want this to create a qcow2 image.  This should
> just set up a raw NBD node.
> 
>>> +echo
>>> +echo '--- Testing creation ---'
>>> +
>>> +$QEMU_IMG create -f qcow2 "$TEST_IMG" 64M | _filter_img_create
>>
>> ... and using qcow2 here instead?
> 
> Practical answer: Nobody tests qcow2+nbd.  Ever.  Because it is
> generally a stupid combination.  We need it for this test, though,
> because NBD is the simplest way to get a fixed-size block device.

There are definitely some broken things if you try qcow2+nbd. However, I
someday hope to implement a proposed NBD_CMD_RESIZE extension to the
protocol, at which point, it will be a lot easier to run qcow2+nbd
(where qcow2 can then advantage of automatic resizes of the protocol
layer, the same as it does for regular files), so part of that effort
may be figuring out how to make iotests cleanly support qcow2+nbd in
more situations.
diff mbox series

Patch

diff --git a/tests/qemu-iotests/259 b/tests/qemu-iotests/259
new file mode 100755
index 0000000000..22b4c10241
--- /dev/null
+++ b/tests/qemu-iotests/259
@@ -0,0 +1,61 @@ 
+#!/usr/bin/env bash
+#
+# Test generic image creation fallback (by using NBD)
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+# creator
+owner=mreitz@redhat.com
+
+seq=$(basename $0)
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fmt raw
+_supported_proto nbd
+_supported_os Linux
+
+
+_make_test_img 64M
+
+echo
+echo '--- Testing creation ---'
+
+$QEMU_IMG create -f qcow2 "$TEST_IMG" 64M | _filter_img_create
+$QEMU_IMG info "$TEST_IMG" | _filter_img_info
+
+echo
+echo '--- Testing creation for which the node would need to grow ---'
+
+$QEMU_IMG create -f qcow2 -o preallocation=metadata "$TEST_IMG" 64M 2>&1 \
+    | _filter_img_create
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/259.out b/tests/qemu-iotests/259.out
new file mode 100644
index 0000000000..ffed19c2a0
--- /dev/null
+++ b/tests/qemu-iotests/259.out
@@ -0,0 +1,14 @@ 
+QA output created by 259
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
+
+--- Testing creation ---
+Formatting 'TEST_DIR/t.IMGFMT', fmt=qcow2 size=67108864
+image: TEST_DIR/t.IMGFMT
+file format: qcow2
+virtual size: 64 MiB (67108864 bytes)
+disk size: unavailable
+
+--- Testing creation for which the node would need to grow ---
+qemu-img: TEST_DIR/t.IMGFMT: Could not resize image: Image format driver does not support resize
+Formatting 'TEST_DIR/t.IMGFMT', fmt=qcow2 size=67108864 preallocation=metadata
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index b34c8e3c0c..80e7603174 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -269,3 +269,4 @@ 
 254 rw auto backing quick
 255 rw auto quick
 256 rw auto quick
+259 rw auto quick