78 lines
2.7 KiB
Python
Executable File
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)
|