From: Emanuele Giuseppe Esposito <eespo...@redhat.com> First, use run_job() instead of the current logic to run the stream job. Then, use auto_finalize=False to be sure that the job is not automatically deleted once it is done.
In this way, if the job finishes before we want, it is not finalized yet so the other commands can still execute without failing. run_job() will then take care of calling job-finalize. Signed-off-by: Emanuele Giuseppe Esposito <eespo...@redhat.com> Suggested-by: Kevin Wolf <kw...@redhat.com> Message-Id: <20220314131854.2202651-11-eespo...@redhat.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- tests/qemu-iotests/030 | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030 index 98595d47fec3..e5c13cb5fe4c 100755 --- a/tests/qemu-iotests/030 +++ b/tests/qemu-iotests/030 @@ -256,7 +256,7 @@ class TestParallelOps(iotests.QMPTestCase): pending_jobs.append(job_id) result = self.vm.qmp('block-stream', device=node_name, job_id=job_id, bottom=f'node{i-1}', - speed=1024) + speed=1024, auto_finalize=False) self.assert_qmp(result, 'return', {}) # Do this in reverse: After unthrottling them, some jobs may finish @@ -272,14 +272,8 @@ class TestParallelOps(iotests.QMPTestCase): result = self.vm.qmp('block-job-set-speed', device=job, speed=0) self.assert_qmp(result, 'return', {}) - # Wait for all jobs to be finished. - while len(pending_jobs) > 0: - for event in self.vm.get_qmp_events(wait=True): - if event['event'] == 'BLOCK_JOB_COMPLETED': - job_id = self.dictpath(event, 'data/device') - self.assertTrue(job_id in pending_jobs) - self.assert_qmp_absent(event, 'data/error') - pending_jobs.remove(job_id) + for job in pending_jobs: + self.vm.run_job(job=job, auto_finalize=False) self.assert_no_active_block_jobs() self.vm.shutdown() -- 2.38.1