From afc8a8fcfe4589e7e5f4aa8d9714d10b7af10914 Mon Sep 17 00:00:00 2001 From: Emmanuel Fleury Date: Sat, 28 May 2022 00:06:00 +0200 Subject: Remove tests/gobject/timeloop-closure.c performance test This test has been here for long but is no more useful and can be removed safely. --- tests/gobject/meson.build | 8 +- tests/gobject/timeloop-closure.c | 228 --------------------------------------- 2 files changed, 1 insertion(+), 235 deletions(-) delete mode 100644 tests/gobject/timeloop-closure.c diff --git a/tests/gobject/meson.build b/tests/gobject/meson.build index 13923cdf3..eaf4f6cde 100644 --- a/tests/gobject/meson.build +++ b/tests/gobject/meson.build @@ -1,12 +1,6 @@ gobject_tests = { } -if host_system != 'windows' - gobject_tests += { - 'timeloop-closure' : {}, - } -endif - common_c_args = test_cargs + ['-DGLIB_DISABLE_DEPRECATION_WARNINGS'] common_deps = [libm, thread_dep, libglib_dep, libgobject_dep] @@ -41,4 +35,4 @@ foreach test_name, extra_args : gobject_tests timeout = suite.contains('slow') ? test_timeout_slow : test_timeout # FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset test(test_name, exe, env : test_env, timeout : timeout, suite : suite) -endforeach \ No newline at end of file +endforeach diff --git a/tests/gobject/timeloop-closure.c b/tests/gobject/timeloop-closure.c deleted file mode 100644 index 51dd6f105..000000000 --- a/tests/gobject/timeloop-closure.c +++ /dev/null @@ -1,228 +0,0 @@ -#undef G_DISABLE_ASSERT -#undef G_LOG_DOMAIN - -#include -#include -#include -#include -#include -#include - -#include -#include - -static int n_children = 3; -static int n_active_children; -static int n_iters = 10000; -static GMainLoop *loop; - -static void -io_pipe (GIOChannel **channels) -{ - int fds[2]; - - if (pipe(fds) < 0) - { - int errsv = errno; - fprintf (stderr, "Cannot create pipe %s\n", g_strerror (errsv)); - exit (1); - } - - channels[0] = g_io_channel_unix_new (fds[0]); - channels[1] = g_io_channel_unix_new (fds[1]); -} - -static gboolean -read_all (GIOChannel *channel, char *buf, gsize len) -{ - gsize bytes_read = 0; - gsize count; - GIOError err; - - while (bytes_read < len) - { - err = g_io_channel_read (channel, buf + bytes_read, len - bytes_read, &count); - if (err) - { - if (err != G_IO_ERROR_AGAIN) - return FALSE; - } - else if (count == 0) - return FALSE; - - bytes_read += count; - } - - return TRUE; -} - -static gboolean -write_all (GIOChannel *channel, char *buf, gsize len) -{ - gsize bytes_written = 0; - gsize count; - GIOError err; - - while (bytes_written < len) - { - err = g_io_channel_write (channel, buf + bytes_written, len - bytes_written, &count); - if (err && err != G_IO_ERROR_AGAIN) - return FALSE; - - bytes_written += count; - } - - return TRUE; -} - -static void -run_child (GIOChannel *in_channel, GIOChannel *out_channel) -{ - int i; - int val = 1; - GTimer *timer = g_timer_new(); - - for (i = 0; i < n_iters; i++) - { - write_all (out_channel, (char *)&val, sizeof (val)); - read_all (in_channel, (char *)&val, sizeof (val)); - } - - val = 0; - write_all (out_channel, (char *)&val, sizeof (val)); - - val = g_timer_elapsed (timer, NULL) * 1000; - - write_all (out_channel, (char *)&val, sizeof (val)); - g_timer_destroy (timer); - - exit (0); -} - -static gboolean -input_callback (GIOChannel *source, - GIOCondition condition, - gpointer data) -{ - int val; - GIOChannel *dest = (GIOChannel *)data; - - if (!read_all (source, (char *)&val, sizeof(val))) - { - fprintf (stderr, "Unexpected EOF\n"); - exit (1); - } - - if (val) - { - write_all (dest, (char *)&val, sizeof(val)); - - return TRUE; - } - else - { - g_io_channel_close (source); - g_io_channel_close (dest); - - n_active_children--; - if (n_active_children == 0) - g_main_loop_quit (loop); - - return FALSE; - } -} - -static void -create_child (void) -{ - int pid, errsv; - GIOChannel *in_channels[2]; - GIOChannel *out_channels[2]; - GSource *source; - - io_pipe (in_channels); - io_pipe (out_channels); - - pid = fork (); - errsv = errno; - - if (pid > 0) /* Parent */ - { - g_io_channel_close (in_channels[0]); - g_io_channel_close (out_channels[1]); - - source = g_io_create_watch (out_channels[0], G_IO_IN | G_IO_HUP); - g_source_set_closure (source, - g_cclosure_new (G_CALLBACK (input_callback), in_channels[1], - (GClosureNotify)g_io_channel_unref)); - g_source_attach (source, NULL); - g_source_unref (source); - - g_io_channel_unref (in_channels[0]); - g_io_channel_unref (out_channels[0]); - g_io_channel_unref (out_channels[1]); - - } - else if (pid == 0) /* Child */ - { - g_io_channel_close (in_channels[1]); - g_io_channel_close (out_channels[0]); - - setsid (); - - run_child (in_channels[0], out_channels[1]); - } - else /* Error */ - { - fprintf (stderr, "Cannot fork: %s\n", g_strerror (errsv)); - exit (1); - } -} - -static double -difftimeval (struct timeval *old, struct timeval *new) -{ - return - (new->tv_sec - old->tv_sec) * 1000. + (new->tv_usec - old->tv_usec) / 1000; -} - -int -main (int argc, char **argv) -{ - int i; - struct rusage old_usage; - struct rusage new_usage; - - if (argc > 1) - n_children = atoi(argv[1]); - - if (argc > 2) - n_iters = atoi(argv[2]); - - printf ("Children: %d Iters: %d\n", n_children, n_iters); - - n_active_children = n_children; - for (i = 0; i < n_children; i++) - create_child (); - - getrusage (RUSAGE_SELF, &old_usage); - loop = g_main_loop_new (NULL, FALSE); - g_main_loop_run (loop); - getrusage (RUSAGE_SELF, &new_usage); - - printf ("Elapsed user: %g\n", - difftimeval (&old_usage.ru_utime, &new_usage.ru_utime)); - printf ("Elapsed system: %g\n", - difftimeval (&old_usage.ru_stime, &new_usage.ru_stime)); - printf ("Elapsed total: %g\n", - difftimeval (&old_usage.ru_utime, &new_usage.ru_utime) + - difftimeval (&old_usage.ru_stime, &new_usage.ru_stime)); - printf ("total / iteration: %g\n", - (difftimeval (&old_usage.ru_utime, &new_usage.ru_utime) + - difftimeval (&old_usage.ru_stime, &new_usage.ru_stime)) / - (n_iters * n_children)); - - g_main_loop_unref (loop); - - return 0; -} -- cgit v1.2.1