#!/usr/bin/python ################################################################################ # Description ################################################################################ # This is a sample script for using the tool. I would recommend copying # this and modifying it to suit your needs for a particular test. Make # sure you redirect the output to a file (e.g. ./sample_script.py > output). ################################################################################ # Setup ################################################################################ # Import the modules we need. You should not need to know about # their internals. import unit_trace from unit_trace import trace_reader from unit_trace import sanitizer from unit_trace import gedf_test from unit_trace import stats from unit_trace import stdout_printer from unit_trace import visualizer # Specify your trace files g6 = [ './sample_traces/st-g6-0.bin', './sample_traces/st-g6-1.bin', './sample_traces/st-g6-2.bin', './sample_traces/st-g6-3.bin', ] ################################################################################ # Pipeline ################################################################################ # Read events from traces stream = trace_reader.trace_reader(g6) # Filter out garbage events stream = sanitizer.sanitizer(stream) # Produce G-EDF error records stream = gedf_test.gedf_test(stream) # Produce a statistics record stream = stats.stats(stream) # Filter some records out # NOTE: Currently, this will break the Visualizer if enabled def my_filter(record): if record.record_type == 'error' and record.type_name == 'inversion_end': if record.job.inversion_end - record.job.inversion_start < 4000000: return False return True #stream = filter(my_filter, stream) # Split the stream in two, so we can use both output mechanisms import itertools stream1, stream2 = itertools.tee(stream,2) # Print the records to stdout stdout_printer.stdout_printer(stream1) # Visualize the records visualizer.visualizer(stream2)