Commit 72538537 authored by Kevin Wolf's avatar Kevin Wolf
Browse files

qemu-iotests: Allow QMP pretty printing in common.qemu



QMP responses to certain commands can become quite long, which doesn't
only make reading them hard, but also means that the maximum line length
in patch emails can be exceeded. Allow tests to switch to QMP pretty
printing, which results in more, but shorter lines.

We also need to make sure to keep indentation in the response for this
to work as expected.

Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
parent 61f09cea
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -56,13 +56,13 @@ function _timed_wait_for()
    shift

    QEMU_STATUS[$h]=0
    while read -t ${QEMU_COMM_TIMEOUT} resp <&${QEMU_OUT[$h]}
    while IFS= read -t ${QEMU_COMM_TIMEOUT} resp <&${QEMU_OUT[$h]}
    do
        if [ -z "${silent}" ]; then
            echo "${resp}" | _filter_testdir | _filter_qemu \
                           | _filter_qemu_io | _filter_qmp | _filter_hmp
        fi
        grep -q "${*}" < <(echo ${resp})
        grep -q "${*}" < <(echo "${resp}")
        if [ $? -eq 0 ]; then
            return
        fi
@@ -130,6 +130,7 @@ function _send_qemu_cmd()
# $qemu_comm_method: set this variable to 'monitor' (case insensitive)
#                    to use the QEMU HMP monitor for communication.
#                    Otherwise, the default of QMP is used.
# $qmp_pretty: Set this variable to 'y' to enable QMP pretty printing.
# $keep_stderr: Set this variable to 'y' to keep QEMU's stderr output on stderr.
#               If this variable is empty, stderr will be redirected to stdout.
# Returns:
@@ -146,8 +147,12 @@ function _launch_qemu()
        comm="-monitor stdio"
    else
        local qemu_comm_method="qmp"
        if [ "$qmp_pretty" = "y" ]; then
            comm="-monitor none -qmp-pretty stdio"
        else
            comm="-monitor none -qmp stdio"
        fi
    fi

    fifo_out=${QEMU_FIFO_OUT}_${_QEMU_HANDLE}
    fifo_in=${QEMU_FIFO_IN}_${_QEMU_HANDLE}
@@ -193,6 +198,9 @@ function _launch_qemu()
    then
        # Don't print response, since it has version information in it
        silent=yes _timed_wait_for ${_QEMU_HANDLE} "capabilities"
        if [ "$qmp_pretty" = "y" ]; then
            silent=yes _timed_wait_for ${_QEMU_HANDLE} "^}"
        fi
    fi
    QEMU_HANDLE=${_QEMU_HANDLE}
    let _QEMU_HANDLE++