naming
[oweals/gnunet.git] / src / dht / test_dht_multipeer.c
index 2fc439ecb241d2dbc8375c0a62ed849eb8d25d4b..296a19bcacd282270bfa9359df7298c16b72fcfe 100644 (file)
@@ -28,7 +28,7 @@
 #include "gnunet_dht_service.h"
 
 /* DEFINES */
-#define VERBOSE GNUNET_NO
+#define VERBOSE GNUNET_EXTRA_LOGGING
 
 /* Timeout for entire testcase */
 #define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MINUTES, 30)
@@ -250,20 +250,45 @@ struct StatValues
 {
   const char *subsystem;
   const char *name;
+  unsigned long long total;
 };
 
 /**
  * Statistics we print out.
  */
 static struct StatValues stats[] = {
-  {"core", "# bytes decrypted"},
-  {"core", "# bytes encrypted"},
-  {"core", "# discarded CORE_SEND requests"},
-  {"core", "# discarded lower priority CORE_SEND requests"},
-  {"transport", "# bytes received via TCP"},
-  {"transport", "# bytes transmitted via TCP"},
-  {"dht", "# FIXME"},
-  {NULL, NULL}
+  {"core", "# bytes decrypted", 0},
+  {"core", "# bytes encrypted", 0},
+  {"core", "# send requests dropped (disconnected)", 0},
+  {"core", "# transmissions delayed due to corking", 0},
+  {"core", "# messages discarded (expired prior to transmission)", 0},
+  {"core", "# messages discarded (disconnected)", 0},
+  {"core", "# discarded CORE_SEND requests", 0},
+  {"core", "# discarded lower priority CORE_SEND requests", 0},
+  {"transport", "# bytes received via TCP", 0},
+  {"transport", "# bytes transmitted via TCP", 0},
+  {"dht", "# PUT messages queued for transmission", 0},
+  {"dht", "# P2P PUT requests received", 0},
+  {"dht", "# GET messages queued for transmission", 0},
+  {"dht", "# P2P GET requests received", 0},
+  {"dht", "# RESULT messages queued for transmission", 0},
+  {"dht", "# P2P RESULTS received", 0},
+  {"dht", "# Queued messages discarded (peer disconnected)", 0},
+  {"dht", "# Peers excluded from routing due to Bloomfilter", 0},
+  {"dht", "# Peer selection failed", 0},
+  {"dht", "# FIND PEER requests ignored due to Bloomfilter", 0},
+  {"dht", "# FIND PEER requests ignored due to lack of HELLO", 0},
+  {"dht", "# P2P FIND PEER requests processed", 0},
+  {"dht", "# P2P GET requests ONLY routed", 0},
+  {"dht", "# Preference updates given to core", 0},
+  {"dht", "# REPLIES ignored for CLIENTS (no match)", 0},
+  {"dht", "# GET requests from clients injected", 0},
+  {"dht", "# GET requests received from clients", 0},
+  {"dht", "# GET STOP requests received from clients", 0},
+  {"dht", "# ITEMS stored in datacache", 0},
+  {"dht", "# Good RESULTS found in datacache", 0},
+  {"dht", "# GET requests given to datacache", 0},
+  {NULL, NULL, 0}
 };
 
 
@@ -283,6 +308,7 @@ print_stat (void *cls, const char *subsystem, const char *name, uint64_t value,
 {
   struct StatMaster *sm = cls;
 
+  stats[sm->value].total += value;
   fprintf (stderr, "Peer %2u: %12s/%50s = %12llu\n", sm->daemon, subsystem,
            name, (unsigned long long) value);
   return GNUNET_OK;
@@ -317,7 +343,9 @@ static void
 stat_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct StatMaster *sm = cls;
+  unsigned int i;
 
+  die_task = GNUNET_SCHEDULER_NO_TASK;
   if (stats[sm->value].name != NULL)
   {
     GNUNET_STATISTICS_get (sm->stat,
@@ -336,14 +364,21 @@ stat_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   if (sm->daemon == num_peers)
   {
     GNUNET_free (sm);
-    GNUNET_SCHEDULER_add_now (&do_stop, NULL);
+    i = 0;
+    while (stats[i].name != NULL)
+      {
+       fprintf (stderr, "Total  : %12s/%50s = %12llu\n", stats[i].subsystem,
+                stats[i].name, (unsigned long long) stats[i].total);
+       i++;
+      }
+    die_task = GNUNET_SCHEDULER_add_now (&do_stop, NULL);
     return;
   }
   sm->stat =
       GNUNET_STATISTICS_create ("<driver>",
                                 GNUNET_TESTING_daemon_get (pg, 
                                                           sm->daemon)->cfg);
-  GNUNET_SCHEDULER_add_now (&stat_run, sm);
+  die_task = GNUNET_SCHEDULER_add_now (&stat_run, sm);
 }
 
 
@@ -384,13 +419,12 @@ finish_testing (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
                                 test_get);
     GNUNET_free (test_get);
   }
-  ok = 0; 
   sm = GNUNET_malloc (sizeof (struct StatMaster));
   sm->stat =
     GNUNET_STATISTICS_create ("<driver>",
                              GNUNET_TESTING_daemon_get (pg, 
                                                         sm->daemon)->cfg);
-  GNUNET_SCHEDULER_add_now (&stat_run, sm);
+  die_task = GNUNET_SCHEDULER_add_now (&stat_run, sm);
 }
 
 
@@ -474,21 +508,25 @@ get_stop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
                               all_gets_tail,
                               test_get);
   GNUNET_free (test_get);
-
-  if ((gets_failed > 0) && (outstanding_gets == 0))       /* Had some failures */
+  if ((gets_failed > 10) && (outstanding_gets == 0))       
   {
+    /* Had more than 10% failures */
     fprintf (stderr,
             "%llu gets succeeded, %llu gets failed!\n",
             gets_completed, gets_failed);
     GNUNET_SCHEDULER_cancel (die_task);
-    die_task = GNUNET_SCHEDULER_add_now (&end_badly, "not all gets succeeded");
+    ok = 1; 
+    die_task = GNUNET_SCHEDULER_add_now (&finish_testing, "not all gets succeeded");
     return;
   }
-
-  if ( (gets_completed == num_peers * num_peers) && 
+  if ( (gets_completed + gets_failed == num_peers * num_peers) && 
        (outstanding_gets == 0) )  /* All gets successful */
   {
+    fprintf (stderr,
+            "%llu gets succeeded, %llu gets failed!\n",
+            gets_completed, gets_failed);
     GNUNET_SCHEDULER_cancel (die_task);
+    ok = 0; 
     die_task = GNUNET_SCHEDULER_add_now (&finish_testing, NULL);
   }
 }