summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMac Mollison <mollison@cs.unc.edu>2010-03-14 03:13:37 -0400
committerMac Mollison <mollison@cs.unc.edu>2010-03-14 03:13:37 -0400
commit17977f3e1a454efe197650b34365af15a63f4afe (patch)
tree5688a759f739dc41be92c5519e1c248823635bd6
parenta4377f43c14f3fb28fad1a7b1273080eaf921f57 (diff)
Added new control script
-rwxr-xr-xscripts/unit-trace.py100
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.
14import unit_trace
15from unit_trace import trace_reader
16from unit_trace import sanitizer
17from unit_trace import gedf_test
18from unit_trace import stats
19from unit_trace import stdout_printer
20from unit_trace import visualizer
21from unit_trace import progress
22from unit_trace import skipper
23from unit_trace import maxer
24
25# Get trace files from command line arguments
26from optparse import OptionParser
27usage = "usage: %prog [options] <one or more trace files>"
28parser = OptionParser(usage=usage)
29parser.add_option("-s", "--skip", dest="skipnum", default=0, type=int,
30 help="Skip over a fixed number of records")
31parser.add_option("-m", "--max", dest="maxnum", default=0, type=int,
32 help="Maximum number of records to parse")
33parser.add_option("-p", "--progress", action="store_true", dest="progress",
34 default=False, help="Show parsing progress")
35parser.add_option("-g", "--gedf", action="store_true", dest="gedf",
36 default=False, help="Run G-EDF test")
37parser.add_option("-i", "--info", action="store_true", dest="info",
38 default=False, help="Show statistical info")
39parser.add_option("-o", "--stdout", action="store_true", dest="stdout",
40 default=False, help="Use stdout_printer")
41parser.add_option("-v", "--visual", action="store_true", dest="visualize",
42 default=False, help="Use visualizer")
43parser.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()
46traces = list(traces)
47if len(traces) < 1:
48 parser.print_help()
49 exit()
50
51################################################################################
52# Pipeline
53################################################################################
54
55# Read events from traces
56stream = trace_reader.trace_reader(traces)
57
58# Skip over records
59if options.skipnum > 0:
60 stream = skipper.skipper(stream, options.skipnum)
61
62# Enforce max number of records to parse
63if options.maxnum > 0:
64 stream = maxer.maxer(stream, options.maxnum)
65
66# Filter out garbage events
67if 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.
72if options.progress is True:
73 stream = progress.progress(stream)
74
75# Produce G-EDF error records
76if options.gedf is True:
77 stream = gedf_test.gedf_test(stream)
78
79# Produce a statistics record
80if 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
92if 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)
97elif options.stdout is True:
98 stdout_printer.stdout_printer(stream)
99elif options.visualize is True:
100 visualizer.visualizer(stream)