diff --git a/swf2sessions.py b/swf2sessions.py index 5738d520c0929ed4134366bbf870ff2fa28d4754..54ecb228812c327398ecbac781d4e0e269bde821 100755 --- a/swf2sessions.py +++ b/swf2sessions.py @@ -1,17 +1,21 @@ #!/usr/bin/env python3 -import argparse, json, re, os.path, sys +import argparse, json, re, os, sys from user_session_builder import User from workload import SwfField, Job -def swf2sessions(input_swf, output_folder, delim_approach, delim_threshold, +def swf2sessions(input_swf, output_dir, delim_approach, delim_threshold, dynamic_reduction, build_graph_rep, quiet): users = {} - if not os.path.exists(output_folder): - raise FileExistsError(f"Output folder '{output_folder}' does not exist") + if not os.path.exists(output_dir): + raise FileExistsError(f"Output folder '{output_dir}' does not exist") + + if build_graph_rep: + if not os.path.exists(f"{output_dir}/graphs"): + os.makedirs(f"{output_dir}/graphs") # Read SWF element = '([-+]?\d+(?:\.\d+)?)' @@ -48,24 +52,24 @@ def swf2sessions(input_swf, output_folder, delim_approach, delim_threshold, # SWF finished, output for each user for user_id, user in users.items(): - with open(f"{output_folder}/{user_id}.SABjson", "w") as file: + with open(f"{output_dir}/{user_id}.SABjson", "w") as file: json.dump(user.to_dict(), file) if build_graph_rep: - user.export_dependancy_graph(output_folder) + user.export_dependancy_graph(f"{output_dir}/graphs") if not quiet: print("\nSWF parsing done.") print("Number of users: ", len(users)) print("Number of sessions: ", sum([len(u.sessions) for u in users.values()])) - print(f"The output files have been stored in the folder {output_folder}") + print(f"The output files have been stored in the folder {output_dir}") if __name__== "__main__": parser = argparse.ArgumentParser(description='TODO') parser.add_argument('input_swf', type=argparse.FileType('r'), help='The input SWF file') - parser.add_argument('output_folder', + parser.add_argument('output_dir', type=str, help='The folder that will store the output files') @@ -100,10 +104,10 @@ if __name__== "__main__": '--graph', action="store_true", help= - "Build a graphical representation of each session graph and save it in the output folder as a gml file" + "Build a graphical representation of each session graph and save them in a subfolder as gml files" ) - parser.add_argument("-q", "--quiet", action="store_true") + parser.add_argument("-q", "--quiet", action="store_true", help="Lowest verbosity level.") args = parser.parse_args() @@ -115,7 +119,7 @@ if __name__== "__main__": delim = 'arrival' swf2sessions(input_swf=args.input_swf, - output_folder=args.output_folder, + output_dir=args.output_dir, delim_approach=delim, delim_threshold=args.threshold, dynamic_reduction=not (args.no_dynamic_reduction), diff --git a/user_session_builder.py b/user_session_builder.py index a416f00c6ac2418ad8344edcd96f92693d50b137..28704f6dbd8539256ce5ab9d40bd46b0b0464409 100644 --- a/user_session_builder.py +++ b/user_session_builder.py @@ -147,10 +147,10 @@ class User: self.__last_finish_time = job.finish_time self.__max_finish_time = max(self.__max_finish_time, job.finish_time) - def export_dependancy_graph(self, output_folder): + def export_dependancy_graph(self, out_dir): """Write the dependancy graph as a gml file""" - nx.write_gml(self.G, f"{output_folder}/{self.id}.gml") + nx.write_gml(self.G, f"{out_dir}/{self.id}.gml") def to_dict(self, descr=None, cmd=None, version=1):