[tor-commits] [onionperf/master] Adds logic to deal with dirs and individual analysis files
karsten at torproject.org
karsten at torproject.org
Wed Jun 3 13:39:29 UTC 2020
commit 3fae1756f6919658f7fad223026483f754f6a58b
Author: Ana Custura <ana at netstat.org.uk>
Date: Sun May 31 14:26:50 2020 +0100
Adds logic to deal with dirs and individual analysis files
---
onionperf/onionperf | 33 +++++++++++++++++++++++++++------
1 file changed, 27 insertions(+), 6 deletions(-)
diff --git a/onionperf/onionperf b/onionperf/onionperf
index 85cfca1..08e1406 100755
--- a/onionperf/onionperf
+++ b/onionperf/onionperf
@@ -457,17 +457,38 @@ def type_str_date_in(value):
# a custom action for passing in experimental data directories when plotting
class PathStringArgsAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
- # extract the path to our data, and the label for the legend
- p = os.path.abspath(os.path.expanduser(values[0]))
- s = values[1]
- # check the path exists
- if not os.path.exists(p): raise argparse.ArgumentError(self, "The supplied path does not exist: '{0}'".format(p))
+ # at least two arguments are required
+ if len(values)<2: raise argparse.ArgumentError(self, "Must specify at least one path and one data label")
+
+ # extract the paths to our data, and the label for the legend
+ label = values[-1]
+ # fail if the label is a path
+ check_label = os.path.abspath(os.path.expanduser(label))
+ if os.path.exists(check_label):
+ raise argparse.ArgumentError(self, "The supplied label cannot be a path")
+
+ paths = values[:-1]
+ dir_paths = []
+ for item in paths:
+ p = os.path.abspath(os.path.expanduser(item))
+ if not os.path.exists(p): raise argparse.ArgumentError(self, "The supplied path does not exist: '{0}'".format(p))
+ if os.path.isdir(p):
+ from onionperf import reprocessing
+ dir_paths.extend(reprocessing.collect_logs(item, "*json*"))
+
+ # remove any directories from the list of paths
+ paths = [p for p in paths if not os.path.isdir(p)]
+ # add all json.xz files found in directories to the list of paths
+ paths.extend(dir_paths)
+ # remove any duplicates
+ paths = list(set(paths))
+
# remove the default
if "_didremovedefault" not in namespace:
setattr(namespace, self.dest, [])
setattr(namespace, "_didremovedefault", True)
# append out new experiment path
dest = getattr(namespace, self.dest)
- dest.append((p, s))
+ dest.append((paths, label))
if __name__ == '__main__': sys.exit(main())
More information about the tor-commits
mailing list