On 21.01.19 21:55, Eric Blake wrote: > On 12/21/18 5:47 PM, Max Reitz wrote: >> In some cases, we may want to deal with qemu-nbd errors (e.g. by >> launching it in a different configuration until it no longer throws >> any). In that case, we do not want its output ending up in the test >> output. >> >> It may still be useful for handling the error, though, so add a new >> function that works basically like qemu_nbd(), only that it returns the >> qemu-nbd output instead of making it end up in the log. In contrast to >> qemu_img_pipe(), it does still return the exit code as well, though, > > In contrast to qemu_nbd(), But qemu_nbd() does return the exit code. qemu_img_pipe() doesn't. >> because that is even more important for error handling. >> >> Signed-off-by: Max Reitz >> --- >> tests/qemu-iotests/iotests.py | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py >> index d537538ba0..9c3eb9e2f8 100644 >> --- a/tests/qemu-iotests/iotests.py >> +++ b/tests/qemu-iotests/iotests.py >> @@ -190,6 +190,20 @@ def qemu_nbd(*args): >> '''Run qemu-nbd in daemon mode and return the parent's exit code''' >> return subprocess.call(qemu_nbd_args + ['--fork'] + list(args)) >> >> +def qemu_nbd_pipe(*args): >> + '''Run qemu-nbd in daemon mode and return both the parent's exit code >> + and its output''' >> + subp = subprocess.Popen(qemu_nbd_args + ['--fork'] + list(args), >> + stdout=subprocess.PIPE, >> + stderr=subprocess.STDOUT, >> + universal_newlines=True) >> + exitcode = subp.wait() >> + if exitcode < 0: >> + sys.stderr.write('qemu-nbd received signal %i: %s\n' % >> + (-exitcode, >> + ' '.join(qemu_nbd_args + ['--fork'] + list(args)))) >> + return exitcode, subp.communicate()[0] >> + > > Reviewed-by: Eric Blake Thanks for reviewing! Max