[Spice-devel] [PATCH spice-server 28/33] test-display-base: Port to Windows
Marc-André Lureau
marcandre.lureau at gmail.com
Sat Dec 22 10:18:38 UTC 2018
On Fri, Dec 21, 2018 at 4:04 PM Frediano Ziglio <fziglio at redhat.com> wrote:
>
> Use GLib function to launch and wait process exit.
>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau at redhat.com>
> ---
> server/tests/regression-test.py | 4 ++--
> server/tests/test-display-base.c | 37 +++++++++++++++-----------------
> 2 files changed, 19 insertions(+), 22 deletions(-)
>
> diff --git a/server/tests/regression-test.py b/server/tests/regression-test.py
> index 5aad1a7b..81eaecf1 100755
> --- a/server/tests/regression-test.py
> +++ b/server/tests/regression-test.py
> @@ -1,7 +1,7 @@
> #!/usr/bin/python
> from subprocess import PIPE, Popen
> -import Image
> -import ImageChops
> +from PIL import Image
> +from PIL import ImageChops
>
>
> def spicy_screenshot():
> diff --git a/server/tests/test-display-base.c b/server/tests/test-display-base.c
> index 868521bc..ecf40e4a 100644
> --- a/server/tests/test-display-base.c
> +++ b/server/tests/test-display-base.c
> @@ -91,17 +91,19 @@ static int has_automated_tests = 0; //automated test flag
> // between multiple threads so use a mutex
> static pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER;
>
> -__attribute__((noreturn))
> -static void sigchld_handler(SPICE_GNUC_UNUSED int signal_num) // wait for the child process and exit
> +// wait for the child process and exit
> +static void child_exited(GPid pid, gint status, gpointer user_data)
> {
> - int status;
> - wait(&status);
> + g_spawn_close_pid(pid);
> exit(0);
> }
>
> static void regression_test(void)
> {
> - pid_t pid;
> + GPid pid;
> + GError *error = NULL;
> + gboolean retval;
> + gchar **argv;
>
> if (--rects != 0) {
> return;
> @@ -113,17 +115,17 @@ static void regression_test(void)
> return;
> }
>
> - pid = fork();
> - if (pid == 0) {
> - char buf[PATH_MAX];
> - char *argv[] = { NULL };
> - char *envp[] = {buf, NULL};
> + argv = g_strsplit("./regression-test.py", " ", -1);
> + retval = g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH|G_SPAWN_DO_NOT_REAP_CHILD,
> + NULL, NULL, &pid, &error);
> + g_strfreev(argv);
> + g_assert(retval);
>
> - snprintf(buf, sizeof(buf), "PATH=%s", getenv("PATH"));
> - execve("regression-test.py", argv, envp);
> - } else if (pid > 0) {
> - return;
> - }
> + GSource *source = g_child_watch_source_new(pid);
> + g_source_set_callback(source, (GSourceFunc)(void*)child_exited, NULL, NULL);
> + guint id = g_source_attach(source, basic_event_loop_get_context());
> + g_assert(id != 0);
> + g_source_unref(source);
> }
>
> static void set_cmd(QXLCommandExt *ext, uint32_t type, QXLPHYSICAL data)
> @@ -969,11 +971,6 @@ void test_destroy(Test *test)
>
> static void init_automated(void)
> {
> - struct sigaction sa;
> -
> - memset(&sa, 0, sizeof sa);
> - sa.sa_handler = &sigchld_handler;
> - sigaction(SIGCHLD, &sa, NULL);
> }
>
> static __attribute__((noreturn))
> --
> 2.17.2
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
--
Marc-André Lureau
More information about the Spice-devel
mailing list