diff options
| author | Steve Sistare <steven.sistare@oracle.com> | 2025-10-01 08:34:02 -0700 |
|---|---|---|
| committer | Fabiano Rosas <farosas@suse.de> | 2025-10-01 17:09:22 -0300 |
| commit | b4a21e457409f972abca2818d78cdf22d59544f5 (patch) | |
| tree | 93f9647697331f49245cd7b8e70d583c5a53a381 /tests/qtest/libqtest.c | |
| parent | 8e9f9981d6846515b2540439a80a0e16f93d4bd3 (diff) | |
| download | focaccia-qemu-b4a21e457409f972abca2818d78cdf22d59544f5.tar.gz focaccia-qemu-b4a21e457409f972abca2818d78cdf22d59544f5.zip | |
tests/qtest: qtest_qemu_args
Define an accessor that returns all the arguments used to exec QEMU. Collect the arguments that were passed to qtest_spawn_qemu, plus the trace arguments that were composed inside qtest_spawn_qemu, and move them to a new function qtest_qemu_args. This will be needed to test the cpr-exec migration mode. Signed-off-by: Steve Sistare <steven.sistare@oracle.com> Reviewed-by: Fabiano Rosas <farosas@suse.de> Link: https://lore.kernel.org/qemu-devel/1759332851-370353-11-git-send-email-steven.sistare@oracle.com Signed-off-by: Fabiano Rosas <farosas@suse.de>
Diffstat (limited to 'tests/qtest/libqtest.c')
| -rw-r--r-- | tests/qtest/libqtest.c | 54 |
1 files changed, 31 insertions, 23 deletions
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index 6f76be12a4..551bc8c1b8 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -409,20 +409,12 @@ static pid_t qtest_create_process(char *cmd) } #endif /* _WIN32 */ -static QTestState *G_GNUC_PRINTF(2, 3) qtest_spawn_qemu(const char *qemu_bin, - const char *fmt, ...) +static QTestState *qtest_spawn_qemu(const char *qemu_bin, const char *args) { - va_list ap; QTestState *s = g_new0(QTestState, 1); - const char *trace = g_getenv("QTEST_TRACE"); - g_autofree char *tracearg = trace ? - g_strdup_printf("-trace %s ", trace) : g_strdup(""); g_autoptr(GString) command = g_string_new(""); - va_start(ap, fmt); - g_string_append_printf(command, CMD_EXEC "%s %s", qemu_bin, tracearg); - g_string_append_vprintf(command, fmt, ap); - va_end(ap); + g_string_printf(command, CMD_EXEC "%s %s", qemu_bin, args); qtest_add_abrt_handler(kill_qemu_hook_func, s); @@ -466,6 +458,33 @@ static char *qtest_socket_path(const char *suffix) return g_strdup_printf("%s/qtest-%d.%s", g_get_tmp_dir(), getpid(), suffix); } +gchar *qtest_qemu_args(const char *extra_args) +{ + g_autofree gchar *socket_path = qtest_socket_path("sock"); + g_autofree gchar *qmp_socket_path = qtest_socket_path("qmp"); + const char *trace = g_getenv("QTEST_TRACE"); + g_autofree char *tracearg = trace ? g_strdup_printf("-trace %s ", trace) : + g_strdup(""); + gchar *args = g_strdup_printf( + "%s" + "-qtest unix:%s " + "-qtest-log %s " + "-chardev socket,path=%s,id=char0 " + "-mon chardev=char0,mode=control " + "-display none " + "-audio none " + "%s" + " -accel qtest", + + tracearg, + socket_path, + getenv("QTEST_LOG") ? DEV_STDERR : DEV_NULL, + qmp_socket_path, + extra_args ?: ""); + + return args; +} + static QTestState *qtest_init_internal(const char *qemu_bin, const char *extra_args, bool do_connect) @@ -474,6 +493,7 @@ static QTestState *qtest_init_internal(const char *qemu_bin, int sock, qmpsock, i; g_autofree gchar *socket_path = qtest_socket_path("sock"); g_autofree gchar *qmp_socket_path = qtest_socket_path("qmp"); + g_autofree gchar *args = qtest_qemu_args(extra_args); /* * It's possible that if an earlier test run crashed it might @@ -488,19 +508,7 @@ static QTestState *qtest_init_internal(const char *qemu_bin, sock = init_socket(socket_path); qmpsock = init_socket(qmp_socket_path); - s = qtest_spawn_qemu(qemu_bin, - "-qtest unix:%s " - "-qtest-log %s " - "-chardev socket,path=%s,id=char0 " - "-mon chardev=char0,mode=control " - "-display none " - "-audio none " - "%s" - " -accel qtest", - socket_path, - getenv("QTEST_LOG") ? DEV_STDERR : DEV_NULL, - qmp_socket_path, - extra_args ?: ""); + s = qtest_spawn_qemu(qemu_bin, args); qtest_client_set_rx_handler(s, qtest_client_socket_recv_line); qtest_client_set_tx_handler(s, qtest_client_socket_send); |