def __init__(self, hosts, routers, links, display_graph=True, graph_output=None): """ A network instance with flows. Args: hosts (Host[]): The list of hosts. routers (Router[]): The list of routers. links (Link[]): The list of links. display_graph(bool) Whether we should display the graph when done graph_output(str) Output folder if data needs saving """ super(Network, self).__init__() Network.TIME = 0 self.hosts = hosts self.routers = routers self.links = links self.event_queue = EventDispatcher() for target in self.hosts + self.routers + self.links: self.event_queue.listen(target) self.running = False self.grapher = Grapher(graph_output) self.displayGraph = display_graph
def get_argument_parser(): parser = argparse.ArgumentParser() parser.add_argument("filenames", help="The filenames of the csv file to plot", nargs="*", type=str) parser.add_argument("-b", "--bucket-size", help="Size of bucket to use for graph smoothing (ms)", nargs="*", type=int, default=None) return parser if __name__ == '__main__': # Parse command line arguments args = get_argument_parser().parse_args() # Plot the files grapher = Grapher() assert args.bucket_size is None or \ len(args.filenames) == len(args.bucket_size), \ "Need a bucket width for every graph" for i, filename in enumerate(args.filenames): bucket_size = int(args.bucket_size[i]) if args.bucket_size else None grapher.plot_csv(filename, bucket_size) # Show the graphs grapher.show()