qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 3/3] iotests: Add test for drive-mirror with NBD


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 3/3] iotests: Add test for drive-mirror with NBD target
Date: Tue, 03 Feb 2015 09:38:41 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0


On 02/02/2015 22:40, Max Reitz wrote:
> When the drive-mirror block job is completed, it will call bdrv_swap()
> on the source and the target BDS; this should obviously not result in a
> segmentation fault.
> 
> Signed-off-by: Max Reitz <address@hidden>
> ---
>  tests/qemu-iotests/094     | 81 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/094.out | 11 +++++++
>  tests/qemu-iotests/group   |  1 +
>  3 files changed, 93 insertions(+)
>  create mode 100755 tests/qemu-iotests/094
>  create mode 100644 tests/qemu-iotests/094.out
> 
> diff --git a/tests/qemu-iotests/094 b/tests/qemu-iotests/094
> new file mode 100755
> index 0000000..27a2be2
> --- /dev/null
> +++ b/tests/qemu-iotests/094
> @@ -0,0 +1,81 @@
> +#!/bin/bash
> +#
> +# Test case for drive-mirror to NBD (especially bdrv_swap() on NBD BDS)
> +#
> +# Copyright (C) 2015 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!
> +
> +trap "exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter
> +. ./common.qemu
> +
> +_supported_fmt generic
> +_supported_proto nbd
> +_supported_os Linux
> +_unsupported_imgopts "subformat=monolithicFlat" 
> "subformat=twoGbMaxExtentFlat"
> +
> +_make_test_img 64M
> +$QEMU_IMG create -f $IMGFMT "$TEST_DIR/source.$IMGFMT" 64M | 
> _filter_img_create
> +
> +_launch_qemu -drive 
> if=none,id=src,file="$TEST_DIR/source.$IMGFMT",format=raw \
> +             -nodefaults
> +
> +_send_qemu_cmd $QEMU_HANDLE \
> +    "{'execute': 'qmp_capabilities'}" \
> +    'return'
> +
> +# 'format': 'nbd' is not actually "correct", but this is probably the only 
> way
> +# to test bdrv_swap() on an NBD BDS
> +_send_qemu_cmd $QEMU_HANDLE  \
> +    "{'execute': 'drive-mirror',
> +      'arguments': {'device': 'src',
> +                    'target': '$TEST_IMG',
> +                    'format': 'nbd',
> +                    'sync':'full',
> +                    'mode':'existing'}}" \
> +    'BLOCK_JOB_READY'
> +
> +_send_qemu_cmd $QEMU_HANDLE  \
> +    "{'execute': 'block-job-complete',
> +      'arguments': {'device': 'src'}}" \
> +    'BLOCK_JOB_COMPLETE'
> +
> +_send_qemu_cmd $QEMU_HANDLE \
> +    "{'execute': 'quit'}" \
> +    'return'
> +
> +wait=1 _cleanup_qemu
> +
> +_cleanup_test_img
> +rm -f "$TEST_DIR/source.$IMGFMT"
> +
> +# success, all done
> +echo '*** done'
> +rm -f $seq.full
> +status=0
> diff --git a/tests/qemu-iotests/094.out b/tests/qemu-iotests/094.out
> new file mode 100644
> index 0000000..b66dc07
> --- /dev/null
> +++ b/tests/qemu-iotests/094.out
> @@ -0,0 +1,11 @@
> +QA output created by 094
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
> +Formatting 'TEST_DIR/source.IMGFMT', fmt=IMGFMT size=67108864
> +{"return": {}}
> +{"return": {}}
> +{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
> "BLOCK_JOB_READY", "data": {"device": "src", "len": 67108864, "offset": 
> 67108864, "speed": 0, "type": "mirror"}}
> +{"return": {}}
> +{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
> "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 67108864, "offset": 
> 67108864, "speed": 0, "type": "mirror"}}
> +{"return": {}}
> +{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
> "SHUTDOWN"}
> +*** done
> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
> index 4b2b93b..6e2447a 100644
> --- a/tests/qemu-iotests/group
> +++ b/tests/qemu-iotests/group
> @@ -99,6 +99,7 @@
>  090 rw auto quick
>  091 rw auto
>  092 rw auto quick
> +094 rw auto quick
>  095 rw auto quick
>  097 rw auto backing
>  098 rw auto backing quick
> 

Reviewed-by: Paolo Bonzini <address@hidden>



reply via email to

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