aboutsummaryrefslogtreecommitdiff
path: root/scripts/qemu.py
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2017-09-05 15:59:28 +0100
committerPeter Maydell <peter.maydell@linaro.org>2017-09-05 15:59:28 +0100
commit6bbd7e2728f488f881f6a2a521fe7c5083684bc5 (patch)
tree12774a457cd6664d85a3782e6dada3cec1ab3987 /scripts/qemu.py
parent6d58d50e5376d8143802a3102289744e660302f0 (diff)
parentb461151ff31c7925f271c297e8abed20231ac7d3 (diff)
downloadqemu-6bbd7e2728f488f881f6a2a521fe7c5083684bc5.zip
qemu-6bbd7e2728f488f881f6a2a521fe7c5083684bc5.tar.gz
qemu-6bbd7e2728f488f881f6a2a521fe7c5083684bc5.tar.bz2
Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging
# gpg: Signature made Tue 05 Sep 2017 14:28:52 BST # gpg: using RSA key 0x9CA4ABB381AB73C8 # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" # gpg: aka "Stefan Hajnoczi <stefanha@gmail.com>" # Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35 775A 9CA4 ABB3 81AB 73C8 * remotes/stefanha/tags/block-pull-request: block: document semantics of bdrv_co_preadv|pwritev qemu-iotests: use context managers for resource cleanup in 194 iotests.py: add FilePath context manager qemu.py: make VM() a context manager Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'scripts/qemu.py')
-rw-r--r--scripts/qemu.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/scripts/qemu.py b/scripts/qemu.py
index 880e3e8..4d8ee10 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -21,7 +21,14 @@ import qmp.qmp
class QEMUMachine(object):
- '''A QEMU VM'''
+ '''A QEMU VM
+
+ Use this object as a context manager to ensure the QEMU process terminates::
+
+ with VM(binary) as vm:
+ ...
+ # vm is guaranteed to be shut down here
+ '''
def __init__(self, binary, args=[], wrapper=[], name=None, test_dir="/var/tmp",
monitor_address=None, socket_scm_helper=None, debug=False):
@@ -40,6 +47,13 @@ class QEMUMachine(object):
self._socket_scm_helper = socket_scm_helper
self._debug = debug
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ self.shutdown()
+ return False
+
# This can be used to add an unused monitor instance.
def add_monitor_telnet(self, ip, port):
args = 'tcp:%s:%d,server,nowait,telnet' % (ip, port)