Skip to content

Commit

Permalink
qemu-iotests: Test block-stream and block-commit in parallel
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
bertogg authored and kevmw committed Oct 31, 2016
1 parent eb290b7 commit 704d59f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
30 changes: 30 additions & 0 deletions tests/qemu-iotests/030
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,36 @@ class TestParallelOps(iotests.QMPTestCase):
self.assert_qmp(result, 'return', {})

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()

class TestSmallerBackingFile(iotests.QMPTestCase):
Expand Down
4 changes: 2 additions & 2 deletions tests/qemu-iotests/030.out
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
...................
....................
----------------------------------------------------------------------
Ran 19 tests
Ran 20 tests

OK

0 comments on commit 704d59f

Please sign in to comment.