aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2019-08-01 13:14:09 +0200
committerKevin Wolf <kwolf@redhat.com>2019-08-16 10:25:16 +0200
commit980448f17a24573fea53ceec3fa66353e9fd4092 (patch)
tree3f04996a3bcc7f8b7d7d4df06dee668f35c459d0 /tests
parent19462c4bdd3bab7d277aafbdc178daa6ca074c9c (diff)
downloadqemu-980448f17a24573fea53ceec3fa66353e9fd4092.zip
qemu-980448f17a24573fea53ceec3fa66353e9fd4092.tar.gz
qemu-980448f17a24573fea53ceec3fa66353e9fd4092.tar.bz2
iotests: Move migration helpers to iotests.py
234 implements functions that are useful for doing migration between two VMs. Move them to iotests.py so that other test cases can use them, too. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'tests')
-rwxr-xr-xtests/qemu-iotests/23430
-rw-r--r--tests/qemu-iotests/iotests.py16
2 files changed, 23 insertions, 23 deletions
diff --git a/tests/qemu-iotests/234 b/tests/qemu-iotests/234
index c4c26bc..34c818c 100755
--- a/tests/qemu-iotests/234
+++ b/tests/qemu-iotests/234
@@ -26,22 +26,6 @@ import os
iotests.verify_image_format(supported_fmts=['qcow2'])
iotests.verify_platform(['linux'])
-def enable_migration_events(vm, name):
- iotests.log('Enabling migration QMP events on %s...' % name)
- iotests.log(vm.qmp('migrate-set-capabilities', capabilities=[
- {
- 'capability': 'events',
- 'state': True
- }
- ]))
-
-def wait_migration(vm):
- while True:
- event = vm.event_wait('MIGRATION')
- iotests.log(event, filters=[iotests.filter_qmp_event])
- if event['data']['status'] == 'completed':
- break
-
with iotests.FilePath('img') as img_path, \
iotests.FilePath('backing') as backing_path, \
iotests.FilePath('mig_fifo_a') as fifo_a, \
@@ -62,7 +46,7 @@ with iotests.FilePath('img') as img_path, \
.add_blockdev('%s,file=drive0-backing-file,node-name=drive0-backing' % (iotests.imgfmt))
.launch())
- enable_migration_events(vm_a, 'A')
+ vm_a.enable_migration_events('A')
iotests.log('Launching destination VM...')
(vm_b.add_blockdev('file,filename=%s,node-name=drive0-file' % (img_path))
@@ -72,7 +56,7 @@ with iotests.FilePath('img') as img_path, \
.add_incoming("exec: cat '%s'" % (fifo_a))
.launch())
- enable_migration_events(vm_b, 'B')
+ vm_b.enable_migration_events('B')
# Add a child node that was created after the parent node. The reverse case
# is covered by the -blockdev options above.
@@ -85,9 +69,9 @@ with iotests.FilePath('img') as img_path, \
iotests.log(vm_a.qmp('migrate', uri='exec:cat >%s' % (fifo_a)))
with iotests.Timeout(3, 'Migration does not complete'):
# Wait for the source first (which includes setup=setup)
- wait_migration(vm_a)
+ vm_a.wait_migration()
# Wait for the destination second (which does not)
- wait_migration(vm_b)
+ vm_b.wait_migration()
iotests.log(vm_a.qmp('query-migrate')['return']['status'])
iotests.log(vm_b.qmp('query-migrate')['return']['status'])
@@ -105,7 +89,7 @@ with iotests.FilePath('img') as img_path, \
.add_incoming("exec: cat '%s'" % (fifo_b))
.launch())
- enable_migration_events(vm_a, 'A')
+ vm_a.enable_migration_events('A')
iotests.log(vm_a.qmp('blockdev-snapshot', node='drive0-backing',
overlay='drive0'))
@@ -114,9 +98,9 @@ with iotests.FilePath('img') as img_path, \
iotests.log(vm_b.qmp('migrate', uri='exec:cat >%s' % (fifo_b)))
with iotests.Timeout(3, 'Migration does not complete'):
# Wait for the source first (which includes setup=setup)
- wait_migration(vm_b)
+ vm_b.wait_migration()
# Wait for the destination second (which does not)
- wait_migration(vm_a)
+ vm_a.wait_migration()
iotests.log(vm_a.qmp('query-migrate')['return']['status'])
iotests.log(vm_b.qmp('query-migrate')['return']['status'])
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index ce74177..91172c3 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -583,6 +583,22 @@ class VM(qtest.QEMUQtestMachine):
elif status == 'null':
return error
+ def enable_migration_events(self, name):
+ log('Enabling migration QMP events on %s...' % name)
+ log(self.qmp('migrate-set-capabilities', capabilities=[
+ {
+ 'capability': 'events',
+ 'state': True
+ }
+ ]))
+
+ def wait_migration(self):
+ while True:
+ event = self.event_wait('MIGRATION')
+ log(event, filters=[filter_qmp_event])
+ if event['data']['status'] == 'completed':
+ break
+
def node_info(self, node_name):
nodes = self.qmp('query-named-block-nodes')
for x in nodes['return']: