Implement a Full Domain Hash (FDH) for RSA signatures and blind signatures
[oweals/gnunet.git] / src / util / test_speedup.c
index 849505c24a919776603f793d81761aee3dbe3514..3c4a9bfdce14d342ec9da3dd9d08fafb2a2d51a4 100644 (file)
@@ -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
 
      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 */