[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 1/3] qtest: Enable creation of multiple qemu inst
From: |
Jason Baron |
Subject: |
[Qemu-devel] [PATCH v2 1/3] qtest: Enable creation of multiple qemu instances |
Date: |
Thu, 20 Dec 2012 12:14:49 -0500 |
From: Jason Baron <address@hidden>
Currently, the qtest harness can only spawn 1 qemu instance at a time because
the parent pid is used to create the socket files. Use 'mkdtemp()' in
combination with the parent pid to avoid conflicts.
Signed-off-by: Jason Baron <address@hidden>
---
tests/libqtest.c | 15 +++++++++------
1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/tests/libqtest.c b/tests/libqtest.c
index 71b84c1..57665c9 100644
--- a/tests/libqtest.c
+++ b/tests/libqtest.c
@@ -41,6 +41,7 @@ struct QTestState
GString *rx;
gchar *pid_file;
char *socket_path, *qmp_socket_path;
+ char *tmp_dir;
};
#define g_assert_no_errno(ret) do { \
@@ -105,7 +106,6 @@ QTestState *qtest_init(const char *extra_args)
{
QTestState *s;
int sock, qmpsock, ret, i;
- gchar *pid_file;
gchar *command;
const char *qemu_binary;
pid_t pid;
@@ -115,9 +115,11 @@ QTestState *qtest_init(const char *extra_args)
s = g_malloc(sizeof(*s));
- s->socket_path = g_strdup_printf("/tmp/qtest-%d.sock", getpid());
- s->qmp_socket_path = g_strdup_printf("/tmp/qtest-%d.qmp", getpid());
- pid_file = g_strdup_printf("/tmp/qtest-%d.pid", getpid());
+ s->tmp_dir = g_strdup_printf("/tmp/qtest-%d-XXXXXX", getpid());
+ g_assert(mkdtemp(s->tmp_dir) != NULL);
+ s->socket_path = g_strdup_printf("%s/%s", s->tmp_dir, "sock");
+ s->qmp_socket_path = g_strdup_printf("%s/%s", s->tmp_dir, "qmp");
+ s->pid_file = g_strdup_printf("%s/%s", s->tmp_dir, "pid");
sock = init_socket(s->socket_path);
qmpsock = init_socket(s->qmp_socket_path);
@@ -131,7 +133,7 @@ QTestState *qtest_init(const char *extra_args)
"-pidfile %s "
"-machine accel=qtest "
"%s", qemu_binary, s->socket_path,
- s->qmp_socket_path, pid_file,
+ s->qmp_socket_path, s->pid_file,
extra_args ?: "");
ret = system(command);
@@ -143,7 +145,6 @@ QTestState *qtest_init(const char *extra_args)
s->qmp_fd = socket_accept(qmpsock);
s->rx = g_string_new("");
- s->pid_file = pid_file;
for (i = 0; i < MAX_IRQ; i++) {
s->irq_level[i] = false;
}
@@ -172,9 +173,11 @@ void qtest_quit(QTestState *s)
unlink(s->pid_file);
unlink(s->socket_path);
unlink(s->qmp_socket_path);
+ unlink(s->tmp_dir);
g_free(s->pid_file);
g_free(s->socket_path);
g_free(s->qmp_socket_path);
+ g_free(s->tmp_dir);
}
static void socket_sendf(int fd, const char *fmt, va_list ap)
--
1.7.1