提交 72538537 编写于 作者: K Kevin Wolf

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: NKevin Wolf <kwolf@redhat.com>
Reviewed-by: NEric Blake <eblake@redhat.com>
上级 61f09cea
...@@ -56,13 +56,13 @@ function _timed_wait_for() ...@@ -56,13 +56,13 @@ function _timed_wait_for()
shift shift
QEMU_STATUS[$h]=0 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 do
if [ -z "${silent}" ]; then if [ -z "${silent}" ]; then
echo "${resp}" | _filter_testdir | _filter_qemu \ echo "${resp}" | _filter_testdir | _filter_qemu \
| _filter_qemu_io | _filter_qmp | _filter_hmp | _filter_qemu_io | _filter_qmp | _filter_hmp
fi fi
grep -q "${*}" < <(echo ${resp}) grep -q "${*}" < <(echo "${resp}")
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
return return
fi fi
...@@ -130,6 +130,7 @@ function _send_qemu_cmd() ...@@ -130,6 +130,7 @@ function _send_qemu_cmd()
# $qemu_comm_method: set this variable to 'monitor' (case insensitive) # $qemu_comm_method: set this variable to 'monitor' (case insensitive)
# to use the QEMU HMP monitor for communication. # to use the QEMU HMP monitor for communication.
# Otherwise, the default of QMP is used. # 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. # $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. # If this variable is empty, stderr will be redirected to stdout.
# Returns: # Returns:
...@@ -146,7 +147,11 @@ function _launch_qemu() ...@@ -146,7 +147,11 @@ function _launch_qemu()
comm="-monitor stdio" comm="-monitor stdio"
else else
local qemu_comm_method="qmp" local qemu_comm_method="qmp"
comm="-monitor none -qmp stdio" if [ "$qmp_pretty" = "y" ]; then
comm="-monitor none -qmp-pretty stdio"
else
comm="-monitor none -qmp stdio"
fi
fi fi
fifo_out=${QEMU_FIFO_OUT}_${_QEMU_HANDLE} fifo_out=${QEMU_FIFO_OUT}_${_QEMU_HANDLE}
...@@ -193,6 +198,9 @@ function _launch_qemu() ...@@ -193,6 +198,9 @@ function _launch_qemu()
then then
# Don't print response, since it has version information in it # Don't print response, since it has version information in it
silent=yes _timed_wait_for ${_QEMU_HANDLE} "capabilities" silent=yes _timed_wait_for ${_QEMU_HANDLE} "capabilities"
if [ "$qmp_pretty" = "y" ]; then
silent=yes _timed_wait_for ${_QEMU_HANDLE} "^}"
fi
fi fi
QEMU_HANDLE=${_QEMU_HANDLE} QEMU_HANDLE=${_QEMU_HANDLE}
let _QEMU_HANDLE++ let _QEMU_HANDLE++
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册