From: Alina Quereilhac Date: Mon, 1 Sep 2014 15:20:46 +0000 (+0200) Subject: Adding validations to CCND and PING log parser in nepi data X-Git-Tag: nepi-3.2.0~94 X-Git-Url: http://git.onelab.eu/?p=nepi.git;a=commitdiff_plain;h=d16b306c7ee05bd2f068966bead8906526368162 Adding validations to CCND and PING log parser in nepi data --- diff --git a/examples/ccn_emu_live/dce.py b/examples/ccn_emu_live/dce.py index 3386e792..06c34050 100644 --- a/examples/ccn_emu_live/dce.py +++ b/examples/ccn_emu_live/dce.py @@ -105,17 +105,6 @@ def add_dce_ccncat(ec, nid): # 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) diff --git a/examples/ccn_emu_live/planetlab.py b/examples/ccn_emu_live/planetlab.py index 766e96b2..033076ff 100644 --- a/examples/ccn_emu_live/planetlab.py +++ b/examples/ccn_emu_live/planetlab.py @@ -159,8 +159,9 @@ def avg_interests(ec, run): 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], diff --git a/src/nepi/data/processing/ccn/parser.py b/src/nepi/data/processing/ccn/parser.py index e3c1007a..9b83a4cf 100644 --- a/src/nepi/data/processing/ccn/parser.py +++ b/src/nepi/data/processing/ccn/parser.py @@ -209,6 +209,8 @@ def annotate_cn_graph(logs_dir, graph, parse_ping_logs = False): 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) @@ -222,6 +224,7 @@ def annotate_cn_graph(logs_dir, graph, parse_ping_logs = False): 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) @@ -231,6 +234,10 @@ def annotate_cn_graph(logs_dir, graph, parse_ping_logs = False): 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) @@ -365,7 +372,7 @@ def process_content_history(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. @@ -373,7 +380,7 @@ def process_content_history_logs(logs_dir, graph): ## 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 diff --git a/src/nepi/data/processing/ping/parser.py b/src/nepi/data/processing/ping/parser.py index 0248c8cf..c5745a1f 100644 --- a/src/nepi/data/processing/ping/parser.py +++ b/src/nepi/data/processing/ping/parser.py @@ -90,6 +90,8 @@ def annotate_cn_graph(logs_dir, graph): 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: @@ -100,10 +102,15 @@ def annotate_cn_graph(logs_dir, graph): 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"])