- fix peer to notify
[oweals/gnunet.git] / src / mesh / gnunet-mesh-profiler.c
index dbbff157b1f054d84b0ff2096090230ead0f9d22..5e2b08b28ca2760a4d352dc7aa675a7025498683 100644 (file)
@@ -232,11 +232,30 @@ static unsigned int current_round;
  */
 static int do_warmup;
 
+/**
+ * Warmup progress.
+ */
+static unsigned int peers_warmup;
+
 /**
  * Flag to notify callbacks not to generate any new traffic anymore.
  */
 static int test_finished;
 
+
+/**
+ * START THE TEST ITSELF, AS WE ARE CONNECTED TO THE MESH SERVICES.
+ *
+ * Testcase continues when the root receives confirmation of connected peers,
+ * on callback funtion ch.
+ *
+ * @param cls Closure (unsued).
+ * @param tc Task Context.
+ */
+static void
+start_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
+
+
 /**
  * Calculate a random delay.
  *
@@ -774,8 +793,13 @@ incoming_channel (void *cls, struct GNUNET_MESH_Channel *channel,
   GNUNET_assert (NULL != peer);
   if (NULL == peers[n].incoming)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "WARMUP %u <= %u\n",
-                n, get_index (peer), channel);
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "WARMUP %3u: %u <= %u\n",
+                peers_warmup, n, get_index (peer));
+    peers_warmup++;
+    if (peers_warmup < peers_total)
+      return NULL;
+    test_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+                                              &start_test, NULL);
     return NULL;
   }
   GNUNET_assert (peer == peers[n].incoming);
@@ -923,7 +947,6 @@ peer_id_cb (void *cls,
        const char *emsg)
 {
   long n = (long) cls;
-  struct GNUNET_TIME_Relative delay;
 
   if (NULL == pinfo || NULL != emsg)
   {
@@ -946,10 +969,12 @@ peer_id_cb (void *cls,
     return;
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got all IDs, starting profiler\n");
   if (do_warmup)
+  {
     warmup();
-  delay = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS,
-                                         150 * peers_total);
-  test_task = GNUNET_SCHEDULER_add_delayed (delay, &start_test, NULL);
+    return; /* start_test from incoming_channel */
+  }
+  test_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+                                            &start_test, NULL);
 }
 
 /**