[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r34267 - gnunet/src/sensor
From: |
gnunet |
Subject: |
[GNUnet-SVN] r34267 - gnunet/src/sensor |
Date: |
Wed, 3 Sep 2014 17:01:23 +0200 |
Author: otarabai
Date: 2014-09-03 17:01:22 +0200 (Wed, 03 Sep 2014)
New Revision: 34267
Modified:
gnunet/src/sensor/gnunet-sensor-profiler.c
gnunet/src/sensor/profiler.py
Log:
sensor profiler complete
Modified: gnunet/src/sensor/gnunet-sensor-profiler.c
===================================================================
--- gnunet/src/sensor/gnunet-sensor-profiler.c 2014-09-03 12:10:30 UTC (rev
34266)
+++ gnunet/src/sensor/gnunet-sensor-profiler.c 2014-09-03 15:01:22 UTC (rev
34267)
@@ -52,6 +52,11 @@
*/
struct GNUNET_TESTBED_Peer *testbed_peer;
+ /**
+ * Index of this peer within our list
+ */
+ int index;
+
};
struct DisconnectionContext
@@ -261,8 +266,8 @@
struct DisconnectionContext *dc = cls;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Disconnection request between `%s' and `%s' sent.\n",
- GNUNET_i2s (&dc->p1->peer_id), GNUNET_i2s (&dc->p2->peer_id));
+ "Peer disconnection request sent: %d,%d\n", dc->p1->index,
+ dc->p2->index);
}
@@ -464,8 +469,8 @@
GNUNET_CONFIGURATION_parse (sensor_cfg, filename));
GNUNET_CONFIGURATION_set_value_string (sensor_cfg, file_basename,
"COLLECTION_POINT",
- GNUNET_i2s_full (&all_peers_info
- [0].peer_id));
+ GNUNET_i2s_full (&all_peers_info[0].
+ peer_id));
if (sensors_interval > 0)
{
GNUNET_CONFIGURATION_set_value_number (sensor_cfg, file_basename,
@@ -545,10 +550,10 @@
GNUNET_CRYPTO_cmp_peer_identity (&peer->peer_id,
record->peer));
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Anomaly report:\n" " Peer: `%s'\n" " Sensor: `%s'\n"
- " Anomalous: `%d'\n" " Anomalous neighbors: %f.\n\n",
- GNUNET_i2s (&peer->peer_id), record->key, anomaly->anomalous,
- anomaly->anomalous_neighbors);
+ "Anomaly report:{'peerid': '%s'," "'peer': %d," "'sensor': '%s',"
+ "'anomalous': %d," "'neighbors': %f}\n",
+ GNUNET_i2s (&peer->peer_id), peer->index, record->key,
+ anomaly->anomalous, anomaly->anomalous_neighbors);
return GNUNET_YES;
}
@@ -662,7 +667,7 @@
delayed_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Training period over, simulating anomalies now.\n");
- //TODO:
+ prompt_peer_disconnection ();
}
@@ -695,7 +700,6 @@
GNUNET_NO));
delayed_task =
GNUNET_SCHEDULER_add_delayed (training_period, &simulate_anomalies,
NULL);
- prompt_peer_disconnection (); //TODO: move to simulate_anomalies()
}
@@ -756,6 +760,7 @@
}
peer->testbed_peer = testbed_peer;
GNUNET_CRYPTO_get_peer_identity (pinfo->result.cfg, &peer->peer_id);
+ peer->index = peers_known;
peers_known++;
if (1 == peers_known) /* First peer is collection point */
{
Modified: gnunet/src/sensor/profiler.py
===================================================================
--- gnunet/src/sensor/profiler.py 2014-09-03 12:10:30 UTC (rev 34266)
+++ gnunet/src/sensor/profiler.py 2014-09-03 15:01:22 UTC (rev 34267)
@@ -5,8 +5,13 @@
import tempfile
import os
import time
+import matplotlib.pyplot as plt
from subprocess import Popen, PIPE, STDOUT
+node_colors = None
+graph = None
+pos = None
+
def get_args():
parser = argparse.ArgumentParser(description="Sensor profiler")
parser.add_argument('-p', '--peers', action='store', type=int, required=True,
@@ -14,17 +19,22 @@
return parser.parse_args()
def generate_topology(peers, links):
- G = networkx.empty_graph(peers)
+ global graph
+ global node_colors
+ global pos
+ graph = networkx.empty_graph(peers)
for i in range(0, links):
a = 0
b = 0
while a == b:
- a = random.randint(0, peers)
- b = random.randint(0, peers)
- G.add_edge(a, b)
- return G
+ a = random.randint(0, peers - 1)
+ b = random.randint(0, peers - 1)
+ graph.add_edge(a, b)
+ node_colors = [0] * peers
+ pos = networkx.layout.spring_layout(graph)
-def create_topology_file(graph):
+def create_topology_file():
+ global graph
nodes = list()
for i in range(len(graph.edge)):
nodes.append(list())
@@ -41,10 +51,51 @@
# f.close()
return f.name
+def draw_graph():
+ global graph
+ global node_colors
+ global pos
+ t = int(time.time())
+ inc = 2
+ name = str(t) + '.png'
+ while os.path.exists(name):
+ name = '%d(%d).png' % (t, inc)
+ inc += 1
+ print 'Drawing graph to file: %s' % name
+ plt.clf()
+ networkx.draw(graph, pos=pos, node_color=node_colors,
with_labels=range(len(graph.node)), cmap=plt.cm.Reds, vmin=0, vmax=2)
+ plt.savefig(name)
+
+def peers_disconnected(p1, p2):
+ global graph
+ print 'Disconnected peers %d and %d' % (p1, p2)
+ if p2 not in graph[p1]:
+ print 'Link does not exist'
+ return
+ graph.remove_edge(p1, p2)
+ draw_graph()
+
+def anomaly_report(report):
+ global node_colors
+ if 0 == report['anomalous']:
+ node_colors[report['peer']] = 0
+ else:
+ node_colors[report['peer']] = 1 + report['neighbors']
+ draw_graph()
+
def handle_profiler_line(line):
if not line:
return
print line
+ if 'Peer disconnection request sent' in line: # Peers disconnected
+ parts = line.split(':')
+ peers = parts[-1].split(',')
+ peers_disconnected(int(peers[0]), int(peers[1]))
+ return
+ if 'Anomaly report:' in line:
+ parts = line.split('Anomaly report:')
+ anomaly_report(eval(parts[1]))
+ return
def run_profiler(peers, topology_file):
cmd = "GNUNET_FORCE_LOG='gnunet-sensor-profiler;;;;DEBUG'
gnunet-sensor-profiler -p %d -t %s > log 2>&1" % (peers, topology_file)
@@ -69,11 +120,12 @@
return
num_links = int(math.log(num_peers) * math.log(num_peers) * num_peers / 2)
# Generate random topology
- graph = generate_topology(num_peers, num_links)
+ generate_topology(num_peers, num_links)
print 'Generated random topology with %d peers and %d links' % (num_peers,
num_links)
# Create TESTBED topology file
- top_file = create_topology_file(graph)
+ top_file = create_topology_file()
print 'Created TESTBED topology file %s' % top_file
+ draw_graph()
# Run c profiler
run_profiler(num_peers, top_file)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r34267 - gnunet/src/sensor,
gnunet <=