iotests: Fix intermittent failure in 219
In 219, we wait for the job to make progress before we emit its status. This makes the output reliable. We do not wait for any more progress if the job's current-progress already matches its total-progress. Unfortunately, there is a bug: Right after the job has been started, it's possible that total-progress is still 0. In that case, we may skip the first progress-making step and keep ending up 64 kB short. To fix that bug, we can simply wait for total-progress to reach 4 MB (the image size) after starting the job. Reported-by: Karen Mezick <kmezick@redhat.com> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1686651 Signed-off-by: Max Reitz <mreitz@redhat.com> Message-id: 20190516161114.27596-1-mreitz@redhat.com Reviewed-by: John Snow <jsnow@redhat.com> [mreitz: Adjusted commit message as per John's proposal] Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
a3bd71b577
commit
d9efe9384e
@ -23,6 +23,8 @@ import iotests
|
||||
|
||||
iotests.verify_image_format(supported_fmts=['qcow2'])
|
||||
|
||||
img_size = 4 * 1024 * 1024
|
||||
|
||||
def pause_wait(vm, job_id):
|
||||
with iotests.Timeout(3, "Timeout waiting for job to pause"):
|
||||
while True:
|
||||
@ -62,6 +64,8 @@ def test_pause_resume(vm):
|
||||
iotests.log(vm.qmp('query-jobs'))
|
||||
|
||||
def test_job_lifecycle(vm, job, job_args, has_ready=False):
|
||||
global img_size
|
||||
|
||||
iotests.log('')
|
||||
iotests.log('')
|
||||
iotests.log('Starting block job: %s (auto-finalize: %s; auto-dismiss: %s)' %
|
||||
@ -84,6 +88,10 @@ def test_job_lifecycle(vm, job, job_args, has_ready=False):
|
||||
iotests.log(iotests.filter_qmp_event(vm.event_wait('JOB_STATUS_CHANGE')))
|
||||
iotests.log(iotests.filter_qmp_event(vm.event_wait('JOB_STATUS_CHANGE')))
|
||||
|
||||
# Wait for total-progress to stabilize
|
||||
while vm.qmp('query-jobs')['return'][0]['total-progress'] < img_size:
|
||||
pass
|
||||
|
||||
# RUNNING state:
|
||||
# pause/resume should work, complete/finalize/dismiss should error out
|
||||
iotests.log('')
|
||||
@ -173,9 +181,8 @@ with iotests.FilePath('disk.img') as disk_path, \
|
||||
iotests.FilePath('copy.img') as copy_path, \
|
||||
iotests.VM() as vm:
|
||||
|
||||
img_size = '4M'
|
||||
iotests.qemu_img_create('-f', iotests.imgfmt, disk_path, img_size)
|
||||
iotests.qemu_io('-c', 'write 0 %s' % (img_size),
|
||||
iotests.qemu_img_create('-f', iotests.imgfmt, disk_path, str(img_size))
|
||||
iotests.qemu_io('-c', 'write 0 %i' % (img_size),
|
||||
'-f', iotests.imgfmt, disk_path)
|
||||
|
||||
iotests.log('Launching VM...')
|
||||
|
Loading…
x
Reference in New Issue
Block a user