aos/tools/harness/reprocess.py
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

78 lines
2.7 KiB
Python
Executable File

#!/usr/bin/env python
##########################################################################
# Copyright (c) 2009, ETH Zurich.
# All rights reserved.
#
# This file is distributed under the terms in the attached LICENSE file.
# If you do not find this file, copies can be found by writing to:
# ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
##########################################################################
import os, optparse, re
import harness, debug, tests
def parse_args():
p = optparse.OptionParser(usage='Usage: %prog [options] RESULTDIR...',
description='Reprocess raw results from scalebench/harness runs')
debug.addopts(p, 'debuglevel')
p.add_option('-e', '--existingbuild', dest='existingbuild', metavar='DIR',
help='existing build directory (may not be used with -b)')
p.add_option('-S', '--sourcedir', dest='sourcedir', metavar='DIR',
help='source directory')
p.add_option('-A', '--arch', dest='arch', metavar='ARCH',
help='architecture to use')
options, dirs = p.parse_args()
print "options.existingbuild:",options.existingbuild
options.buildbase = options.existingbuild
print "options.buildbase:",options.buildbase
options.machines = None
if len(dirs) == 0:
p.error('no result directories specified')
# check validity of result dirs
for d in dirs:
if not (os.path.isdir(d) and os.access(d, os.W_OK)
and os.access(os.path.join(d, 'description.txt'), os.R_OK)):
p.error('invalid results directory %s' % d)
debug.current_level = options.debuglevel
return dirs,options
def main(dirs, options=None):
for dirname in dirs:
debug.log('reprocessing %s' % dirname)
debug.verbose('parse %s/description.txt for test' % dirname)
testname = test = None
f = open(os.path.join(dirname, 'description.txt'), 'r')
for line in f:
m = re.match(r'test:\s+(.*)', line)
if m:
testname = m.group(1)
break
f.close()
if not testname:
debug.error('unable to parse description for %s, skipped' % dirname)
continue
debug.verbose('locate test "%s"' % testname)
for t in tests.all_tests:
if t.name.lower() == testname.lower():
test = t(options)
if not test:
debug.error('unknown test "%s" in %s, skipped' % (testname, dirname))
continue
debug.verbose('reprocess results')
h = harness.Harness()
h.process_results(test, dirname)
if __name__ == "__main__":
dirs, options = parse_args()
main(dirs, options=options)