X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_speedup.c;h=3c4a9bfdce14d342ec9da3dd9d08fafb2a2d51a4;hb=60de5f48cbfc3868570284e91415ca7e06c390e1;hp=849505c24a919776603f793d81761aee3dbe3514;hpb=8f654f30c3c4987c9ca1b564d6e6f2d75ae24862;p=oweals%2Fgnunet.git diff --git a/src/util/test_speedup.c b/src/util/test_speedup.c index 849505c24..3c4a9bfdc 100644 --- a/src/util/test_speedup.c +++ b/src/util/test_speedup.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2001, 2002, 2003, 2004, 2006, 2009 Christian Grothoff (and other contributing authors) + Copyright (C) 2011-2013 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -14,49 +14,64 @@ You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** * @file util/test_speedup.c * @brief testcase for speedup.c */ #include "platform.h" -#include "gnunet_common.h" -#include "gnunet_program_lib.h" -#include "gnunet_time_lib.h" -#include "gnunet_strings_lib.h" - - -#define VERBOSE GNUNET_NO +#include "gnunet_util_lib.h" +/** + * Start time of the testcase + */ static struct GNUNET_TIME_Absolute start; + +/** + * End-time of the testcase (affected by speed-up) + */ static struct GNUNET_TIME_Absolute end; -static int cycles; +/** + * Number of cycles we have spent in 'run'. + */ +static unsigned int cycles; + + +/** + * Main task that is scheduled with the speed-up. + * + * @param cls NULL + * @param tc scheduler context, unused + */ static void run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - - cycles ++; - printf ("..%u", cycles); - fflush(stdout); + cycles++; + fprintf (stderr, "..%u", cycles); if (cycles <= 5) - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &run, NULL); - else { - end = GNUNET_TIME_absolute_get(); - printf ("\n"); - fflush(stdout); + GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &run, NULL); + return; } + end = GNUNET_TIME_absolute_get(); + fprintf (stderr, "\n"); + fflush(stdout); } -void check (void *cls, char *const *args, - const char *cfgfile, - const struct GNUNET_CONFIGURATION_Handle * - cfg) + +/** + * + */ +static void +check (void *cls, char *const *args, + const char *cfgfile, + const struct GNUNET_CONFIGURATION_Handle * + cfg) { - printf ("0"); + fprintf (stderr, "0"); fflush(stdout); GNUNET_SCHEDULER_add_now(&run, NULL); } @@ -65,37 +80,42 @@ void check (void *cls, char *const *args, int main (int argc, char *argv[]) { - time_t start_real; - time_t end_real; - struct GNUNET_TIME_Relative delta; - static char *const argvn[] = { "test-speedup", - "-c", - "test_speedup_data.conf", -#if VERBOSE - "-L", "DEBUG", -#endif + "-c", "test_speedup_data.conf", NULL }; - start_real = time (NULL); - start = GNUNET_TIME_absolute_get(); static struct GNUNET_GETOPT_CommandLineOption options[] = { GNUNET_GETOPT_OPTION_END }; + time_t start_real; + time_t end_real; + struct GNUNET_TIME_Relative delta; + start_real = time (NULL); + start = GNUNET_TIME_absolute_get(); GNUNET_PROGRAM_run ((sizeof (argvn) / sizeof (char *)) - 1, argvn, "test-speedup", "nohelp", options, &check, NULL); end_real = time (NULL); - delta = GNUNET_TIME_absolute_get_difference(start, end); - - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Execution time in GNUnet time: %llu ms\n", delta.rel_value); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Execution time in system time: %llu ms\n", (end_real - start_real) * 1000); + delta = GNUNET_TIME_absolute_get_difference (start, end); - if (delta.rel_value > ((end_real - start_real) * 1500)) + if (delta.rel_value_us > ((end_real - start_real) * 1500LL * 1000LL)) + { + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Execution time in GNUnet time: %s\n", + GNUNET_STRINGS_relative_time_to_string (delta, GNUNET_YES)); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Execution time in system time: %llu ms\n", + (unsigned long long) ((end_real - start_real) * 1000LL)); return 0; - else - return 1; + } + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Execution time in GNUnet time: %s\n", + GNUNET_STRINGS_relative_time_to_string (delta, GNUNET_YES)); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Execution time in system time: %llu ms\n", + (unsigned long long) ((end_real - start_real) * 1000LL)); + return 1; } /* end of test_speedup.c */