qemu-iotests: use context managers for resource cleanup in 194

Switch from atexit.register() to a more elegant idiom of declaring
resources in a with statement:

  with FilePath('monitor.sock') as monitor_path,
       VM() as vm:
      ...

The files and VMs will be automatically cleaned up whether the test
passes or fails.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20170824072202.26818-4-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
master
Stefan Hajnoczi 2017-08-24 08:22:02 +01:00
parent f4844ac0ad
commit 921a32179b
1 changed files with 51 additions and 52 deletions

View File

@ -19,28 +19,27 @@
#
# Non-shared storage migration test using NBD server and drive-mirror
import os
import atexit
import iotests
iotests.verify_platform(['linux'])
with iotests.FilePath('source.img') as source_img_path, \
iotests.FilePath('dest.img') as dest_img_path, \
iotests.FilePath('migration.sock') as migration_sock_path, \
iotests.FilePath('nbd.sock') as nbd_sock_path, \
iotests.VM('source') as source_vm, \
iotests.VM('dest') as dest_vm:
img_size = '1G'
source_img_path = os.path.join(iotests.test_dir, 'source.img')
dest_img_path = os.path.join(iotests.test_dir, 'dest.img')
iotests.qemu_img_pipe('create', '-f', iotests.imgfmt, source_img_path, img_size)
iotests.qemu_img_pipe('create', '-f', iotests.imgfmt, dest_img_path, img_size)
iotests.log('Launching VMs...')
migration_sock_path = os.path.join(iotests.test_dir, 'migration.sock')
nbd_sock_path = os.path.join(iotests.test_dir, 'nbd.sock')
source_vm = iotests.VM('source').add_drive(source_img_path)
dest_vm = (iotests.VM('dest').add_drive(dest_img_path)
.add_incoming('unix:{0}'.format(migration_sock_path)))
source_vm.launch()
atexit.register(source_vm.shutdown)
dest_vm.launch()
atexit.register(dest_vm.shutdown)
(source_vm.add_drive(source_img_path)
.launch())
(dest_vm.add_drive(dest_img_path)
.add_incoming('unix:{0}'.format(migration_sock_path))
.launch())
iotests.log('Launching NBD server on destination...')
iotests.log(dest_vm.qmp('nbd-server-start', addr={'type': 'unix', 'data': {'path': nbd_sock_path}}))