# Retrieve annotation from netgraph
host = ec.netgraph.node_annotation(nid, "host")
- ccnpeek = ec.register_resource("ns3::LinuxDceCCNPeek")
- #ec.set (ccnpeek, "contentName", "ccnx:/chunk0")
- ec.set (ccnpeek, "contentName", content_name)
- ec.set (ccnpeek, "stackSize", 1<<20)
- ec.set (ccnpeek, "StartTime", "5s")
- ec.set (ccnpeek, "StopTime", STOP_TIME)
- ec.register_connection(ccnpeek, host)
-
- collector = add_collector(ec, "stdout", nid, "peek")
- ec.register_connection(collector, ccnpeek)
-
# Add a ccncat application to the dce host
ccncat = ec.register_resource("ns3::LinuxDceCCNCat")
ec.set (ccncat, "contentName", content_name)
interest_dupnonce_count,
interest_count,
content_count) = ccn_parser.process_content_history_logs(
- logs_dir,
- ec.netgraph.topology)
+ logs_dir,
+ ec.netgraph.topology,
+ parse_ping_logs = True)
shortest_path = networkx.shortest_path(graph,
source = ec.netgraph.sources()[0],
for ip in ips:
ips2nid[ip] = nid
+ found_files = False
+
# Now walk through the ccnd logs...
for dirpath, dnames, fnames in os.walk(logs_dir):
# continue if we are not at the leaf level (if there are subdirectories)
for fname in fnames:
if fname.endswith(".log"):
+ found_files = True
filename = os.path.join(dirpath, fname)
data = parse_file(filename)
annotate_cn_node(graph, nid, ips2nid, data, content_history)
fname = dump_content_history(content_history)
graph.node[nid]["history"] = fname
+ if not found_files:
+ msg = "No CCND output files were found to parse at %s " % logs_dir
+ raise RuntimeError, msg
+
if parse_ping_logs:
ping_parser.annotate_cn_graph(logs_dir, graph)
interest_count,
content_count)
-def process_content_history_logs(logs_dir, graph):
+def process_content_history_logs(logs_dir, graph, parse_ping_logs = False):
""" Parse CCN logs and aggregate content history information in graph.
Returns annotated graph and message countn and content names history.
## Process logs and analyse data
try:
graph = annotate_cn_graph(logs_dir, graph,
- parse_ping_logs = True)
+ parse_ping_logs = parse_ping_logs)
except:
print "Skipping: Error parsing ccnd logs", logs_dir
raise
ips2nid[ip] = nid
# Walk through the ping logs...
+ found_files = False
+
for dirpath, dnames, fnames in os.walk(logs_dir):
# continue if we are not at the leaf level (if there are subdirectories)
if dnames:
for fname in fnames:
if fname.endswith(".ping"):
+ found_files = True
filename = os.path.join(dirpath, fname)
data = parse_file(filename)
annotate_cn_node(graph, nid, ips2nid, data)
+ if not found_files:
+ msg = "No PING output files were found to parse at %s " % logs_dir
+ raise RuntimeError, msg
+
# Take as weight the most frequent value
for nid1, nid2 in graph.edges():
delays = collections.Counter(graph.edge[nid1][nid2]["delays"])