diff options
author | Mac Mollison <mollison@cs.unc.edu> | 2010-03-14 03:13:37 -0400 |
---|---|---|
committer | Mac Mollison <mollison@cs.unc.edu> | 2010-03-14 03:13:37 -0400 |
commit | 17977f3e1a454efe197650b34365af15a63f4afe (patch) | |
tree | 5688a759f739dc41be92c5519e1c248823635bd6 | |
parent | a4377f43c14f3fb28fad1a7b1273080eaf921f57 (diff) |
Added new control script
-rwxr-xr-x | scripts/unit-trace.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/scripts/unit-trace.py b/scripts/unit-trace.py new file mode 100755 index 0000000..5d772e8 --- /dev/null +++ b/scripts/unit-trace.py | |||
@@ -0,0 +1,100 @@ | |||
1 | #!/usr/bin/python | ||
2 | |||
3 | ################################################################################ | ||
4 | # Description | ||
5 | ################################################################################ | ||
6 | # Control script for unit-trace | ||
7 | |||
8 | ################################################################################ | ||
9 | # Setup | ||
10 | ################################################################################ | ||
11 | |||
12 | # Import the modules we need. You should not need to know about | ||
13 | # their internals. | ||
14 | import unit_trace | ||
15 | from unit_trace import trace_reader | ||
16 | from unit_trace import sanitizer | ||
17 | from unit_trace import gedf_test | ||
18 | from unit_trace import stats | ||
19 | from unit_trace import stdout_printer | ||
20 | from unit_trace import visualizer | ||
21 | from unit_trace import progress | ||
22 | from unit_trace import skipper | ||
23 | from unit_trace import maxer | ||
24 | |||
25 | # Get trace files from command line arguments | ||
26 | from optparse import OptionParser | ||
27 | usage = "usage: %prog [options] <one or more trace files>" | ||
28 | parser = OptionParser(usage=usage) | ||
29 | parser.add_option("-s", "--skip", dest="skipnum", default=0, type=int, | ||
30 | help="Skip over a fixed number of records") | ||
31 | parser.add_option("-m", "--max", dest="maxnum", default=0, type=int, | ||
32 | help="Maximum number of records to parse") | ||
33 | parser.add_option("-p", "--progress", action="store_true", dest="progress", | ||
34 | default=False, help="Show parsing progress") | ||
35 | parser.add_option("-g", "--gedf", action="store_true", dest="gedf", | ||
36 | default=False, help="Run G-EDF test") | ||
37 | parser.add_option("-i", "--info", action="store_true", dest="info", | ||
38 | default=False, help="Show statistical info") | ||
39 | parser.add_option("-o", "--stdout", action="store_true", dest="stdout", | ||
40 | default=False, help="Use stdout_printer") | ||
41 | parser.add_option("-v", "--visual", action="store_true", dest="visualize", | ||
42 | default=False, help="Use visualizer") | ||
43 | parser.add_option("-c", "--clean", action="store_true", dest="clean", | ||
44 | default=False, help="Use sanitizer to clean garbage records") | ||
45 | (options, traces) = parser.parse_args() | ||
46 | traces = list(traces) | ||
47 | if len(traces) < 1: | ||
48 | parser.print_help() | ||
49 | exit() | ||
50 | |||
51 | ################################################################################ | ||
52 | # Pipeline | ||
53 | ################################################################################ | ||
54 | |||
55 | # Read events from traces | ||
56 | stream = trace_reader.trace_reader(traces) | ||
57 | |||
58 | # Skip over records | ||
59 | if options.skipnum > 0: | ||
60 | stream = skipper.skipper(stream, options.skipnum) | ||
61 | |||
62 | # Enforce max number of records to parse | ||
63 | if options.maxnum > 0: | ||
64 | stream = maxer.maxer(stream, options.maxnum) | ||
65 | |||
66 | # Filter out garbage events | ||
67 | if options.clean is True: | ||
68 | stream = sanitizer.sanitizer(stream) | ||
69 | |||
70 | # Display progress information using stderr | ||
71 | # e.g. # records completed so far, total time, etc. | ||
72 | if options.progress is True: | ||
73 | stream = progress.progress(stream) | ||
74 | |||
75 | # Produce G-EDF error records | ||
76 | if options.gedf is True: | ||
77 | stream = gedf_test.gedf_test(stream) | ||
78 | |||
79 | # Produce a statistics record | ||
80 | if options.info is True: | ||
81 | stream = stats.stats(stream) | ||
82 | |||
83 | # Filter some records out | ||
84 | #def my_filter(record): | ||
85 | # if record.record_type == 'error' and record.type_name == 'inversion_end': | ||
86 | # if record.job.inversion_end - record.job.inversion_start < 4000000: | ||
87 | # return False | ||
88 | # return True | ||
89 | #stream = filter(my_filter, stream) | ||
90 | |||
91 | # Output | ||
92 | if options.stdout is True and options.visualize is True: | ||
93 | import itertools | ||
94 | stream1, stream2 = itertools.tee(stream,2) | ||
95 | stdout_printer.stdout_printer(stream1) | ||
96 | visualizer.visualizer(stream2) | ||
97 | elif options.stdout is True: | ||
98 | stdout_printer.stdout_printer(stream) | ||
99 | elif options.visualize is True: | ||
100 | visualizer.visualizer(stream) | ||