authentication of ciphertexts (+ seed)
[oweals/gnunet.git] / src / testing / test_testing_topology.c
index f357862c5927b0b5850f117f0472617138175212..8e28a837262e2741f667218d785c34960248a744 100644 (file)
@@ -40,7 +40,7 @@
  */
 #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 500)
 
-#define SECONDS_PER_PEER_START 45
+#define SECONDS_PER_PEER_START 120
 
 #define DEFAULT_NUM_PEERS 4
 
@@ -200,8 +200,6 @@ finish_testing ()
               "Called finish testing, stopping daemons.\n");
 #endif
 
-  int count;
-  count = 0;
   pos = test_messages;
   while (pos != NULL)
     {
@@ -270,12 +268,39 @@ disconnect_cores (void *cls, const struct GNUNET_SCHEDULER_TaskContext * tc)
   total_server_connections -= 2;
 }
 
-void topology_cb (void *cls,
-             const struct GNUNET_PeerIdentity *first,
-             const struct GNUNET_PeerIdentity *second,
-             struct GNUNET_TIME_Relative latency,
-             uint32_t distance,
-             const char *emsg)
+static void stats_finished (void *cls, int result)
+{
+  GNUNET_SCHEDULER_add_now (sched, &finish_testing, NULL);
+}
+
+/**
+ * Callback function to process statistic values.
+ *
+ * @param cls closure
+ * @param peer the peer the statistics belong to
+ * @param subsystem name of subsystem that created the statistic
+ * @param name the name of the datum
+ * @param value the current value
+ * @param is_persistent GNUNET_YES if the value is persistent, GNUNET_NO if not
+ * @return GNUNET_OK to continue, GNUNET_SYSERR to abort iteration
+ */
+static int stats_print  (void *cls,
+                         const struct GNUNET_PeerIdentity *peer,
+                         const char *subsystem,
+                         const char *name,
+                         uint64_t value,
+                         int is_persistent)
+{
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s:%s:%s -- %llu\n", GNUNET_i2s(peer), subsystem, name, value);
+  return GNUNET_OK;
+}
+
+static void topology_cb (void *cls,
+                  const struct GNUNET_PeerIdentity *first,
+                  const struct GNUNET_PeerIdentity *second,
+                  struct GNUNET_TIME_Relative latency,
+                  uint32_t distance,
+                  const char *emsg)
 {
   FILE *outfile;
   outfile = cls;
@@ -295,7 +320,8 @@ void topology_cb (void *cls,
       {
         fprintf(outfile, "}\n");
         fclose(outfile);
-        GNUNET_SCHEDULER_add_now (sched, &finish_testing, NULL);
+        GNUNET_TESTING_get_statistics(pg, &stats_finished, &stats_print, NULL);
+        //GNUNET_SCHEDULER_add_now (sched, &finish_testing, NULL);
       }
     }
 }
@@ -348,6 +374,7 @@ process_mtype (void *cls,
       GNUNET_SCHEDULER_cancel (sched, die_task);
       GNUNET_asprintf(&dotOutFileNameFinished, "%s.dot", "final_topology");
       dotOutFileFinished = fopen (dotOutFileNameFinished, "w");
+      GNUNET_free(dotOutFileNameFinished);
       if (dotOutFileFinished != NULL)
       {
         fprintf(dotOutFileFinished, "strict graph G {\n");
@@ -972,6 +999,7 @@ run (void *cls,
                                            GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, SECONDS_PER_PEER_START * num_peers),
                                            &end_badly, "didn't generate all hostkeys within a reasonable amount of time!!!");
 
+  GNUNET_assert(num_peers > 0 && num_peers < (unsigned int)-1);
   pg = GNUNET_TESTING_daemons_start (sched, cfg,
                                      peers_left, GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, SECONDS_PER_PEER_START * num_peers), &hostkey_callback, NULL, &peers_started_callback, NULL,
                                      &topology_callback, NULL, NULL);
@@ -1017,6 +1045,7 @@ main (int argc, char *argv[])
   char *our_binary_name;
 
   binary_start_pos = rindex(argv[0], '/');
+  GNUNET_assert(binary_start_pos != NULL);
   topology_string = strstr (binary_start_pos,
                            "_topology");
   GNUNET_assert (topology_string != NULL);