iotests: Add "wait" functionality to _cleanup_qemu
The qemu process does not always need to be killed, just waiting for it can be fine, too. This introduces a way to do so. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 1423256778-3340-3-git-send-email-mreitz@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
f53a829bb9
commit
ea82aa4283
@ -187,13 +187,23 @@ function _launch_qemu()
|
|||||||
|
|
||||||
|
|
||||||
# Silenty kills the QEMU process
|
# Silenty kills the QEMU process
|
||||||
|
#
|
||||||
|
# If $wait is set to anything other than the empty string, the process will not
|
||||||
|
# be killed but only waited for, and any output will be forwarded to stdout. If
|
||||||
|
# $wait is empty, the process will be killed and all output will be suppressed.
|
||||||
function _cleanup_qemu()
|
function _cleanup_qemu()
|
||||||
{
|
{
|
||||||
# QEMU_PID[], QEMU_IN[], QEMU_OUT[] all use same indices
|
# QEMU_PID[], QEMU_IN[], QEMU_OUT[] all use same indices
|
||||||
for i in "${!QEMU_OUT[@]}"
|
for i in "${!QEMU_OUT[@]}"
|
||||||
do
|
do
|
||||||
kill -KILL ${QEMU_PID[$i]} 2>/dev/null
|
if [ -z "${wait}" ]; then
|
||||||
|
kill -KILL ${QEMU_PID[$i]} 2>/dev/null
|
||||||
|
fi
|
||||||
wait ${QEMU_PID[$i]} 2>/dev/null # silent kill
|
wait ${QEMU_PID[$i]} 2>/dev/null # silent kill
|
||||||
|
if [ -n "${wait}" ]; then
|
||||||
|
cat <&${QEMU_OUT[$i]} | _filter_testdir | _filter_qemu \
|
||||||
|
| _filter_qemu_io | _filter_qmp
|
||||||
|
fi
|
||||||
rm -f "${QEMU_FIFO_IN}_${i}" "${QEMU_FIFO_OUT}_${i}"
|
rm -f "${QEMU_FIFO_IN}_${i}" "${QEMU_FIFO_OUT}_${i}"
|
||||||
eval "exec ${QEMU_IN[$i]}<&-" # close file descriptors
|
eval "exec ${QEMU_IN[$i]}<&-" # close file descriptors
|
||||||
eval "exec ${QEMU_OUT[$i]}<&-"
|
eval "exec ${QEMU_OUT[$i]}<&-"
|
||||||
|
Loading…
Reference in New Issue
Block a user