[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 02/11] tests/qtest: Introduce qtest_init_with_env
From: |
Fabiano Rosas |
Subject: |
[PATCH v3 02/11] tests/qtest: Introduce qtest_init_with_env |
Date: |
Wed, 18 Oct 2023 11:07:27 -0300 |
Add a version of qtest_init() that takes an environment variable
containing the path of the QEMU binary. This allows tests to use more
than one QEMU binary.
If no variable is provided or the environment variable does not exist,
that is not an error. Fallback to using QTEST_QEMU_BINARY.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
tests/qtest/libqtest.c | 26 +++++++++++++++++++-------
tests/qtest/libqtest.h | 13 +++++++++++++
2 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index 03fa644663..9eebba8767 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -388,7 +388,8 @@ static pid_t qtest_create_process(char *cmd)
}
#endif /* _WIN32 */
-static QTestState *G_GNUC_PRINTF(1, 2) qtest_spawn_qemu(const char *fmt, ...)
+static QTestState *G_GNUC_PRINTF(2, 3) qtest_spawn_qemu(const char *qemu_bin,
+ const char *fmt, ...)
{
va_list ap;
QTestState *s = g_new0(QTestState, 1);
@@ -398,8 +399,7 @@ static QTestState *G_GNUC_PRINTF(1, 2)
qtest_spawn_qemu(const char *fmt, ...)
g_autoptr(GString) command = g_string_new("");
va_start(ap, fmt);
- g_string_append_printf(command, CMD_EXEC "%s %s",
- qtest_qemu_binary(NULL), tracearg);
+ g_string_append_printf(command, CMD_EXEC "%s %s", qemu_bin, tracearg);
g_string_append_vprintf(command, fmt, ap);
va_end(ap);
@@ -438,7 +438,8 @@ static QTestState *G_GNUC_PRINTF(1, 2)
qtest_spawn_qemu(const char *fmt, ...)
return s;
}
-QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
+static QTestState *qtest_init_internal(const char *qemu_bin,
+ const char *extra_args)
{
QTestState *s;
int sock, qmpsock, i;
@@ -463,7 +464,8 @@ QTestState *qtest_init_without_qmp_handshake(const char
*extra_args)
sock = init_socket(socket_path);
qmpsock = init_socket(qmp_socket_path);
- s = qtest_spawn_qemu("-qtest unix:%s "
+ s = qtest_spawn_qemu(qemu_bin,
+ "-qtest unix:%s "
"-qtest-log %s "
"-chardev socket,path=%s,id=char0 "
"-mon chardev=char0,mode=control "
@@ -516,9 +518,14 @@ QTestState *qtest_init_without_qmp_handshake(const char
*extra_args)
return s;
}
-QTestState *qtest_init(const char *extra_args)
+QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
{
- QTestState *s = qtest_init_without_qmp_handshake(extra_args);
+ return qtest_init_internal(qtest_qemu_binary(NULL), extra_args);
+}
+
+QTestState *qtest_init_with_env(const char *var, const char *extra_args)
+{
+ QTestState *s = qtest_init_internal(qtest_qemu_binary(var), extra_args);
QDict *greeting;
/* Read the QMP greeting and then do the handshake */
@@ -529,6 +536,11 @@ QTestState *qtest_init(const char *extra_args)
return s;
}
+QTestState *qtest_init(const char *extra_args)
+{
+ return qtest_init_with_env(NULL, extra_args);
+}
+
QTestState *qtest_vinitf(const char *fmt, va_list ap)
{
char *args = g_strdup_vprintf(fmt, ap);
diff --git a/tests/qtest/libqtest.h b/tests/qtest/libqtest.h
index 5fe3d13466..76fc195f1c 100644
--- a/tests/qtest/libqtest.h
+++ b/tests/qtest/libqtest.h
@@ -55,6 +55,19 @@ QTestState *qtest_vinitf(const char *fmt, va_list ap)
G_GNUC_PRINTF(1, 0);
*/
QTestState *qtest_init(const char *extra_args);
+/**
+ * qtest_init_with_env:
+ * @var: Environment variable from where to take the QEMU binary
+ * @extra_args: Other arguments to pass to QEMU. CAUTION: these
+ * arguments are subject to word splitting and shell evaluation.
+ *
+ * Like qtest_init(), but use a different environment variable for the
+ * QEMU binary.
+ *
+ * Returns: #QTestState instance.
+ */
+QTestState *qtest_init_with_env(const char *var, const char *extra_args);
+
/**
* qtest_init_without_qmp_handshake:
* @extra_args: other arguments to pass to QEMU. CAUTION: these
--
2.35.3
- [PATCH v3 00/11] tests/migration-test: Allow testing older machine types, Fabiano Rosas, 2023/10/18
- [PATCH v3 01/11] tests/qtest: Allow qtest_qemu_binary to use a custom environment variable, Fabiano Rosas, 2023/10/18
- [PATCH v3 02/11] tests/qtest: Introduce qtest_init_with_env,
Fabiano Rosas <=
- [PATCH v3 05/11] tests/qtest: Introduce qtest_resolve_machine_alias, Fabiano Rosas, 2023/10/18
- [PATCH v3 06/11] tests/qtest/migration: Introduce find_common_machine_version, Fabiano Rosas, 2023/10/18
- [PATCH v3 07/11] tests/qtest/migration: Define a machine for all architectures, Fabiano Rosas, 2023/10/18
- [PATCH v3 08/11] tests/qtest/migration: Specify the geometry of the bootsector, Fabiano Rosas, 2023/10/18
- [PATCH v3 11/11] tests/qtest: Don't print messages from query instances, Fabiano Rosas, 2023/10/18
- [PATCH v3 03/11] tests/qtest: Allow qtest_get_machines to use an alternate QEMU binary, Fabiano Rosas, 2023/10/18
- [PATCH v3 04/11] tests/qtest: Introduce qtest_has_machine_with_env, Fabiano Rosas, 2023/10/18
- [PATCH v3 09/11] tests/qtest/migration: Set q35 as the default machine for x86_86, Fabiano Rosas, 2023/10/18
- [PATCH v3 10/11] tests/qtest/migration: Support more than one QEMU binary, Fabiano Rosas, 2023/10/18