qemu-iotests: add 184 for throttle filter driver

Reviewed-by: Alberto Garcia <berto@igalia.com>
Signed-off-by: Manos Pitsidianakis <el13635@mail.ntua.gr>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Manos Pitsidianakis 2017-08-25 16:20:28 +03:00 committed by Kevin Wolf
parent d8e7d87ec4
commit 1e13e2015b
3 changed files with 508 additions and 0 deletions

205
tests/qemu-iotests/184 Executable file
View File

@ -0,0 +1,205 @@
#!/bin/bash
#
# Test I/O throttle block filter driver interface
#
# Copyright (C) 2017 Manos Pitsidianakis
#
# 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="Manos Pitsidianakis"
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
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 do_run_qemu()
{
echo Testing: "$@" | _filter_imgfmt
$QEMU -nographic -qmp-pretty stdio -serial none "$@"
echo
}
function run_qemu()
{
do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_qmp\
| _filter_qemu_io | _filter_generated_node_ids
}
_make_test_img 64M
test_throttle=$($QEMU_IMG --help|grep throttle)
[ "$test_throttle" = "" ] && _supported_fmt throttle
echo
echo "== checking interface =="
run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "blockdev-add",
"arguments": {
"driver": "$IMGFMT",
"node-name": "disk0",
"file": {
"driver": "file",
"filename": "$TEST_IMG"
}
}
}
{ "execute": "object-add",
"arguments": {
"qom-type": "throttle-group",
"id": "group0",
"props": {
"limits" : {
"iops-total": 1000
}
}
}
}
{ "execute": "blockdev-add",
"arguments": {
"driver": "throttle",
"node-name": "throttle0",
"throttle-group": "group0",
"file": "disk0"
}
}
{ "execute": "query-named-block-nodes" }
{ "execute": "query-block" }
{ "execute": "quit" }
EOF
echo
echo "== property changes in ThrottleGroup =="
run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "object-add",
"arguments": {
"qom-type": "throttle-group",
"id": "group0",
"props" : {
"limits": {
"iops-total": 1000
}
}
}
}
{ "execute" : "qom-get",
"arguments" : {
"path" : "group0",
"property" : "limits"
}
}
{ "execute" : "qom-set",
"arguments" : {
"path" : "group0",
"property" : "limits",
"value" : {
"iops-total" : 0
}
}
}
{ "execute" : "qom-get",
"arguments" : {
"path" : "group0",
"property" : "limits"
}
}
{ "execute": "quit" }
EOF
echo
echo "== object creation/set errors =="
run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "object-add",
"arguments": {
"qom-type": "throttle-group",
"id": "group0",
"props" : {
"limits": {
"iops-total": 1000
}
}
}
}
{ "execute" : "qom-set",
"arguments" : {
"path" : "group0",
"property" : "x-iops-total",
"value" : 0
}
}
{ "execute" : "qom-set",
"arguments" : {
"path" : "group0",
"property" : "limits",
"value" : {
"iops-total" : 10,
"iops-read" : 10
}
}
}
{ "execute": "quit" }
EOF
echo
echo "== don't specify group =="
run_qemu <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "blockdev-add",
"arguments": {
"driver": "$IMGFMT",
"node-name": "disk0",
"file": {
"driver": "file",
"filename": "$TEST_IMG"
}
}
}
{ "execute": "blockdev-add",
"arguments": {
"driver": "throttle",
"node-name": "throttle0",
"file": "disk0"
}
}
{ "execute": "quit" }
EOF
echo
# success, all done
echo "*** done"
rm -f $seq.full
status=0

302
tests/qemu-iotests/184.out Normal file
View File

