commit 7b6b96f368b1314d2678b17a09d048cf03c4beaa
parent dc75dc81825dd866046b2c1c3a2dc3871c5a83a9
Author: Bart Polot <bart@net.in.tum.de>
Date: Sat, 22 Mar 2014 22:46:02 +0000
- start test if warmup "fails"
Diffstat:
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/mesh/gnunet-mesh-profiler.c b/src/mesh/gnunet-mesh-profiler.c
@@ -797,8 +797,12 @@ incoming_channel (void *cls, struct GNUNET_MESH_Channel *channel,
peers_warmup++;
if (peers_warmup < peers_total)
return NULL;
- test_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
- &start_test, NULL);
+ if (GNUNET_SCHEDULER_NO_TASK != test_task)
+ {
+ GNUNET_SCHEDULER_cancel (test_task);
+ test_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+ &start_test, NULL);
+ }
return NULL;
}
GNUNET_assert (peer == peers[n].incoming);
@@ -869,6 +873,7 @@ start_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
enum GNUNET_MESH_ChannelOption flags;
unsigned long i;
+ test_task = GNUNET_SCHEDULER_NO_TASK;
if ((GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason) != 0)
return;
@@ -969,7 +974,12 @@ peer_id_cb (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got all IDs, starting profiler\n");
if (do_warmup)
{
+ struct GNUNET_TIME_Relative delay;
+
warmup();
+ delay = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS,
+ 100 * 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,