aboutsummaryrefslogtreecommitdiff
path: root/src/dht/gnunet_dht_profiler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dht/gnunet_dht_profiler.c')
-rw-r--r--src/dht/gnunet_dht_profiler.c99
1 files changed, 46 insertions, 53 deletions
diff --git a/src/dht/gnunet_dht_profiler.c b/src/dht/gnunet_dht_profiler.c
index f0c4ec7be..03ea62152 100644
--- a/src/dht/gnunet_dht_profiler.c
+++ b/src/dht/gnunet_dht_profiler.c
@@ -461,9 +461,21 @@ do_shutdown (void *cls)
461 a_ctx = NULL; 461 a_ctx = NULL;
462 } 462 }
463 //FIXME: Should we collect stats only for put/get not for other messages. 463 //FIXME: Should we collect stats only for put/get not for other messages.
464 if(NULL != bandwidth_stats_op) 464 if (NULL != bandwidth_stats_op)
465 {
465 GNUNET_TESTBED_operation_done (bandwidth_stats_op); 466 GNUNET_TESTBED_operation_done (bandwidth_stats_op);
466 bandwidth_stats_op = NULL; 467 bandwidth_stats_op = NULL;
468 }
469 if (NULL != successor_stats_op)
470 {
471 GNUNET_TESTBED_operation_done (successor_stats_op);
472 successor_stats_op = NULL;
473 }
474 if (NULL != successor_stats_task)
475 {
476 GNUNET_SCHEDULER_cancel (successor_stats_task);
477 successor_stats_task = NULL;
478 }
467 GNUNET_free_non_null (a_ac); 479 GNUNET_free_non_null (a_ac);
468} 480}
469 481
@@ -687,11 +699,7 @@ teardown_dht_connection (void *cls)
687{ 699{
688 struct Context *ctx = cls; 700 struct Context *ctx = cls;
689 struct GNUNET_TESTBED_Operation *op; 701 struct GNUNET_TESTBED_Operation *op;
690 const struct GNUNET_SCHEDULER_TaskContext *tc;
691 702
692 tc = GNUNET_SCHEDULER_get_task_context ();
693 if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason))
694 return;
695 GNUNET_assert (NULL != ctx); 703 GNUNET_assert (NULL != ctx);
696 GNUNET_assert (NULL != (op = ctx->op)); 704 GNUNET_assert (NULL != (op = ctx->op));
697 ctx->op = NULL; 705 ctx->op = NULL;
@@ -1070,7 +1078,7 @@ successor_stats_cont (void *cls,
1070 successor_stats_op = NULL; 1078 successor_stats_op = NULL;
1071 if (0 == max_searches) 1079 if (0 == max_searches)
1072 { 1080 {
1073 start_func(); 1081 start_func ();
1074 return; 1082 return;
1075 } 1083 }
1076 1084
@@ -1108,39 +1116,27 @@ successor_stats_cont (void *cls,
1108 GNUNET_NO); 1116 GNUNET_NO);
1109 if ((start_val == val) && (count == num_peers)) 1117 if ((start_val == val) && (count == num_peers))
1110 { 1118 {
1111 DEBUG("CIRCLE COMPLETED after %u tries", tries); 1119 DEBUG ("CIRCLE COMPLETED after %u tries", tries);
1112 if(NULL == successor_stats_task) 1120 if(NULL == successor_stats_task)
1113 { 1121 {
1114 start_func(); 1122 start_func();
1115 } 1123 }
1116 return; 1124 return;
1117 } 1125 }
1118 else 1126 if (max_searches == ++tries)
1119 { 1127 {
1120 if (max_searches == ++tries) 1128 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1121 { 1129 "Maximum tries %u exceeded while checking successor TOTAL TRIES %u"
1122 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1130 " circle formation. Exiting\n",
1123 "Maximum tries %u exceeded while checking successor TOTAL TRIES %u" 1131 max_searches,tries);
1124 " circle formation. Exiting\n", 1132 start_func();
1125 max_searches,tries); 1133 return;
1126 if (NULL != successor_stats_task)
1127 {
1128 successor_stats_task = NULL;
1129 }
1130 if(NULL == successor_stats_task)
1131 {
1132 start_func();
1133 }
1134
1135 return;
1136 }
1137 else
1138 {
1139 flag = 0;
1140 successor_stats_task = GNUNET_SCHEDULER_add_delayed (delay_stats,
1141 &collect_stats, cls);
1142 }
1143 } 1134 }
1135 flag = 0;
1136 successor_stats_task
1137 = GNUNET_SCHEDULER_add_delayed (delay_stats,
1138 &collect_stats,
1139 cls);
1144} 1140}
1145 1141
1146 1142
@@ -1214,26 +1210,21 @@ successor_stats_iterator (void *cls,
1214static void 1210static void
1215collect_stats (void *cls) 1211collect_stats (void *cls)
1216{ 1212{
1217 const struct GNUNET_SCHEDULER_TaskContext *tc; 1213 successor_stats_task = NULL;
1218
1219 tc = GNUNET_SCHEDULER_get_task_context ();
1220 if ((GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason) != 0)
1221 return;
1222
1223 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1214 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1224 "Start collecting statistics...\n"); 1215 "Start collecting statistics...\n");
1225 GNUNET_assert(NULL != testbed_handles); 1216 GNUNET_assert(NULL != testbed_handles);
1226 1217
1227 if (0 != max_searches) 1218 if (0 != max_searches)
1228 successor_peer_hashmap = GNUNET_CONTAINER_multihashmap_create (num_peers, 1219 successor_peer_hashmap
1229 GNUNET_NO); 1220 = GNUNET_CONTAINER_multihashmap_create (num_peers,
1230 successor_stats_op = 1221 GNUNET_NO);
1231 GNUNET_TESTBED_get_statistics (num_peers, testbed_handles, 1222 successor_stats_op
1232 "dht", NULL, 1223 = GNUNET_TESTBED_get_statistics (num_peers, testbed_handles,
1233 successor_stats_iterator, 1224 "dht", NULL,
1234 successor_stats_cont, cls); 1225 successor_stats_iterator,
1235 1226 successor_stats_cont, cls);
1236 GNUNET_assert(NULL != successor_stats_op); 1227 GNUNET_assert (NULL != successor_stats_op);
1237} 1228}
1238 1229
1239 1230
@@ -1265,9 +1256,10 @@ service_started (void *cls,
1265 collect_stat_cls->service_connect_ctx = cls; 1256 collect_stat_cls->service_connect_ctx = cls;
1266 collect_stat_cls->op = op; 1257 collect_stat_cls->op = op;
1267 1258
1268 successor_stats_task = GNUNET_SCHEDULER_add_delayed (delay_stats, 1259 successor_stats_task
1269 &collect_stats, 1260 = GNUNET_SCHEDULER_add_delayed (delay_stats,
1270 collect_stat_cls); 1261 &collect_stats,
1262 collect_stat_cls);
1271 } 1263 }
1272} 1264}
1273 1265
@@ -1393,7 +1385,8 @@ run (void *cls, char *const *args, const char *cfgfile,
1393 1385
1394 if (0 == num_peers) 1386 if (0 == num_peers)
1395 { 1387 {
1396 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Exiting as the number of peers is %u\n"), 1388 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1389 _("Exiting as the number of peers is %u\n"),
1397 num_peers); 1390 num_peers);
1398 return; 1391 return;
1399 } 1392 }
@@ -1401,8 +1394,8 @@ run (void *cls, char *const *args, const char *cfgfile,
1401 event_mask = 0; 1394 event_mask = 0;
1402 GNUNET_TESTBED_run (hosts_file, cfg, num_peers, event_mask, NULL, 1395 GNUNET_TESTBED_run (hosts_file, cfg, num_peers, event_mask, NULL,
1403 NULL, &test_run, NULL); 1396 NULL, &test_run, NULL);
1404 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &do_shutdown, 1397 GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
1405 NULL); 1398 NULL);
1406} 1399}
1407 1400
1408 1401