[PATCH 03/18] tests: support QTEST_TRACE env variable

Daniel P. Berrangé posted 18 patches 3 years, 11 months ago
Maintainers: "Daniel P. Berrangé" <berrange@redhat.com>, Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
There is a newer version of this series
[PATCH 03/18] tests: support QTEST_TRACE env variable
Posted by Daniel P. Berrangé 3 years, 11 months ago
When debugging failing qtests it is useful to be able to turn on trace
output to stderr. The QTEST_TRACE env variable contents get injected
as a '-trace <str>' command line arg

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 tests/qtest/libqtest.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index 41f4da4e54..a85f8a6d05 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -260,6 +260,9 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
     gchar *qmp_socket_path;
     gchar *command;
     const char *qemu_binary = qtest_qemu_binary();
+    const char *trace = g_getenv("QTEST_TRACE");
+    g_autofree char *tracearg = trace ?
+        g_strdup_printf("-trace %s ", trace) : g_strdup("");
 
     s = g_new(QTestState, 1);
 
@@ -282,14 +285,15 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
 
     qtest_add_abrt_handler(kill_qemu_hook_func, s);
 
-    command = g_strdup_printf("exec %s "
+    command = g_strdup_printf("exec %s %s"
                               "-qtest unix:%s "
                               "-qtest-log %s "
                               "-chardev socket,path=%s,id=char0 "
                               "-mon chardev=char0,mode=control "
                               "-display none "
                               "%s"
-                              " -accel qtest", qemu_binary, socket_path,
+                              " -accel qtest",
+                              qemu_binary, tracearg, socket_path,
                               getenv("QTEST_LOG") ? "/dev/fd/2" : "/dev/null",
                               qmp_socket_path,
                               extra_args ?: "");
-- 
2.34.1


Re: [PATCH 03/18] tests: support QTEST_TRACE env variable
Posted by Peter Xu 3 years, 11 months ago
On Wed, Mar 02, 2022 at 05:49:17PM +0000, Daniel P. Berrangé wrote:
> When debugging failing qtests it is useful to be able to turn on trace
> output to stderr. The QTEST_TRACE env variable contents get injected
> as a '-trace <str>' command line arg
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Reviewed-by: Peter Xu <peterx@redhat.com>

-- 
Peter Xu


Re: [PATCH 03/18] tests: support QTEST_TRACE env variable
Posted by Thomas Huth 3 years, 11 months ago
On 02/03/2022 18.49, Daniel P. Berrangé wrote:
> When debugging failing qtests it is useful to be able to turn on trace
> output to stderr. The QTEST_TRACE env variable contents get injected
> as a '-trace <str>' command line arg
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>   tests/qtest/libqtest.c | 8 ++++++--
>   1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
> index 41f4da4e54..a85f8a6d05 100644
> --- a/tests/qtest/libqtest.c
> +++ b/tests/qtest/libqtest.c
> @@ -260,6 +260,9 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
>       gchar *qmp_socket_path;
>       gchar *command;
>       const char *qemu_binary = qtest_qemu_binary();
> +    const char *trace = g_getenv("QTEST_TRACE");
> +    g_autofree char *tracearg = trace ?
> +        g_strdup_printf("-trace %s ", trace) : g_strdup("");
>   
>       s = g_new(QTestState, 1);
>   
> @@ -282,14 +285,15 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
>   
>       qtest_add_abrt_handler(kill_qemu_hook_func, s);
>   
> -    command = g_strdup_printf("exec %s "
> +    command = g_strdup_printf("exec %s %s"
>                                 "-qtest unix:%s "
>                                 "-qtest-log %s "
>                                 "-chardev socket,path=%s,id=char0 "
>                                 "-mon chardev=char0,mode=control "
>                                 "-display none "
>                                 "%s"
> -                              " -accel qtest", qemu_binary, socket_path,
> +                              " -accel qtest",
> +                              qemu_binary, tracearg, socket_path,
>                                 getenv("QTEST_LOG") ? "/dev/fd/2" : "/dev/null",
>                                 qmp_socket_path,
>                                 extra_args ?: "");

Reviewed-by: Thomas Huth <thuth@redhat.com>