qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 1/3] qtest: Enable creation of multiple qemu


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH v2 1/3] qtest: Enable creation of multiple qemu instances
Date: Thu, 20 Dec 2012 20:07:02 +0000

On Thu, Dec 20, 2012 at 5:14 PM, Jason Baron <address@hidden> wrote:
> 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

But mkdtemp() is not available on Win32.

> 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);

-EISDIR, rmdir() would be needed instead.

>      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
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]