qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qemu-iotests: Test qcow2 image creation options


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH] qemu-iotests: Test qcow2 image creation options
Date: Tue, 29 Jan 2013 14:43:49 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux)

Kevin Wolf <address@hidden> writes:

> Just create lots of images and try out each of the creation options that
> qcow2 provides (except backing_file/fmt for now)
>
> I'm not totally happy with the behaviour of qemu-img in each of the
> cases, but let's be explicit and update the test when we do change
> things later.
>
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
>  tests/qemu-iotests/048     |  117 ++++++++++++++++++++++++
>  tests/qemu-iotests/048.out |  213 
> ++++++++++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/group   |    1 +
>  3 files changed, 331 insertions(+), 0 deletions(-)
>  create mode 100755 tests/qemu-iotests/048
>  create mode 100644 tests/qemu-iotests/048.out
>
> diff --git a/tests/qemu-iotests/048 b/tests/qemu-iotests/048
> new file mode 100755
> index 0000000..89d3d32
> --- /dev/null
> +++ b/tests/qemu-iotests/048
> @@ -0,0 +1,117 @@
> +#!/bin/bash
> +#
> +# Check qemu-img option parsing
> +#
> +# Copyright (C) 2013 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
> address@hidden
> +
> +seq=`basename $0`
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +tmp=/tmp/$$
> +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 qcow2
> +_supported_proto file
> +_supported_os Linux
> +
> +function test_qemu_img()
> +{
> +    echo qemu-img "$@"
> +    $QEMU_IMG "$@"
> +    echo
> +}
> +
> +echo "=== Check correct interpretation of suffixes for image size ==="
> +echo
> +sizes="1024 1024b 1k 1K 1M 1G 1T "
> +sizes+="1024.0 1024.0b 1.5k 1.5K 1.5M 1.5G 1.5T"
> +
> +echo "== 1. Traditional size parameter =="
> +echo
> +for s in $sizes; do
> +    test_qemu_img create -f $IMGFMT $TEST_IMG $s
> +done

Do we have a qemu-option.c unit test?  If not, should we have one?

Even if yes, testing qemu-img like this still makes sense.  But fewer
test cases could do.

> +
> +echo "== 2. Specifying size via -o =="
> +echo
> +for s in $sizes; do
> +    test_qemu_img create -f $IMGFMT -o size=$s $TEST_IMG
> +done
> +
> +echo "== 3. Invalid sizes =="
> +echo
> +sizes="-1024 -1k 1kilobyte foobar"
> +
> +for s in $sizes; do
> +    test_qemu_img create -f $IMGFMT $TEST_IMG -- $s
> +    test_qemu_img create -f $IMGFMT -o size=$s $TEST_IMG
> +done

Valid sizes are tested in two loops, one for size parameter, one for -o,
invalid sizes in a single combined loop.  I don't mind, I just find it
odd.

> +
> +echo "== Check correct interpretation of suffixes for cluster size =="
> +echo
> +sizes="1024 1024b 1k 1K 1M "
> +sizes+="1024.0 1024.0b 0.5k 0.5K 0.5M"
> +
> +for s in $sizes; do
> +    test_qemu_img create -f $IMGFMT -o cluster_size=$s $TEST_IMG 64M
> +done
> +
> +echo "== Check compat level option =="
> +echo
> +test_qemu_img create -f $IMGFMT -o compat=0.10 $TEST_IMG 64M
> +test_qemu_img create -f $IMGFMT -o compat=1.1 $TEST_IMG 64M
> +
> +test_qemu_img create -f $IMGFMT -o compat=0.42 $TEST_IMG 64M
> +test_qemu_img create -f $IMGFMT -o compat=foobar $TEST_IMG 64M
> +
> +echo "== Check preallocation option =="
> +echo
> +test_qemu_img create -f $IMGFMT -o preallocation=off $TEST_IMG 64M
> +test_qemu_img create -f $IMGFMT -o preallocation=metadata $TEST_IMG 64M
> +test_qemu_img create -f $IMGFMT -o preallocation=1234 $TEST_IMG 64M
> +
> +echo "== Check encryption option =="
> +echo
> +test_qemu_img create -f $IMGFMT -o encryption=off $TEST_IMG 64M
> +test_qemu_img create -f $IMGFMT -o encryption=on $TEST_IMG 64M
> +
> +echo "== Check lazy_refcounts option (only with v3) =="
> +echo
> +test_qemu_img create -f $IMGFMT -o compat=1.1,lazy_refcounts=off $TEST_IMG 
> 64M
> +test_qemu_img create -f $IMGFMT -o compat=1.1,lazy_refcounts=on $TEST_IMG 64M
> +
> +test_qemu_img create -f $IMGFMT -o compat=0.10,lazy_refcounts=off $TEST_IMG 
> 64M
> +test_qemu_img create -f $IMGFMT -o compat=0.10,lazy_refcounts=on $TEST_IMG 
> 64M
> +
> +# success, all done
> +echo "*** done"
> +rm -f $seq.full
> +status=0

Let's examine coverage:

    #define BLOCK_OPT_SIZE              "size"
    Check

    #define BLOCK_OPT_ENCRYPT           "encryption"
    Check

    #define BLOCK_OPT_COMPAT6           "compat6"
    Not covered, only used by vmdk.

    #define BLOCK_OPT_BACKING_FILE      "backing_file"
    Not covered, mentioned in commit message.  Okay.

    #define BLOCK_OPT_BACKING_FMT       "backing_fmt"
    Likewise

    #define BLOCK_OPT_CLUSTER_SIZE      "cluster_size"
    Check

    #define BLOCK_OPT_TABLE_SIZE        "table_size"
    Not covered, only used by qed.

    #define BLOCK_OPT_PREALLOC          "preallocation"
    Check

    #define BLOCK_OPT_SUBFMT            "subformat"
    Not covered, used by vmdk and vpc.

    #define BLOCK_OPT_COMPAT_LEVEL      "compat"
    Check

    #define BLOCK_OPT_LAZY_REFCOUNTS    "lazy_refcounts"
    Check

Good enough for me, and matches commit message.

> diff --git a/tests/qemu-iotests/048.out b/tests/qemu-iotests/048.out
> new file mode 100644
> index 0000000..8569f3e
> --- /dev/null
> +++ b/tests/qemu-iotests/048.out
[...]

I figure this is simply current output, and we assume it's good.

> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
> index 1bbd2bf..a4175b2 100644
> --- a/tests/qemu-iotests/group
> +++ b/tests/qemu-iotests/group
> @@ -54,3 +54,4 @@
>  045 rw auto
>  046 rw auto aio
>  047 rw auto
> +048 rw auto

Reviewed-by: Markus Armbruster <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]