diff options
author | Omar Tarabai <tarabai@devegypt.com> | 2014-09-03 10:47:38 +0000 |
---|---|---|
committer | Omar Tarabai <tarabai@devegypt.com> | 2014-09-03 10:47:38 +0000 |
commit | d600389e863d823981efbb1a2f1646fe13cbc7df (patch) | |
tree | 41575035cf6d4a1b2ffb929e496adc8ee7a0a2f4 /src/sensor | |
parent | 77d6764807df338fbbe0758e378ac23d1ac63862 (diff) | |
download | gnunet-d600389e863d823981efbb1a2f1646fe13cbc7df.tar.gz gnunet-d600389e863d823981efbb1a2f1646fe13cbc7df.zip |
sensor: towards profiler
Diffstat (limited to 'src/sensor')
-rw-r--r-- | src/sensor/gnunet-sensor-profiler.c | 79 |
1 files changed, 58 insertions, 21 deletions
diff --git a/src/sensor/gnunet-sensor-profiler.c b/src/sensor/gnunet-sensor-profiler.c index 356e94da8..2a04eaae7 100644 --- a/src/sensor/gnunet-sensor-profiler.c +++ b/src/sensor/gnunet-sensor-profiler.c | |||
@@ -88,14 +88,14 @@ static const char *sensor_src_dir = "sensors"; | |||
88 | static const char *sensor_dst_dir = "/tmp/gnunet-sensor-profiler"; | 88 | static const char *sensor_dst_dir = "/tmp/gnunet-sensor-profiler"; |
89 | 89 | ||
90 | /** | 90 | /** |
91 | * GNUnet configuration | 91 | * Scheduled task to shutdown |
92 | */ | 92 | */ |
93 | static struct GNUNET_CONFIGURATION_Handle *cfg; | 93 | static GNUNET_SCHEDULER_TaskIdentifier shutdown_task = GNUNET_SCHEDULER_NO_TASK; |
94 | 94 | ||
95 | /** | 95 | /** |
96 | * Return value of the program | 96 | * GNUnet configuration |
97 | */ | 97 | */ |
98 | static int ok = 1; | 98 | static struct GNUNET_CONFIGURATION_Handle *cfg; |
99 | 99 | ||
100 | /** | 100 | /** |
101 | * Number of peers to run (Option -p) | 101 | * Number of peers to run (Option -p) |
@@ -180,6 +180,13 @@ copy_dir (const char *src, const char *dst); | |||
180 | 180 | ||
181 | 181 | ||
182 | /** | 182 | /** |
183 | * Prompt the user to disconnect two peers | ||
184 | */ | ||
185 | static void | ||
186 | prompt_peer_disconnection (); | ||
187 | |||
188 | |||
189 | /** | ||
183 | * Do clean up and shutdown scheduler | 190 | * Do clean up and shutdown scheduler |
184 | */ | 191 | */ |
185 | static void | 192 | static void |
@@ -253,8 +260,9 @@ transport_disconnect_cb (void *cls, const int result) | |||
253 | { | 260 | { |
254 | struct DisconnectionContext *dc = cls; | 261 | struct DisconnectionContext *dc = cls; |
255 | 262 | ||
256 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnection request between `%s' and `%s' sent.\n", | 263 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
257 | GNUNET_i2s (&dc->p1->peer_id), GNUNET_i2s (&dc->p2->peer_id)); | 264 | "Disconnection request between `%s' and `%s' sent.\n", |
265 | GNUNET_i2s (&dc->p1->peer_id), GNUNET_i2s (&dc->p2->peer_id)); | ||
258 | } | 266 | } |
259 | 267 | ||
260 | 268 | ||
@@ -279,10 +287,9 @@ transport_connect_cb (void *cls, struct GNUNET_TESTBED_Operation *op, | |||
279 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "ERROR: %s.\n", emsg); | 287 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "ERROR: %s.\n", emsg); |
280 | GNUNET_assert (0); | 288 | GNUNET_assert (0); |
281 | } | 289 | } |
282 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer %d: %s\n", 0, GNUNET_i2s (&dc->p1->peer_id)); | ||
283 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer %d: %s\n", 1, GNUNET_i2s (&dc->p2->peer_id)); | ||
284 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "transport_connect_cb().\n"); | 290 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "transport_connect_cb().\n"); |
285 | GNUNET_TRANSPORT_try_disconnect (transport, &dc->p2->peer_id, &transport_disconnect_cb, dc); | 291 | GNUNET_TRANSPORT_try_disconnect (transport, &dc->p2->peer_id, |
292 | &transport_disconnect_cb, dc); | ||
286 | } | 293 | } |
287 | 294 | ||
288 | 295 | ||
@@ -321,7 +328,7 @@ transport_connect_adapter (void *cls, | |||
321 | struct GNUNET_TRANSPORT_Handle *transport; | 328 | struct GNUNET_TRANSPORT_Handle *transport; |
322 | 329 | ||
323 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "transport_connect_adapter().\n"); | 330 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "transport_connect_adapter().\n"); |
324 | dc-> blacklist = GNUNET_TRANSPORT_blacklist (cfg, &blacklist_cb, dc); | 331 | dc->blacklist = GNUNET_TRANSPORT_blacklist (cfg, &blacklist_cb, dc); |
325 | GNUNET_assert (NULL != dc->blacklist); | 332 | GNUNET_assert (NULL != dc->blacklist); |
326 | transport = GNUNET_TRANSPORT_connect (cfg, NULL, NULL, NULL, NULL, NULL); | 333 | transport = GNUNET_TRANSPORT_connect (cfg, NULL, NULL, NULL, NULL, NULL); |
327 | GNUNET_assert (NULL != transport); | 334 | GNUNET_assert (NULL != transport); |
@@ -341,7 +348,7 @@ transport_disconnect_adapter (void *cls, void *op_result) | |||
341 | struct GNUNET_TRANSPORT_Handle *transport = op_result; | 348 | struct GNUNET_TRANSPORT_Handle *transport = op_result; |
342 | 349 | ||
343 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "transport_disconnect_adapter().\n"); | 350 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "transport_disconnect_adapter().\n"); |
344 | GNUNET_TRANSPORT_disconnect(transport); | 351 | GNUNET_TRANSPORT_disconnect (transport); |
345 | } | 352 | } |
346 | 353 | ||
347 | 354 | ||
@@ -356,14 +363,15 @@ disconnect_peers (struct PeerInfo *p1, struct PeerInfo *p2) | |||
356 | 363 | ||
357 | GNUNET_assert (p1 != p2); | 364 | GNUNET_assert (p1 != p2); |
358 | dc = GNUNET_new (struct DisconnectionContext); | 365 | dc = GNUNET_new (struct DisconnectionContext); |
366 | |||
359 | dc->p1 = p1; | 367 | dc->p1 = p1; |
360 | dc->p2 = p2; | 368 | dc->p2 = p2; |
361 | GNUNET_CONTAINER_DLL_insert (dc_head, dc_tail, dc); | 369 | GNUNET_CONTAINER_DLL_insert (dc_head, dc_tail, dc); |
362 | dc->p1_transport_op = | 370 | dc->p1_transport_op = |
363 | GNUNET_TESTBED_service_connect (NULL, p1->testbed_peer, | 371 | GNUNET_TESTBED_service_connect (NULL, p1->testbed_peer, "transport", |
364 | "transport", &transport_connect_cb, | 372 | &transport_connect_cb, dc, |
365 | dc, &transport_connect_adapter, | 373 | &transport_connect_adapter, |
366 | &transport_disconnect_adapter, dc); | 374 | &transport_disconnect_adapter, dc); |
367 | } | 375 | } |
368 | 376 | ||
369 | 377 | ||
@@ -456,8 +464,8 @@ sensor_dir_scanner (void *cls, const char *filename) | |||
456 | GNUNET_CONFIGURATION_parse (sensor_cfg, filename)); | 464 | GNUNET_CONFIGURATION_parse (sensor_cfg, filename)); |
457 | GNUNET_CONFIGURATION_set_value_string (sensor_cfg, file_basename, | 465 | GNUNET_CONFIGURATION_set_value_string (sensor_cfg, file_basename, |
458 | "COLLECTION_POINT", | 466 | "COLLECTION_POINT", |
459 | GNUNET_i2s_full (&all_peers_info | 467 | GNUNET_i2s_full (&all_peers_info[0]. |
460 | [0].peer_id)); | 468 | peer_id)); |
461 | if (sensors_interval > 0) | 469 | if (sensors_interval > 0) |
462 | { | 470 | { |
463 | GNUNET_CONFIGURATION_set_value_number (sensor_cfg, file_basename, | 471 | GNUNET_CONFIGURATION_set_value_number (sensor_cfg, file_basename, |
@@ -616,6 +624,34 @@ peerstore_disconnect_adapter (void *cls, void *op_result) | |||
616 | 624 | ||
617 | 625 | ||
618 | /** | 626 | /** |
627 | * Prompt the user to disconnect two peers | ||
628 | */ | ||
629 | static void | ||
630 | prompt_peer_disconnection () | ||
631 | { | ||
632 | int p1; | ||
633 | int p2; | ||
634 | char line[10]; | ||
635 | |||
636 | printf ("Disconnect peers (e.g. '0,2') or empty line to execute: "); | ||
637 | if (NULL == fgets (line, sizeof (line), stdin) || 1 == strlen (line)) | ||
638 | { | ||
639 | printf ("Continuing.\n"); | ||
640 | return; | ||
641 | } | ||
642 | if (2 != sscanf (line, "%d,%d", &p1, &p2) || p1 >= num_peers || | ||
643 | p2 >= num_peers || p1 < 0 || p2 < 0 || p1 == p2) | ||
644 | { | ||
645 | printf ("Invalid input.\n"); | ||
646 | prompt_peer_disconnection (); | ||
647 | return; | ||
648 | } | ||
649 | disconnect_peers (&all_peers_info[p1], &all_peers_info[p2]); | ||
650 | prompt_peer_disconnection (); | ||
651 | } | ||
652 | |||
653 | |||
654 | /** | ||
619 | * This function is called after the estimated training period is over. | 655 | * This function is called after the estimated training period is over. |
620 | */ | 656 | */ |
621 | static void | 657 | static void |
@@ -624,7 +660,7 @@ simulate_anomalies (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
624 | delayed_task = GNUNET_SCHEDULER_NO_TASK; | 660 | delayed_task = GNUNET_SCHEDULER_NO_TASK; |
625 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 661 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
626 | "Training period over, simulating anomalies now.\n"); | 662 | "Training period over, simulating anomalies now.\n"); |
627 | //TODO | 663 | prompt_peer_disconnection (); |
628 | } | 664 | } |
629 | 665 | ||
630 | 666 | ||
@@ -829,8 +865,9 @@ run (void *cls, char *const *args, const char *cf, | |||
829 | cfg, "TESTBED", | 865 | cfg, "TESTBED", |
830 | "OVERLAY_TOPOLOGY_FILE", | 866 | "OVERLAY_TOPOLOGY_FILE", |
831 | topology_file); | 867 | topology_file); |
832 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &do_shutdown, | 868 | shutdown_task = |
833 | NULL); | 869 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &do_shutdown, |
870 | NULL); | ||
834 | GNUNET_TESTBED_run (NULL, cfg, num_peers, 0, NULL, NULL, &test_master, NULL); | 871 | GNUNET_TESTBED_run (NULL, cfg, num_peers, 0, NULL, NULL, &test_master, NULL); |
835 | } | 872 | } |
836 | 873 | ||
@@ -857,7 +894,7 @@ main (int argc, char *const *argv) | |||
857 | return (GNUNET_OK == | 894 | return (GNUNET_OK == |
858 | GNUNET_PROGRAM_run (argc, argv, "gnunet-sensor-profiler", | 895 | GNUNET_PROGRAM_run (argc, argv, "gnunet-sensor-profiler", |
859 | gettext_noop ("Profiler for sensor service"), | 896 | gettext_noop ("Profiler for sensor service"), |
860 | options, &run, NULL)) ? ok : 1; | 897 | options, &run, NULL)) ? 0 : 1; |
861 | } | 898 | } |
862 | 899 | ||
863 | /* end of gnunet-sensor-profiler.c */ | 900 | /* end of gnunet-sensor-profiler.c */ |