Message ID | 1393011848-18742-3-git-send-email-mreitz@redhat.com |
---|---|
State | New |
Headers | show |
The Friday 21 Feb 2014 à 20:44:08 (+0100), Max Reitz wrote : > Add a test case to test 081 for mixing full option dicts and reference > strings of specifying the quorum child block devices through QMP. > > Signed-off-by: Max Reitz <mreitz@redhat.com> > --- > tests/qemu-iotests/081 | 52 ++++++++++++++++++++++++++++++++++++++++++++++ > tests/qemu-iotests/081.out | 15 +++++++++++++ > 2 files changed, 67 insertions(+) > > diff --git a/tests/qemu-iotests/081 b/tests/qemu-iotests/081 > index be34544..421c7cc 100755 > --- a/tests/qemu-iotests/081 > +++ b/tests/qemu-iotests/081 > @@ -44,6 +44,19 @@ _supported_fmt raw > _supported_proto generic > _supported_os Linux > > +function do_run_qemu() > +{ > + echo Testing: "$@" | _filter_imgfmt > + $QEMU -nographic -qmp stdio -serial none "$@" > + echo > +} > + > +function run_qemu() > +{ > + do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp | _filter_qemu_io | \ > + sed -e 's/"sector-num": [0-9]*/"sector-num": X/' > +} > + > quorum="file.driver=quorum,file.children.0.file.filename=$TEST_DIR/1.raw" > quorum="$quorum,file.children.1.file.filename=$TEST_DIR/2.raw" > quorum="$quorum,file.children.2.file.filename=$TEST_DIR/3.raw,file.vote-threshold=2" > @@ -80,6 +93,45 @@ echo "== checking quorum correction ==" > $QEMU_IO -c "open -o $quorum" -c "read -P 0x32 0 $size" | _filter_qemu_io > > echo > +echo "== checking mixed reference/option specification ==" > + > +run_qemu -drive "file=$TEST_DIR/2.raw,format=$IMGFMT,if=none,id=drive2" <<EOF > +{ "execute": "qmp_capabilities" } > +{ "execute": "blockdev-add", > + "arguments": { > + "options": { > + "driver": "quorum", > + "id": "drive0-quorum", > + "vote-threshold": 2, > + "children": [ > + { > + "driver": "raw", > + "file": { > + "driver": "file", > + "filename": "$TEST_DIR/1.raw" > + } > + }, > + "drive2", > + { > + "driver": "raw", > + "file": { > + "driver": "file", > + "filename": "$TEST_DIR/3.raw" > + } > + } > + ] > + } > + } > +} > +{ "execute": "human-monitor-command", > + "arguments": { > + "command-line": 'qemu-io drive0-quorum "read -P 0x32 0 $size"' > + } > +} > +{ "execute": "quit" } > +EOF > + > +echo > echo "== breaking quorum ==" > > $QEMU_IO -c "write -P 0x41 0 $size" "$TEST_DIR/1.raw" | _filter_qemu_io > diff --git a/tests/qemu-iotests/081.out b/tests/qemu-iotests/081.out > index b5b55ab..3bf882b 100644 > --- a/tests/qemu-iotests/081.out > +++ b/tests/qemu-iotests/081.out > @@ -25,6 +25,21 @@ wrote 10485760/10485760 bytes at offset 0 > read 10485760/10485760 bytes at offset 0 > 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > > +== checking mixed reference/option specification == > +Testing: -drive file=TEST_DIR/2.IMGFMT,format=IMGFMT,if=none,id=drive2 > +QMP_VERSION > +{"return": {}} > +{"return": {}} > +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "QUORUM_REPORT_BAD", "data": {"node-name": "%s", "ret": false, "sectors-count": false, "sector-num": X}} I think I wrote something wrong with the QMP events since you got "node-name": "%s". Will check that. Best regards Benoît > +read 10485760/10485760 bytes at offset 0 > +10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > +{"return": ""} > +{"return": {}} > +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN"} > +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "DEVICE_TRAY_MOVED", "data": {"device": "ide1-cd0", "tray-open": true}} > +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "DEVICE_TRAY_MOVED", "data": {"device": "floppy0", "tray-open": true}} > + > + > == breaking quorum == > wrote 10485760/10485760 bytes at offset 0 > 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > -- > 1.9.0 > >
diff --git a/tests/qemu-iotests/081 b/tests/qemu-iotests/081 index be34544..421c7cc 100755 --- a/tests/qemu-iotests/081 +++ b/tests/qemu-iotests/081 @@ -44,6 +44,19 @@ _supported_fmt raw _supported_proto generic _supported_os Linux +function do_run_qemu() +{ + echo Testing: "$@" | _filter_imgfmt + $QEMU -nographic -qmp stdio -serial none "$@" + echo +} + +function run_qemu() +{ + do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp | _filter_qemu_io | \ + sed -e 's/"sector-num": [0-9]*/"sector-num": X/' +} + quorum="file.driver=quorum,file.children.0.file.filename=$TEST_DIR/1.raw" quorum="$quorum,file.children.1.file.filename=$TEST_DIR/2.raw" quorum="$quorum,file.children.2.file.filename=$TEST_DIR/3.raw,file.vote-threshold=2" @@ -80,6 +93,45 @@ echo "== checking quorum correction ==" $QEMU_IO -c "open -o $quorum" -c "read -P 0x32 0 $size" | _filter_qemu_io echo +echo "== checking mixed reference/option specification ==" + +run_qemu -drive "file=$TEST_DIR/2.raw,format=$IMGFMT,if=none,id=drive2" <<EOF +{ "execute": "qmp_capabilities" } +{ "execute": "blockdev-add", + "arguments": { + "options": { + "driver": "quorum", + "id": "drive0-quorum", + "vote-threshold": 2, + "children": [ + { + "driver": "raw", + "file": { + "driver": "file", + "filename": "$TEST_DIR/1.raw" + } + }, + "drive2", + { + "driver": "raw", + "file": { + "driver": "file", + "filename": "$TEST_DIR/3.raw" + } + } + ] + } + } +} +{ "execute": "human-monitor-command", + "arguments": { + "command-line": 'qemu-io drive0-quorum "read -P 0x32 0 $size"' + } +} +{ "execute": "quit" } +EOF + +echo echo "== breaking quorum ==" $QEMU_IO -c "write -P 0x41 0 $size" "$TEST_DIR/1.raw" | _filter_qemu_io diff --git a/tests/qemu-iotests/081.out b/tests/qemu-iotests/081.out index b5b55ab..3bf882b 100644 --- a/tests/qemu-iotests/081.out +++ b/tests/qemu-iotests/081.out @@ -25,6 +25,21 @@ wrote 10485760/10485760 bytes at offset 0 read 10485760/10485760 bytes at offset 0 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +== checking mixed reference/option specification == +Testing: -drive file=TEST_DIR/2.IMGFMT,format=IMGFMT,if=none,id=drive2 +QMP_VERSION +{"return": {}} +{"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "QUORUM_REPORT_BAD", "data": {"node-name": "%s", "ret": false, "sectors-count": false, "sector-num": X}} +read 10485760/10485760 bytes at offset 0 +10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +{"return": ""} +{"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN"} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "DEVICE_TRAY_MOVED", "data": {"device": "ide1-cd0", "tray-open": true}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "DEVICE_TRAY_MOVED", "data": {"device": "floppy0", "tray-open": true}} + + == breaking quorum == wrote 10485760/10485760 bytes at offset 0 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Add a test case to test 081 for mixing full option dicts and reference strings of specifying the quorum child block devices through QMP. Signed-off-by: Max Reitz <mreitz@redhat.com> --- tests/qemu-iotests/081 | 52 ++++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/081.out | 15 +++++++++++++ 2 files changed, 67 insertions(+)