iotests.py: Let wait_migration() return on failure

Let wait_migration() return on failure (with the return value indicating
whether the migration was completed or has failed), so we can use it for
migrations that are expected to fail, too.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20200820150725.68687-3-mreitz@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Max Reitz 2020-08-20 17:07:24 +02:00 committed by Eric Blake
parent 31e4c354b3
commit 4bf63c8035
1 changed files with 12 additions and 6 deletions

View File

@ -729,16 +729,22 @@ class VM(qtest.QEMUQtestMachine):
}
]))
def wait_migration(self, expect_runstate):
def wait_migration(self, expect_runstate: Optional[str]) -> bool:
while True:
event = self.event_wait('MIGRATION')
log(event, filters=[filter_qmp_event])
if event['data']['status'] == 'completed':
if event['data']['status'] in ('completed', 'failed'):
break
# The event may occur in finish-migrate, so wait for the expected
# post-migration runstate
while self.qmp('query-status')['return']['status'] != expect_runstate:
pass
if event['data']['status'] == 'completed':
# The event may occur in finish-migrate, so wait for the expected
# post-migration runstate
runstate = None
while runstate != expect_runstate:
runstate = self.qmp('query-status')['return']['status']
return True
else:
return False
def node_info(self, node_name):
nodes = self.qmp('query-named-block-nodes')