The Friday 07 Mar 2014 à 23:55:56 (+0100), Max Reitz wrote :
> Add a test for the JSON protocol driver.
> 
> Signed-off-by: Max Reitz <mre...@redhat.com>
> ---
>  tests/qemu-iotests/084     | 123 
> +++++++++++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/084.out |  39 ++++++++++++++
>  tests/qemu-iotests/group   |   1 +
>  3 files changed, 163 insertions(+)
>  create mode 100755 tests/qemu-iotests/084
>  create mode 100644 tests/qemu-iotests/084.out
> 
> diff --git a/tests/qemu-iotests/084 b/tests/qemu-iotests/084
> new file mode 100755
> index 0000000..75cb0c2
> --- /dev/null
> +++ b/tests/qemu-iotests/084
> @@ -0,0 +1,123 @@
> +#!/bin/bash
> +#
> +# Test case for the JSON block protocol
> +#
> +# Copyright (C) 2014 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=mre...@redhat.com
> +
> +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
> +
> +# Using an image filename containing quotation marks will render the JSON 
> data
> +# below invalid. In that case, we have little choice but simply not to run 
> this
> +# test.
> +case $TEST_IMG in
> +    *'"'*)
> +        _notrun "image filename may not contain quotation marks"
> +        ;;
> +esac
> +
> +IMG_SIZE=64M
> +
> +# Taken from test 072
> +echo
> +echo "=== Testing nested image formats ==="
> +echo
> +
> +TEST_IMG="$TEST_IMG.base" _make_test_img $IMG_SIZE
> +
> +$QEMU_IO -c 'write -P 42 0 512' -c 'write -P 23 512 512' \
> +         -c 'write -P 66 1024 512' "$TEST_IMG.base" | _filter_qemu_io
> +
> +$QEMU_IMG convert -f raw -O $IMGFMT "$TEST_IMG.base" "$TEST_IMG"
> +
> +$QEMU_IO -c 'read -P 42 0 512' -c 'read -P 23 512 512' \
> +         -c 'read -P 66 1024 512' "json:{
> +    \"driver\": \"$IMGFMT\",
> +    \"file\": {
> +        \"driver\": \"$IMGFMT\",
> +        \"file\": {
> +            \"filename\": \"$TEST_IMG\"
> +        }
> +    }
> +}" | _filter_qemu_io
> +
> +# This should fail (see test 072)
> +$QEMU_IO -c 'read -P 42 0 512' "$TEST_IMG" | _filter_qemu_io
> +
> +
> +# Taken from test 071
> +echo
> +echo "=== Testing blkdebug ==="
> +echo
> +
> +_make_test_img $IMG_SIZE
> +
> +$QEMU_IO -c 'write -P 42 0x38000 512' "$TEST_IMG" | _filter_qemu_io
> +
> +# The "image.filename" part tests whether "a": { "b": "c" } and "a.b": "c" do
> +# the same (which they should).
> +# This has to use -g to force qemu-io to use BDRV_O_PROTOCOL, since it will 
> try
> +# to determine the format of the file otherwise; due to the complexity of the
> +# filename, only raw (or json itself) will work and this will then result in 
> an
> +# error because of the blkdebug part. Thus, use -g.
> +$QEMU_IO -c 'read -P 42 0x38000 512' -g "json:{
> +    \"driver\": \"$IMGFMT\",
> +    \"file\": {
> +        \"driver\": \"blkdebug\",
> +        \"inject-error\": [{
> +            \"event\": \"l2_load\"
> +        }],
> +        \"image.filename\": \"$TEST_IMG\"
> +    }
> +}" | _filter_qemu_io
> +
> +
> +echo
> +echo "=== Testing qemu-img info output ==="
> +echo
> +
> +# This should output information about the image itself, not about the JSON
> +# block device.
> +$QEMU_IMG info "json:{\"driver\":\"qcow2\",\"file.filename\":\"$TEST_IMG\"}" 
> \
> +    | _filter_testdir | _filter_imgfmt
> +
> +
> +# success, all done
> +echo "*** done"
> +rm -f $seq.full
> +status=0
> diff --git a/tests/qemu-iotests/084.out b/tests/qemu-iotests/084.out
> new file mode 100644
> index 0000000..375dd4a
> --- /dev/null
> +++ b/tests/qemu-iotests/084.out
> @@ -0,0 +1,39 @@
> +QA output created by 084
> +
> +=== Testing nested image formats ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864 
> +wrote 512/512 bytes at offset 0
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 512/512 bytes at offset 512
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 512/512 bytes at offset 1024
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 512/512 bytes at offset 0
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 512/512 bytes at offset 512
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 512/512 bytes at offset 1024
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Pattern verification failed at offset 0, 512 bytes
> +read 512/512 bytes at offset 0
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +
> +=== Testing blkdebug ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 
> +wrote 512/512 bytes at offset 229376
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read failed: Input/output error
> +
> +=== Testing qemu-img info output ===
> +
> +image: TEST_DIR/t.IMGFMT
> +file format: IMGFMT
> +virtual size: 64M (67108864 bytes)
> +disk size: 324K
> +cluster_size: 65536
> +Format specific information:
> +    compat: 1.1
> +    lazy refcounts: false
> +*** done
> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
> index 9ec62d2..8f6e835 100644
> --- a/tests/qemu-iotests/group
> +++ b/tests/qemu-iotests/group
> @@ -85,5 +85,6 @@
>  079 rw auto
>  081 rw auto
>  082 rw auto quick
> +084 rw auto quick
>  086 rw auto quick
>  087 rw auto quick
> -- 
> 1.9.0
> 

Reviewed-by: Benoit Canet <ben...@irqsave.net>
> 

Reply via email to