qemu-iotests: Test naming of throttling groups
Throttling groups are named using the 'group' parameter of the block_set_io_throttle command and the throttling.group command-line option. If that parameter is unspecified the groups get the name of the block device. This patch adds a new test to check the naming of throttling groups. Signed-off-by: Alberto Garcia <berto@igalia.com> Message-id: d87d02823a6b91609509d8bb18e2f5dbd9a6102c.1467986342.git.berto@igalia.com Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
ff356ee4da
commit
435d5ee6cd
@ -184,5 +184,103 @@ class ThrottleTestCase(iotests.QMPTestCase):
|
||||
class ThrottleTestCoroutine(ThrottleTestCase):
|
||||
test_img = "null-co://"
|
||||
|
||||
class ThrottleTestGroupNames(iotests.QMPTestCase):
|
||||
test_img = "null-aio://"
|
||||
max_drives = 3
|
||||
|
||||
def setUp(self):
|
||||
self.vm = iotests.VM()
|
||||
for i in range(0, self.max_drives):
|
||||
self.vm.add_drive(self.test_img, "throttling.iops-total=100")
|
||||
self.vm.launch()
|
||||
|
||||
def tearDown(self):
|
||||
self.vm.shutdown()
|
||||
|
||||
def set_io_throttle(self, device, params):
|
||||
params["device"] = device
|
||||
result = self.vm.qmp("block_set_io_throttle", conv_keys=False, **params)
|
||||
self.assert_qmp(result, 'return', {})
|
||||
|
||||
def verify_name(self, device, name):
|
||||
result = self.vm.qmp("query-block")
|
||||
for r in result["return"]:
|
||||
if r["device"] == device:
|
||||
info = r["inserted"]
|
||||
if name:
|
||||
self.assertEqual(info["group"], name)
|
||||
else:
|
||||
self.assertFalse(info.has_key('group'))
|
||||
return
|
||||
|
||||
raise Exception("No group information found for '%s'" % device)
|
||||
|
||||
def test_group_naming(self):
|
||||
params = {"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"bps_wr": 0,
|
||||
"iops": 0,
|
||||
"iops_rd": 0,
|
||||
"iops_wr": 0}
|
||||
|
||||
# Check the drives added using the command line.
|
||||
# The default throttling group name is the device name.
|
||||
for i in range(self.max_drives):
|
||||
devname = "drive%d" % i
|
||||
self.verify_name(devname, devname)
|
||||
|
||||
# Clear throttling settings => the group name is gone.
|
||||
for i in range(self.max_drives):
|
||||
devname = "drive%d" % i
|
||||
self.set_io_throttle(devname, params)
|
||||
self.verify_name(devname, None)
|
||||
|
||||
# Set throttling settings using block_set_io_throttle and
|
||||
# check the default group names.
|
||||
params["iops"] = 10
|
||||
for i in range(self.max_drives):
|
||||
devname = "drive%d" % i
|
||||
self.set_io_throttle(devname, params)
|
||||
self.verify_name(devname, devname)
|
||||
|
||||
# Set a custom group name for each device
|
||||
for i in range(3):
|
||||
devname = "drive%d" % i
|
||||
groupname = "group%d" % i
|
||||
params['group'] = groupname
|
||||
self.set_io_throttle(devname, params)
|
||||
self.verify_name(devname, groupname)
|
||||
|
||||
# Put drive0 in group1 and check that all other devices remain
|
||||
# unchanged
|
||||
params['group'] = 'group1'
|
||||
self.set_io_throttle('drive0', params)
|
||||
self.verify_name('drive0', 'group1')
|
||||
for i in range(1, self.max_drives):
|
||||
devname = "drive%d" % i
|
||||
groupname = "group%d" % i
|
||||
self.verify_name(devname, groupname)
|
||||
|
||||
# Put drive0 in group2 and check that all other devices remain
|
||||
# unchanged
|
||||
params['group'] = 'group2'
|
||||
self.set_io_throttle('drive0', params)
|
||||
self.verify_name('drive0', 'group2')
|
||||
for i in range(1, self.max_drives):
|
||||
devname = "drive%d" % i
|
||||
groupname = "group%d" % i
|
||||
self.verify_name(devname, groupname)
|
||||
|
||||
# Clear throttling settings from drive0 check that all other
|
||||
# devices remain unchanged
|
||||
params["iops"] = 0
|
||||
self.set_io_throttle('drive0', params)
|
||||
self.verify_name('drive0', None)
|
||||
for i in range(1, self.max_drives):
|
||||
devname = "drive%d" % i
|
||||
groupname = "group%d" % i
|
||||
self.verify_name(devname, groupname)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
iotests.main(supported_fmts=["raw"])
|
||||
|
@ -1,5 +1,5 @@
|
||||
....
|
||||
.....
|
||||
----------------------------------------------------------------------
|
||||
Ran 4 tests
|
||||
Ran 5 tests
|
||||
|
||||
OK
|
||||
|
Loading…
Reference in New Issue
Block a user