xref: /openbmc/qemu/tests/qemu-iotests/184 (revision a557b00469bca61a058fc1db4855503cac1c3219)
111a82d14SPhilippe Mathieu-Daudé#!/usr/bin/env bash
2*9dd003a9SVladimir Sementsov-Ogievskiy# group: rw auto quick
31e13e201SManos Pitsidianakis#
41e13e201SManos Pitsidianakis# Test I/O throttle block filter driver interface
51e13e201SManos Pitsidianakis#
61e13e201SManos Pitsidianakis# Copyright (C) 2017 Manos Pitsidianakis
71e13e201SManos Pitsidianakis#
81e13e201SManos Pitsidianakis# This program is free software; you can redistribute it and/or modify
91e13e201SManos Pitsidianakis# it under the terms of the GNU General Public License as published by
101e13e201SManos Pitsidianakis# the Free Software Foundation; either version 2 of the License, or
111e13e201SManos Pitsidianakis# (at your option) any later version.
121e13e201SManos Pitsidianakis#
131e13e201SManos Pitsidianakis# This program is distributed in the hope that it will be useful,
141e13e201SManos Pitsidianakis# but WITHOUT ANY WARRANTY; without even the implied warranty of
151e13e201SManos Pitsidianakis# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
161e13e201SManos Pitsidianakis# GNU General Public License for more details.
171e13e201SManos Pitsidianakis#
181e13e201SManos Pitsidianakis# You should have received a copy of the GNU General Public License
191e13e201SManos Pitsidianakis# along with this program.  If not, see <http://www.gnu.org/licenses/>.
201e13e201SManos Pitsidianakis#
211e13e201SManos Pitsidianakis
221e13e201SManos Pitsidianakis# creator
231e13e201SManos Pitsidianakisowner="Manos Pitsidianakis"
241e13e201SManos Pitsidianakis
251e13e201SManos Pitsidianakisseq=`basename $0`
261e13e201SManos Pitsidianakisecho "QA output created by $seq"
271e13e201SManos Pitsidianakis
281e13e201SManos Pitsidianakisstatus=1	# failure is the default!
291e13e201SManos Pitsidianakis
30b5d92efaSMax Reitztrap "exit \$status" 0 1 2 3 15
311e13e201SManos Pitsidianakis
321e13e201SManos Pitsidianakis# get standard environment, filters and checks
331e13e201SManos Pitsidianakis. ./common.rc
341e13e201SManos Pitsidianakis. ./common.filter
351e13e201SManos Pitsidianakis
361e13e201SManos Pitsidianakis_supported_os Linux
3721b43d00SThomas Huth_require_drivers throttle
381e13e201SManos Pitsidianakis
398cedcffdSEric Blakedo_run_qemu()
401e13e201SManos Pitsidianakis{
411e13e201SManos Pitsidianakis    echo Testing: "$@" | _filter_imgfmt
421e13e201SManos Pitsidianakis    $QEMU -nographic -qmp-pretty stdio -serial none "$@"
431e13e201SManos Pitsidianakis    echo
441e13e201SManos Pitsidianakis}
451e13e201SManos Pitsidianakis
468cedcffdSEric Blakerun_qemu()
471e13e201SManos Pitsidianakis{
481e13e201SManos Pitsidianakis    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_qmp\
4907cd7b65SMax Reitz                          | _filter_qemu_io | _filter_generated_node_ids
501e13e201SManos Pitsidianakis}
511e13e201SManos Pitsidianakis
521e13e201SManos Pitsidianakistest_throttle=$($QEMU_IMG --help|grep throttle)
531e13e201SManos Pitsidianakis[ "$test_throttle" = "" ] && _supported_fmt throttle
541e13e201SManos Pitsidianakis
551e13e201SManos Pitsidianakisecho
561e13e201SManos Pitsidianakisecho "== checking interface =="
571e13e201SManos Pitsidianakis
581e13e201SManos Pitsidianakisrun_qemu <<EOF
591e13e201SManos Pitsidianakis{ "execute": "qmp_capabilities" }
601e13e201SManos Pitsidianakis{ "execute": "blockdev-add",
611e13e201SManos Pitsidianakis  "arguments": {
62b5d92efaSMax Reitz    "driver": "null-co",
63b5d92efaSMax Reitz    "node-name": "disk0"
641e13e201SManos Pitsidianakis  }
651e13e201SManos Pitsidianakis}
661e13e201SManos Pitsidianakis{ "execute": "object-add",
671e13e201SManos Pitsidianakis  "arguments": {
681e13e201SManos Pitsidianakis    "qom-type": "throttle-group",
691e13e201SManos Pitsidianakis    "id": "group0",
701e13e201SManos Pitsidianakis    "limits" : {
711e13e201SManos Pitsidianakis      "iops-total": 1000
721e13e201SManos Pitsidianakis    }
731e13e201SManos Pitsidianakis  }
741e13e201SManos Pitsidianakis}
751e13e201SManos Pitsidianakis{ "execute": "blockdev-add",
761e13e201SManos Pitsidianakis  "arguments": {
771e13e201SManos Pitsidianakis    "driver": "throttle",
781e13e201SManos Pitsidianakis    "node-name": "throttle0",
791e13e201SManos Pitsidianakis    "throttle-group": "group0",
801e13e201SManos Pitsidianakis    "file": "disk0"
811e13e201SManos Pitsidianakis  }
821e13e201SManos Pitsidianakis}
831e13e201SManos Pitsidianakis{ "execute": "query-named-block-nodes" }
841e13e201SManos Pitsidianakis{ "execute": "query-block" }
851e13e201SManos Pitsidianakis{ "execute": "quit" }
861e13e201SManos PitsidianakisEOF
871e13e201SManos Pitsidianakis
881e13e201SManos Pitsidianakisecho
891e13e201SManos Pitsidianakisecho "== property changes in ThrottleGroup =="
901e13e201SManos Pitsidianakis
911e13e201SManos Pitsidianakisrun_qemu <<EOF
921e13e201SManos Pitsidianakis{ "execute": "qmp_capabilities" }
931e13e201SManos Pitsidianakis{ "execute": "object-add",
941e13e201SManos Pitsidianakis  "arguments": {
951e13e201SManos Pitsidianakis    "qom-type": "throttle-group",
961e13e201SManos Pitsidianakis    "id": "group0",
971e13e201SManos Pitsidianakis    "limits": {
981e13e201SManos Pitsidianakis        "iops-total": 1000
991e13e201SManos Pitsidianakis    }
1001e13e201SManos Pitsidianakis  }
1011e13e201SManos Pitsidianakis}
1021e13e201SManos Pitsidianakis{ "execute" : "qom-get",
1031e13e201SManos Pitsidianakis  "arguments" : {
1041e13e201SManos Pitsidianakis    "path" : "group0",
1051e13e201SManos Pitsidianakis    "property" : "limits"
1061e13e201SManos Pitsidianakis  }
1071e13e201SManos Pitsidianakis}
1081e13e201SManos Pitsidianakis{ "execute" : "qom-set",
1091e13e201SManos Pitsidianakis    "arguments" : {
1101e13e201SManos Pitsidianakis        "path" : "group0",
1111e13e201SManos Pitsidianakis        "property" : "limits",
1121e13e201SManos Pitsidianakis        "value" : {
1131e13e201SManos Pitsidianakis            "iops-total" : 0
1141e13e201SManos Pitsidianakis        }
1151e13e201SManos Pitsidianakis    }
1161e13e201SManos Pitsidianakis}
1171e13e201SManos Pitsidianakis{ "execute" : "qom-get",
1181e13e201SManos Pitsidianakis  "arguments" : {
1191e13e201SManos Pitsidianakis    "path" : "group0",
1201e13e201SManos Pitsidianakis    "property" : "limits"
1211e13e201SManos Pitsidianakis  }
1221e13e201SManos Pitsidianakis}
1231e13e201SManos Pitsidianakis{ "execute": "quit" }
1241e13e201SManos PitsidianakisEOF
1251e13e201SManos Pitsidianakis
1261e13e201SManos Pitsidianakisecho
1271e13e201SManos Pitsidianakisecho "== object creation/set errors  =="
1281e13e201SManos Pitsidianakis
1291e13e201SManos Pitsidianakisrun_qemu <<EOF
1301e13e201SManos Pitsidianakis{ "execute": "qmp_capabilities" }
1311e13e201SManos Pitsidianakis{ "execute": "object-add",
1321e13e201SManos Pitsidianakis  "arguments": {
1331e13e201SManos Pitsidianakis    "qom-type": "throttle-group",
1341e13e201SManos Pitsidianakis    "id": "group0",
1351e13e201SManos Pitsidianakis    "limits": {
1361e13e201SManos Pitsidianakis        "iops-total": 1000
1371e13e201SManos Pitsidianakis    }
1381e13e201SManos Pitsidianakis  }
1391e13e201SManos Pitsidianakis}
1401e13e201SManos Pitsidianakis{ "execute" : "qom-set",
1411e13e201SManos Pitsidianakis  "arguments" : {
1421e13e201SManos Pitsidianakis    "path" : "group0",
1431e13e201SManos Pitsidianakis    "property" : "x-iops-total",
1441e13e201SManos Pitsidianakis    "value" : 0
1451e13e201SManos Pitsidianakis  }
1461e13e201SManos Pitsidianakis}
1471e13e201SManos Pitsidianakis{ "execute" : "qom-set",
1481e13e201SManos Pitsidianakis    "arguments" : {
1491e13e201SManos Pitsidianakis        "path" : "group0",
1501e13e201SManos Pitsidianakis        "property" : "limits",
1511e13e201SManos Pitsidianakis        "value" : {
1521e13e201SManos Pitsidianakis            "iops-total" : 10,
1531e13e201SManos Pitsidianakis            "iops-read" : 10
1541e13e201SManos Pitsidianakis        }
1551e13e201SManos Pitsidianakis    }
1561e13e201SManos Pitsidianakis}
1571e13e201SManos Pitsidianakis{ "execute": "quit" }
1581e13e201SManos PitsidianakisEOF
1591e13e201SManos Pitsidianakis
1601e13e201SManos Pitsidianakisecho
1611e13e201SManos Pitsidianakisecho "== don't specify group =="
1621e13e201SManos Pitsidianakis
1631e13e201SManos Pitsidianakisrun_qemu <<EOF
1641e13e201SManos Pitsidianakis{ "execute": "qmp_capabilities" }
1651e13e201SManos Pitsidianakis{ "execute": "blockdev-add",
1661e13e201SManos Pitsidianakis  "arguments": {
167b5d92efaSMax Reitz    "driver": "null-co",
168b5d92efaSMax Reitz    "node-name": "disk0"
1691e13e201SManos Pitsidianakis  }
1701e13e201SManos Pitsidianakis}
1711e13e201SManos Pitsidianakis{ "execute": "blockdev-add",
1721e13e201SManos Pitsidianakis  "arguments": {
1731e13e201SManos Pitsidianakis    "driver": "throttle",
1741e13e201SManos Pitsidianakis    "node-name": "throttle0",
1751e13e201SManos Pitsidianakis    "file": "disk0"
1761e13e201SManos Pitsidianakis  }
1771e13e201SManos Pitsidianakis}
1781e13e201SManos Pitsidianakis{ "execute": "quit" }
1791e13e201SManos PitsidianakisEOF
1801e13e201SManos Pitsidianakis
1811e13e201SManos Pitsidianakisecho
1821e13e201SManos Pitsidianakis# success, all done
1831e13e201SManos Pitsidianakisecho "*** done"
1841e13e201SManos Pitsidianakisrm -f $seq.full
1851e13e201SManos Pitsidianakisstatus=0
186