Commit fc47d851 authored by Kevin Wolf's avatar Kevin Wolf
Browse files

qemu-iotests: Add VM.run_job()



Add an iotests.py function that runs a job and only returns when it is
destroyed. An error is logged when the job failed and job-finalize and
job-dismiss commands are issued if necessary.

Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
Reviewed-by: default avatarJeff Cody <jcody@redhat.com>
parent 6b605ade
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -418,6 +418,25 @@ class VM(qtest.QEMUQtestMachine):
        log(str(result), filters)
        return result

    def run_job(self, job, auto_finalize=True, auto_dismiss=False):
        while True:
            for ev in self.get_qmp_events_filtered(wait=True):
                if ev['event'] == 'JOB_STATUS_CHANGE':
                    status = ev['data']['status']
                    if status == 'aborting':
                        result = self.qmp('query-jobs')
                        for j in result['return']:
                            if j['id'] == job:
                                log('Job failed: %s' % (j['error']))
                    elif status == 'pending' and not auto_finalize:
                        self.qmp_log('job-finalize', id=job)
                    elif status == 'concluded' and not auto_dismiss:
                        self.qmp_log('job-dismiss', id=job)
                    elif status == 'null':
                        return
                else:
                    iotests.log(ev)


index_re = re.compile(r'([^\[]+)\[([^\]]+)\]')