mirror of https://github.com/xemu-project/xemu.git
iotests: copy-before-write: add cases for cbw-timeout option
Add two simple test-cases: timeout failure with break-snapshot-on-cbw-error behavior and similar with break-guest-write-on-cbw-error behavior. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@openvz.org> Reviewed-by: Hanna Reitz <hreitz@redhat.com> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
This commit is contained in:
parent
6db7fd1ca9
commit
9d05a87b77
|
@ -129,6 +129,87 @@ read 1048576/1048576 bytes at offset 0
|
||||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
def do_cbw_timeout(self, on_cbw_error):
|
||||||
|
result = self.vm.qmp('object-add', {
|
||||||
|
'qom-type': 'throttle-group',
|
||||||
|
'id': 'group0',
|
||||||
|
'limits': {'bps-write': 300 * 1024}
|
||||||
|
})
|
||||||
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
|
result = self.vm.qmp('blockdev-add', {
|
||||||
|
'node-name': 'cbw',
|
||||||
|
'driver': 'copy-before-write',
|
||||||
|
'on-cbw-error': on_cbw_error,
|
||||||
|
'cbw-timeout': 1,
|
||||||
|
'file': {
|
||||||
|
'driver': iotests.imgfmt,
|
||||||
|
'file': {
|
||||||
|
'driver': 'file',
|
||||||
|
'filename': source_img,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'target': {
|
||||||
|
'driver': 'throttle',
|
||||||
|
'throttle-group': 'group0',
|
||||||
|
'file': {
|
||||||
|
'driver': 'qcow2',
|
||||||
|
'file': {
|
||||||
|
'driver': 'file',
|
||||||
|
'filename': temp_img
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
|
result = self.vm.qmp('blockdev-add', {
|
||||||
|
'node-name': 'access',
|
||||||
|
'driver': 'snapshot-access',
|
||||||
|
'file': 'cbw'
|
||||||
|
})
|
||||||
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
|
result = self.vm.qmp('human-monitor-command',
|
||||||
|
command_line='qemu-io cbw "write 0 512K"')
|
||||||
|
self.assert_qmp(result, 'return', '')
|
||||||
|
|
||||||
|
# We need second write to trigger throttling
|
||||||
|
result = self.vm.qmp('human-monitor-command',
|
||||||
|
command_line='qemu-io cbw "write 512K 512K"')
|
||||||
|
self.assert_qmp(result, 'return', '')
|
||||||
|
|
||||||
|
result = self.vm.qmp('human-monitor-command',
|
||||||
|
command_line='qemu-io access "read 0 1M"')
|
||||||
|
self.assert_qmp(result, 'return', '')
|
||||||
|
|
||||||
|
self.vm.shutdown()
|
||||||
|
log = self.vm.get_log()
|
||||||
|
log = re.sub(r'^\[I \d+\.\d+\] OPENED\n', '', log)
|
||||||
|
log = re.sub(r'\[I \+\d+\.\d+\] CLOSED\n?$', '', log)
|
||||||
|
log = iotests.filter_qemu_io(log)
|
||||||
|
return log
|
||||||
|
|
||||||
|
def test_timeout_break_guest(self):
|
||||||
|
log = self.do_cbw_timeout('break-guest-write')
|
||||||
|
self.assertEqual(log, """\
|
||||||
|
wrote 524288/524288 bytes at offset 0
|
||||||
|
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
write failed: Connection timed out
|
||||||
|
read 1048576/1048576 bytes at offset 0
|
||||||
|
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
""")
|
||||||
|
|
||||||
|
def test_timeout_break_snapshot(self):
|
||||||
|
log = self.do_cbw_timeout('break-snapshot')
|
||||||
|
self.assertEqual(log, """\
|
||||||
|
wrote 524288/524288 bytes at offset 0
|
||||||
|
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
wrote 524288/524288 bytes at offset 524288
|
||||||
|
512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read failed: Permission denied
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
iotests.main(supported_fmts=['qcow2'],
|
iotests.main(supported_fmts=['qcow2'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
..
|
....
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Ran 2 tests
|
Ran 4 tests
|
||||||
|
|
||||||
OK
|
OK
|
||||||
|
|
Loading…
Reference in New Issue