X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fdata%2Fprocessing%2Fccn%2Fparser.py;h=fe0e45b9667a8672f91b2e8fce686e15247c99e0;hb=e55924b6886bd7382a28e1ae235c4810f852e163;hp=e3c1007a833ee4d25e5e8f88de983cff58aa6f58;hpb=ec3460fce064ea44366cb417dea0f9e148d3d804;p=nepi.git diff --git a/src/nepi/data/processing/ccn/parser.py b/src/nepi/data/processing/ccn/parser.py index e3c1007a..fe0e45b9 100644 --- a/src/nepi/data/processing/ccn/parser.py +++ b/src/nepi/data/processing/ccn/parser.py @@ -6,9 +6,8 @@ # Copyright (C) 2014 INRIA # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation; # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -199,6 +198,7 @@ def annotate_cn_graph(logs_dir, graph, parse_ping_logs = False): """ Adds CCN content history for each node in the topology graph. """ + # Make a copy of the graph to ensure integrity graph = graph.copy() @@ -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) @@ -217,11 +219,16 @@ def annotate_cn_graph(logs_dir, graph, parse_ping_logs = False): # Each dirpath correspond to a different node nid = os.path.basename(dirpath) + + # Cast to numeric nid if necessary + if int(nid) in graph.nodes(): + nid = int(nid) content_history = dict() 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 +238,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 +376,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 +384,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