diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-11-15 01:02:09 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-15 01:02:09 +0000 |
commit | 40c67b5832877935a555fc63bfaa735332c79700 (patch) | |
tree | a12dd454414df2b467b39abcd5e2fe2eee46d2e9 /utils/lit/lit.py | |
parent | bfa092958393ec621767771f9f168e7ff973a179 (diff) |
lit: Add --repeat=N option, for running each test N times.
- Currently just useful for timing, although it could be extended as one (bad) way to deal with flaky tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88827 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/lit/lit.py')
-rwxr-xr-x | utils/lit/lit.py | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/utils/lit/lit.py b/utils/lit/lit.py index 70bd060579..dcdce7d5c3 100755 --- a/utils/lit/lit.py +++ b/utils/lit/lit.py @@ -388,6 +388,9 @@ def main(): group.add_option("", "--no-tcl-as-sh", dest="useTclAsSh", help="Don't run Tcl scripts using 'sh'", action="store_false", default=True) + group.add_option("", "--repeat", dest="repeatTests", metavar="N", + help="Repeat tests N times (for timing)", + action="store", default=None, type=int) parser.add_option_group(group) (opts, args) = parser.parse_args() @@ -472,6 +475,11 @@ def main(): header = '-- Testing: %d%s tests, %d threads --'%(len(tests),extra, opts.numThreads) + if opts.repeatTests: + tests = [t.copyWithIndex(i) + for t in tests + for i in range(opts.repeatTests)] + progressBar = None if not opts.quiet: if opts.succinct and opts.useProgressBar: @@ -524,11 +532,16 @@ def main(): print if opts.timeTests: - byTime = list(tests) - byTime.sort(key = lambda t: t.elapsed) + # Collate, in case we repeated tests. + times = {} + for t in tests: + key = t.getFullName() + times[key] = times.get(key, 0.) + t.elapsed + + byTime = list(times.items()) + byTime.sort(key = lambda (name,elapsed): elapsed) if byTime: - Util.printHistogram([(t.getFullName(), t.elapsed) for t in byTime], - title='Tests') + Util.printHistogram(byTime, title='Tests') for name,code in (('Expected Passes ', Test.PASS), ('Expected Failures ', Test.XFAIL), |