mirror of https://github.com/xqemu/xqemu.git
qemu-iotests: Test block-stream and block-commit in parallel
As with test_stream_parallel(), we allow mixing block-stream and block-commit operations in the same backing chain as long as there's no overlap among the involved nodes. Signed-off-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
eb290b78ff
commit
704d59f13d
|
@ -315,6 +315,36 @@ class TestParallelOps(iotests.QMPTestCase):
|
||||||
self.assert_qmp(result, 'return', {})
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
self.wait_until_completed(drive='commit-drive0')
|
self.wait_until_completed(drive='commit-drive0')
|
||||||
|
|
||||||
|
# Test a block-stream and a block-commit job in parallel
|
||||||
|
def test_stream_commit(self):
|
||||||
|
self.assertLessEqual(8, self.num_imgs)
|
||||||
|
self.assert_no_active_block_jobs()
|
||||||
|
|
||||||
|
# Stream from node0 into node2
|
||||||
|
result = self.vm.qmp('block-stream', device='node2', job_id='node2')
|
||||||
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
|
# Commit from the active layer into node3
|
||||||
|
result = self.vm.qmp('block-commit', device='drive0', base=self.imgs[3])
|
||||||
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
|
# Wait for all jobs to be finished.
|
||||||
|
pending_jobs = ['node2', 'drive0']
|
||||||
|
while len(pending_jobs) > 0:
|
||||||
|
for event in self.vm.get_qmp_events(wait=True):
|
||||||
|
if event['event'] == 'BLOCK_JOB_COMPLETED':
|
||||||
|
node_name = self.dictpath(event, 'data/device')
|
||||||
|
self.assertTrue(node_name in pending_jobs)
|
||||||
|
self.assert_qmp_absent(event, 'data/error')
|
||||||
|
pending_jobs.remove(node_name)
|
||||||
|
if event['event'] == 'BLOCK_JOB_READY':
|
||||||
|
self.assert_qmp(event, 'data/device', 'drive0')
|
||||||
|
self.assert_qmp(event, 'data/type', 'commit')
|
||||||
|
self.assert_qmp_absent(event, 'data/error')
|
||||||
|
self.assertTrue('drive0' in pending_jobs)
|
||||||
|
self.vm.qmp('block-job-complete', device='drive0')
|
||||||
|
|
||||||
self.assert_no_active_block_jobs()
|
self.assert_no_active_block_jobs()
|
||||||
|
|
||||||
class TestSmallerBackingFile(iotests.QMPTestCase):
|
class TestSmallerBackingFile(iotests.QMPTestCase):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
...................
|
....................
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Ran 19 tests
|
Ran 20 tests
|
||||||
|
|
||||||
OK
|
OK
|
||||||
|
|
Loading…
Reference in New Issue