aboutsummaryrefslogtreecommitdiff
path: root/src/sensor
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-09-03 10:47:38 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-09-03 10:47:38 +0000
commitd600389e863d823981efbb1a2f1646fe13cbc7df (patch)
tree41575035cf6d4a1b2ffb929e496adc8ee7a0a2f4 /src/sensor
parent77d6764807df338fbbe0758e378ac23d1ac63862 (diff)
downloadgnunet-d600389e863d823981efbb1a2f1646fe13cbc7df.tar.gz
gnunet-d600389e863d823981efbb1a2f1646fe13cbc7df.zip
sensor: towards profiler
Diffstat (limited to 'src/sensor')
-rw-r--r--src/sensor/gnunet-sensor-profiler.c79
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";
88static const char *sensor_dst_dir = "/tmp/gnunet-sensor-profiler"; 88static const char *sensor_dst_dir = "/tmp/gnunet-sensor-profiler";
89 89
90/** 90/**
91 * GNUnet configuration 91 * Scheduled task to shutdown
92 */ 92 */
93static struct GNUNET_CONFIGURATION_Handle *cfg; 93static GNUNET_SCHEDULER_TaskIdentifier shutdown_task = GNUNET_SCHEDULER_NO_TASK;
94 94
95/** 95/**
96 * Return value of the program 96 * GNUnet configuration
97 */ 97 */
98static int ok = 1; 98static 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 */
185static void
186prompt_peer_disconnection ();
187
188
189/**
183 * Do clean up and shutdown scheduler 190 * Do clean up and shutdown scheduler
184 */ 191 */
185static void 192static 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 */
629static void
630prompt_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 */
621static void 657static 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 */