Skip to content

Commit 216656f

Browse files
committed
iotests: Add @error to wait_until_completed
Callers can use this new parameter to expect failure during the completion process. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-id: 20191108123455.39445-5-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
1 parent 69c6449 commit 216656f

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

tests/qemu-iotests/iotests.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -811,15 +811,20 @@ def cancel_and_wait(self, drive='drive0', force=False, resume=False, wait=60.0):
811811
self.assert_no_active_block_jobs()
812812
return result
813813

814-
def wait_until_completed(self, drive='drive0', check_offset=True, wait=60.0):
814+
def wait_until_completed(self, drive='drive0', check_offset=True, wait=60.0,
815+
error=None):
815816
'''Wait for a block job to finish, returning the event'''
816817
while True:
817818
for event in self.vm.get_qmp_events(wait=wait):
818819
if event['event'] == 'BLOCK_JOB_COMPLETED':
819820
self.assert_qmp(event, 'data/device', drive)
820-
self.assert_qmp_absent(event, 'data/error')
821-
if check_offset:
822-
self.assert_qmp(event, 'data/offset', event['data']['len'])
821+
if error is None:
822+
self.assert_qmp_absent(event, 'data/error')
823+
if check_offset:
824+
self.assert_qmp(event, 'data/offset',
825+
event['data']['len'])
826+
else:
827+
self.assert_qmp(event, 'data/error', error)
823828
self.assert_no_active_block_jobs()
824829
return event
825830
elif event['event'] == 'JOB_STATUS_CHANGE':
@@ -837,15 +842,16 @@ def wait_ready_and_cancel(self, drive='drive0'):
837842
self.assert_qmp(event, 'data/type', 'mirror')
838843
self.assert_qmp(event, 'data/offset', event['data']['len'])
839844

840-
def complete_and_wait(self, drive='drive0', wait_ready=True):
845+
def complete_and_wait(self, drive='drive0', wait_ready=True,
846+
completion_error=None):
841847
'''Complete a block job and wait for it to finish'''
842848
if wait_ready:
843849
self.wait_ready(drive=drive)
844850

845851
result = self.vm.qmp('block-job-complete', device=drive)
846852
self.assert_qmp(result, 'return', {})
847853

848-
event = self.wait_until_completed(drive=drive)
854+
event = self.wait_until_completed(drive=drive, error=completion_error)
849855
self.assert_qmp(event, 'data/type', 'mirror')
850856

851857
def pause_wait(self, job_id='job0'):

0 commit comments

Comments
 (0)