summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEmmanuel Fleury <emmanuel.fleury@gmail.com>2022-05-28 00:06:00 +0200
committerEmmanuel Fleury <emmanuel.fleury@gmail.com>2022-06-08 15:22:11 +0200
commitafc8a8fcfe4589e7e5f4aa8d9714d10b7af10914 (patch)
tree1f7dd0021b84a6f7d00455a0ffa4f4c3436203bc /tests
parentb23f9372a1d4ea9e482c7928e72bec9c270ff333 (diff)
downloadglib-afc8a8fcfe4589e7e5f4aa8d9714d10b7af10914.tar.gz
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.
Diffstat (limited to 'tests')
-rw-r--r--tests/gobject/meson.build8
-rw-r--r--tests/gobject/timeloop-closure.c228
2 files changed, 1 insertions, 235 deletions
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 <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-
-#include <glib.h>
-#include <glib-object.h>
-
-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;
-}