@ -0,0 +1,302 @@
QA output created by 184
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
== checking interface ==
Testing:
{
QMP_VERSION
}
{
"return": {
}
}
{
"return": {
}
}
{
"return": {
}
}
{
"return": {
}
}
{
"return": [
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 67108864,
"filename": "json:{\"throttle-group\": \"group0\", \"driver\": \"throttle\", \"file\": {\"driver\": \"qcow2\", \"file\": {\"driver\": \"file\", \"filename\": \"TEST_DIR/t.qcow2\"}}}",
"cluster-size": 65536,
"format": "throttle",
"actual-size": 200704,
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "throttle0",
"backing_file_depth": 0,
"drv": "throttle",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "json:{\"throttle-group\": \"group0\", \"driver\": \"throttle\", \"file\": {\"driver\": \"qcow2\", \"file\": {\"driver\": \"file\", \"filename\": \"TEST_DIR/t.qcow2\"}}}",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 67108864,
"filename": "TEST_DIR/t.qcow2",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 200704,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"refcount-bits": 16,
"corrupt": false
}
},
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "disk0",
"backing_file_depth": 0,
"drv": "qcow2",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "TEST_DIR/t.qcow2",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 197120,
"filename": "TEST_DIR/t.qcow2",
"format": "file",
"actual-size": 200704,
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "NODE_NAME",
"backing_file_depth": 0,
"drv": "file",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "TEST_DIR/t.qcow2",
"encryption_key_missing": false
}
]
}
{
"return": [
]
}
{
"return": {
}
}
{
"timestamp": {
"seconds": TIMESTAMP,
"microseconds": TIMESTAMP
},
"event": "SHUTDOWN",
"data": {
"guest": false
}
}
== property changes in ThrottleGroup ==
Testing:
{
QMP_VERSION
}
{
"return": {
}
}
{
"return": {
}
}
{
"return": {
"bps-read-max-length": 1,
"iops-read-max-length": 1,
"bps-read-max": 0,
"bps-total": 0,
"iops-total-max-length": 1,
"iops-total": 1000,
"iops-write-max": 0,
"bps-write": 0,
"bps-total-max": 0,
"bps-write-max": 0,
"iops-size": 0,
"iops-read": 0,
"iops-write-max-length": 1,
"iops-write": 0,
"bps-total-max-length": 1,
"iops-read-max": 0,
"bps-read": 0,
"bps-write-max-length": 1,
"iops-total-max": 0
}
}
{
"return": {
}
}
{
"return": {
"bps-read-max-length": 1,
"iops-read-max-length": 1,
"bps-read-max": 0,
"bps-total": 0,
"iops-total-max-length": 1,
"iops-total": 0,
"iops-write-max": 0,
"bps-write": 0,
"bps-total-max": 0,
"bps-write-max": 0,
"iops-size": 0,
"iops-read": 0,
"iops-write-max-length": 1,
"iops-write": 0,
"bps-total-max-length": 1,
"iops-read-max": 0,
"bps-read": 0,
"bps-write-max-length": 1,
"iops-total-max": 0
}
}
{
"return": {
}
}
{
"timestamp": {
"seconds": TIMESTAMP,
"microseconds": TIMESTAMP
},
"event": "SHUTDOWN",
"data": {
"guest": false
}
}
== object creation/set errors ==
Testing:
{
QMP_VERSION
}
{
"return": {
}
}
{
"return": {
}
}
{
"error": {
"class": "GenericError",
"desc": "Property cannot be set after initialization"
}
}
{
"error": {
"class": "GenericError",
"desc": "bps/iops/max total values and read/write values cannot be used at the same time"
}
}
{
"return": {
}
}
{
"timestamp": {
"seconds": TIMESTAMP,
"microseconds": TIMESTAMP
},
"event": "SHUTDOWN",
"data": {
"guest": false
}
}
== don't specify group ==
Testing:
{
QMP_VERSION
}
{
"return": {
}
}
{
"return": {
}
}
{
"error": {
"class": "GenericError",
"desc": "Parameter 'throttle-group' is missing"
}
}
{
"return": {
}
}
{
"timestamp": {
"seconds": TIMESTAMP,
"microseconds": TIMESTAMP
},
"event": "SHUTDOWN",
"data": {
"guest": false
}
}
*** done

View File

@ -180,6 +180,7 @@
181 rw auto migration 181 rw auto migration
182 rw auto quick 182 rw auto quick
183 rw auto migration 183 rw auto migration
184 rw auto quick
185 rw auto 185 rw auto
186 rw auto 186 rw auto
187 rw auto 187 rw auto