def parse_tunnel_log(self, cc, run_id): log_prefix = cc if self.flows == 0: log_prefix += '_mm' tput = None delay = None loss = None stats = None error = False link_directions = ['datalink'] if self.include_acklink: link_directions.append('acklink') for link_t in link_directions: log_name = log_prefix + '_%s_run%s.log' % (link_t, run_id) log_path = path.join(self.data_dir, log_name) if not path.isfile(log_path): sys.stderr.write('Warning: %s does not exist\n' % log_path) error = True continue if self.no_graphs: tput_graph_path = None delay_graph_path = None else: tput_graph = cc + '_%s_throughput_run%s.png' % (link_t, run_id) tput_graph_path = path.join(self.data_dir, tput_graph) delay_graph = cc + '_%s_delay_run%s.png' % (link_t, run_id) delay_graph_path = path.join(self.data_dir, delay_graph) print_cmd('tunnel_graph %s\n' % log_path) try: tunnel_results = tunnel_graph.TunnelGraph( tunnel_log=log_path, throughput_graph=tput_graph_path, delay_graph=delay_graph_path).run() except Exception as exception: sys.stderr.write('Error: %s\n' % exception) sys.stderr.write('Warning: "tunnel_graph %s" failed but ' 'continued to run.\n' % log_path) error = True if error: continue if link_t == 'datalink': tput = tunnel_results['throughput'] delay = tunnel_results['delay'] loss = tunnel_results['loss'] duration = tunnel_results['duration'] / 1000.0 stats = tunnel_results['stats'] if duration < 0.8 * self.runtime: sys.stderr.write( 'Warning: "tunnel_graph %s" had duration %.2f seconds ' 'but should have been around %s seconds. Ignoring this' ' run.\n' % (log_path, duration, self.runtime)) error = True if error: return (None, None, None, None) return (tput, delay, loss, stats)
def parse_tunnel_log(self, cc, run_id): log_prefix = cc if self.flows == 0: log_prefix += '_mm' tput = None delay = None loss = None for_stats = None procs = [] error = False link_directions = ['datalink'] if self.include_acklink: link_directions.append('acklink') for link_t in link_directions: log_name = log_prefix + '_%s_run%s.log' % (link_t, run_id) log_path = path.join(self.data_dir, log_name) if not path.isfile(log_path): sys.stderr.write('Warning: %s does not exist\n' % log_path) error = True continue if self.no_plots: tput_graph_path = None delay_graph_path = None else: tput_graph = cc + '_%s_throughput_run%s.png' % (link_t, run_id) tput_graph_path = path.join(self.data_dir, tput_graph) delay_graph = cc + '_%s_delay_run%s.png' % (link_t, run_id) delay_graph_path = path.join(self.data_dir, delay_graph) try: sys.stderr.write("tunnel_graph %s\n" % log_path) run_analysis = tunnel_graph.TunnelGraph( 500, log_path, tput_graph_path, delay_graph_path).tunnel_graph() except: sys.stderr.write('Warning: "tunnel_graph %s" failed with an ' 'exception.\n' % log_path) error = True if error: continue if link_t == 'datalink': (tput, delay, loss, test_runtime, for_stats) = run_analysis if test_runtime < (750 * self.runtime): # .75 * 1000 ms/s sys.stderr.write('Warning: "tunnel_graph %s" had duration ' '%.2f seconds but should have been around' '%d seconds. Ignoring this run.\n' % (log_path, (test_runtime / 1000.), self.runtime)) error = True if error: return (None, None, None, None) else: return (tput, delay, loss, for_stats)