diff mbox

[v5,02/13] iotests: Make redirecting qemu's stderr optional

Message ID 1425413591-31413-3-git-send-email-mreitz@redhat.com
State New
Headers show

Commit Message

Max Reitz March 3, 2015, 8:13 p.m. UTC
Redirecting qemu's stderr to stdout makes working with the stderr output
difficult due to the other file descriptor magic performed in
_launch_qemu ("ambiguous redirect").

Add an option which specifies whether stderr should be redirected to
stdout or not (allowing for other modes to be added in the future).

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/common.qemu | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Comments

Fam Zheng March 4, 2015, 6:19 a.m. UTC | #1
On Tue, 03/03 15:13, Max Reitz wrote:
> Redirecting qemu's stderr to stdout makes working with the stderr output
> difficult due to the other file descriptor magic performed in
> _launch_qemu ("ambiguous redirect").
> 
> Add an option which specifies whether stderr should be redirected to
> stdout or not (allowing for other modes to be added in the future).
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  tests/qemu-iotests/common.qemu | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/qemu-iotests/common.qemu b/tests/qemu-iotests/common.qemu
> index 4e1996c..1b5a554 100644
> --- a/tests/qemu-iotests/common.qemu
> +++ b/tests/qemu-iotests/common.qemu
> @@ -131,6 +131,8 @@ 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.
> +# $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:
>  # $QEMU_HANDLE: set to a handle value to communicate with this QEMU instance.
>  #
> @@ -153,10 +155,18 @@ function _launch_qemu()
>      mkfifo "${fifo_out}"
>      mkfifo "${fifo_in}"
>  
> -    "${QEMU}" -nographic -serial none ${comm} -machine accel=qtest "${@}" \
> +    if [ -z "$keep_stderr" ]; then
> +        "${QEMU}" -nographic -serial none ${comm} -machine accel=qtest "${@}" \
>                                                                  >"${fifo_out}" \
>                                                                  2>&1 \
>                                                                  <"${fifo_in}" &
> +    elif [ "$keep_stderr" = "y" ]; then
> +        "${QEMU}" -nographic -serial none ${comm} -machine accel=qtest "${@}" \
> +                                                                >"${fifo_out}" \
> +                                                                <"${fifo_in}" &
> +    else
> +        exit 1
> +    fi
>      QEMU_PID[${_QEMU_HANDLE}]=$!
>  
>      if [[ "${BASH_VERSINFO[0]}" -ge "5" ||
> -- 
> 2.1.0
> 
> 

There is some duplication in both branches but I can live with that:

Reviewed-by: Fam Zheng <famz@redhat.com>
diff mbox

Patch

diff --git a/tests/qemu-iotests/common.qemu b/tests/qemu-iotests/common.qemu
index 4e1996c..1b5a554 100644
--- a/tests/qemu-iotests/common.qemu
+++ b/tests/qemu-iotests/common.qemu
@@ -131,6 +131,8 @@  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.
+# $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:
 # $QEMU_HANDLE: set to a handle value to communicate with this QEMU instance.
 #
@@ -153,10 +155,18 @@  function _launch_qemu()
     mkfifo "${fifo_out}"
     mkfifo "${fifo_in}"
 
-    "${QEMU}" -nographic -serial none ${comm} -machine accel=qtest "${@}" \
+    if [ -z "$keep_stderr" ]; then
+        "${QEMU}" -nographic -serial none ${comm} -machine accel=qtest "${@}" \
                                                                 >"${fifo_out}" \
                                                                 2>&1 \
                                                                 <"${fifo_in}" &
+    elif [ "$keep_stderr" = "y" ]; then
+        "${QEMU}" -nographic -serial none ${comm} -machine accel=qtest "${@}" \
+                                                                >"${fifo_out}" \
+                                                                <"${fifo_in}" &
+    else
+        exit 1
+    fi
     QEMU_PID[${_QEMU_HANDLE}]=$!
 
     if [[ "${BASH_VERSINFO[0]}" -ge "5" ||