[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 12/12] iotests: Add test for the JSON protoco
From: |
Benoît Canet |
Subject: |
Re: [Qemu-devel] [PATCH v2 12/12] iotests: Add test for the JSON protocol |
Date: |
Mon, 24 Mar 2014 15:24:11 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
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 <address@hidden>
> ---
> 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
> 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
> +
> +# 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 <address@hidden>
>
- [Qemu-devel] [PATCH v2 06/12] block/json: Add functions for writing zeroes etc., (continued)
- [Qemu-devel] [PATCH v2 06/12] block/json: Add functions for writing zeroes etc., Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 07/12] block/json: Add bdrv_co_get_block_status(), Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 08/12] block/json: Add ioctl etc., Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 09/12] block/json: Add bdrv_get_specific_info(), Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 10/12] block/raw_bsd: Add bdrv_get_specific_info(), Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 11/12] block/qapi: Ignore filters on top for format name, Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 12/12] iotests: Add test for the JSON protocol, Max Reitz, 2014/03/07
- Re: [Qemu-devel] [PATCH v2 12/12] iotests: Add test for the JSON protocol,
Benoît Canet <=
- Re: [Qemu-devel] [PATCH v2 00/12] block/json: Add JSON protocol driver, Max Reitz, 2014/03/21