[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 11/16] iotests: Warn if python subprocess is killed
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 11/16] iotests: Warn if python subprocess is killed |
Date: |
Fri, 4 Sep 2015 22:10:42 +0200 |
From: Max Reitz <address@hidden>
Currently, if a subprocess of a python test (i.e. qemu-io, qemu-img, or
qemu) receives a signal and is subsequently aborted, this is not logged.
This patch makes python tests always check the exit code of these
subprocesses, and emit a message if they have been killed.
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
tests/qemu-iotests/iotests.py | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 8e3419f..ff5905f 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -57,20 +57,34 @@ socket_scm_helper = os.environ.get('SOCKET_SCM_HELPER',
'socket_scm_helper')
def qemu_img(*args):
'''Run qemu-img and return the exit code'''
devnull = open('/dev/null', 'r+')
- return subprocess.call(qemu_img_args + list(args), stdin=devnull,
stdout=devnull)
+ exitcode = subprocess.call(qemu_img_args + list(args), stdin=devnull,
stdout=devnull)
+ if exitcode < 0:
+ sys.stderr.write('qemu-img received signal %i: %s\n' % (-exitcode, '
'.join(qemu_img_args + list(args))))
+ return exitcode
def qemu_img_verbose(*args):
'''Run qemu-img without suppressing its output and return the exit code'''
- return subprocess.call(qemu_img_args + list(args))
+ exitcode = subprocess.call(qemu_img_args + list(args))
+ if exitcode < 0:
+ sys.stderr.write('qemu-img received signal %i: %s\n' % (-exitcode, '
'.join(qemu_img_args + list(args))))
+ return exitcode
def qemu_img_pipe(*args):
'''Run qemu-img and return its output'''
- return subprocess.Popen(qemu_img_args + list(args),
stdout=subprocess.PIPE).communicate()[0]
+ subp = subprocess.Popen(qemu_img_args + list(args), stdout=subprocess.PIPE)
+ exitcode = subp.wait()
+ if exitcode < 0:
+ sys.stderr.write('qemu-img received signal %i: %s\n' % (-exitcode, '
'.join(qemu_img_args + list(args))))
+ return subp.communicate()[0]
def qemu_io(*args):
'''Run qemu-io and return the stdout data'''
args = qemu_io_args + list(args)
- return subprocess.Popen(args, stdout=subprocess.PIPE).communicate()[0]
+ subp = subprocess.Popen(args, stdout=subprocess.PIPE)
+ exitcode = subp.wait()
+ if exitcode < 0:
+ sys.stderr.write('qemu-io received signal %i: %s\n' % (-exitcode, '
'.join(args)))
+ return subp.communicate()[0]
def compare_images(img1, img2):
'''Return True if two image files are identical'''
@@ -208,7 +222,9 @@ class VM(object):
'''Terminate the VM and clean up'''
if not self._popen is None:
self._qmp.cmd('quit')
- self._popen.wait()
+ exitcode = self._popen.wait()
+ if exitcode < 0:
+ sys.stderr.write('qemu received signal %i: %s\n' % (-exitcode,
' '.join(self._args)))
os.remove(self._monitor_path)
os.remove(self._qtest_path)
os.remove(self._qemu_log_path)
--
1.8.3.1
- [Qemu-block] [PULL 00/16] Block patches, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 01/16] qemu-iotests: qemu machine type support, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 03/16] qemu-iotests: s390x: fix test 041 and 055, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 02/16] qemu-iotests: disable default qemu devices for cross-platform compatibility, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 04/16] qemu-iotests: s390x: fix test 049, reject negative sizes in QemuOpts, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 05/16] qemu-iotests: s390x: fix test 130, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 06/16] block/raw-posix: Use raw_normalize_devicepath(), Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 08/16] iotests: More options for VM.add_drive(), Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 07/16] qemu-img: Fix crash in amend invocation, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 09/16] iotests: Respect -nodefaults in tests 41 and 55, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 11/16] iotests: Warn if python subprocess is killed,
Kevin Wolf <=
- [Qemu-block] [PULL 10/16] iotests: Do not suppress segfaults in bash tests, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 12/16] qcow2: mark the memory as no longer needed after qcow2_cache_empty(), Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 15/16] qcow2: reorder fields in Qcow2CachedTable to reduce padding, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 13/16] qcow2: add option to clean unused cache entries after some time, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 14/16] docs: document how to configure the qcow2 L2/refcount caches, Kevin Wolf, 2015/09/04
- [Qemu-block] [PULL 16/16] quorum: validate vote threshold against num_children even if read-pattern is fifo, Kevin Wolf, 2015/09/04
- Re: [Qemu-block] [Qemu-devel] [PULL 00/16] Block patches, Peter Maydell, 2015/09/07