[cfe-commits] r75396 - /cfe/trunk/utils/test/MultiTestRunner.py
Daniel Dunbar
daniel at zuster.org
Sat Jul 11 15:46:27 PDT 2009
Author: ddunbar
Date: Sat Jul 11 17:46:27 2009
New Revision: 75396
URL: http://llvm.org/viewvc/llvm-project?rev=75396&view=rev
Log:
Add --time-tests option to test runner, for profiling 'make test'.
Modified:
cfe/trunk/utils/test/MultiTestRunner.py
Modified: cfe/trunk/utils/test/MultiTestRunner.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/test/MultiTestRunner.py?rev=75396&r1=75395&r2=75396&view=diff
==============================================================================
--- cfe/trunk/utils/test/MultiTestRunner.py (original)
+++ cfe/trunk/utils/test/MultiTestRunner.py Sat Jul 11 17:46:27 2009
@@ -104,10 +104,11 @@
TestRunner.cat(tr.testResults, sys.stdout)
class TestResult:
- def __init__(self, path, code, testResults):
+ def __init__(self, path, code, testResults, elapsed):
self.path = path
self.code = code
self.testResults = testResults
+ self.elapsed = elapsed
def failed(self):
return self.code in (TestStatus.Fail,TestStatus.XPass)
@@ -163,24 +164,28 @@
numTests = len(self.provider.tests)
digits = len(str(numTests))
code = None
+ elapsed = None
try:
opts = self.provider.opts
if opts.debugDoNotTest:
code = None
else:
+ startTime = time.time()
code = TestRunner.runOneTest(path, command, output, testname,
opts.clang, opts.clangcc,
useValgrind=opts.useValgrind,
useDGCompat=opts.useDGCompat,
useScript=opts.testScript,
output=open(testresults,'w'))
+ elapsed = time.time() - startTime
except KeyboardInterrupt:
# This is a sad hack. Unfortunately subprocess goes
# bonkers with ctrl-c and we start forking merrily.
print 'Ctrl-C detected, goodbye.'
os.kill(0,9)
- self.provider.setResult(index, TestResult(path, code, testresults))
+ self.provider.setResult(index, TestResult(path, code, testresults,
+ elapsed))
def detectCPUs():
"""
@@ -252,6 +257,9 @@
parser.add_option("", "--debug-do-not-test", dest="debugDoNotTest",
help="DEBUG: Skip running actual test script",
action="store_true", default=False)
+ parser.add_option("", "--time-tests", dest="timeTests",
+ help="Track elapsed wall time for each test",
+ action="store_true", default=False)
parser.add_option("", "--path", dest="path",
help="Additional paths to add to testing environment",
action="store", type=str, default=None)
@@ -343,5 +351,11 @@
print '\nFailures: %d' % (numFailures,)
sys.exit(1)
+ if opts.timeTests:
+ provider.results.sort(key=lambda t: t and t.elapsed)
+ for tr in provider.results:
+ if tr:
+ print '%.2fs: %s' % (tr.elapsed, tr.path)
+
if __name__=='__main__':
main()
More information about the cfe-commits
mailing list