Index: tools/test.py |
=================================================================== |
--- tools/test.py (revision 6231) |
+++ tools/test.py (working copy) |
@@ -1181,6 +1181,12 @@ |
result.add_option("--crankshaft", |
help="Run with the --crankshaft flag", |
default=False, action="store_true") |
+ result.add_option("--shard-count", |
+ help="Split testsuites into this number of shards", |
+ default=1, type="int") |
+ result.add_option("--shard-run", |
+ help="Run this shard from the split up tests.", |
+ default=1, type="int") |
result.add_option("--noprof", help="Disable profiling support", |
default=False) |
return result |
@@ -1302,6 +1308,20 @@ |
millis = round(d * 1000) % 1000 |
return time.strftime("%M:%S.", time.gmtime(d)) + ("%03i" % millis) |
+def ShardTests(tests, options): |
+ if options.shard_count < 2: |
+ return tests |
+ if options.shard_run < 1 or options.shard_run > options.shard_count: |
+ print "shard-run not a valid number, should be in [1:shard-count]" |
+ print "defaulting back to running all tests" |
+ return tests |
+ count = 0; |
+ shard = [] |
+ for test in tests: |
+ if count % options.shard_count == options.shard_run - 1: |
+ shard.append(test); |
+ count += 1 |
+ return shard |
def Main(): |
parser = BuildOptions() |
@@ -1385,7 +1405,7 @@ |
globally_unused_rules = set(unused_rules) |
else: |
globally_unused_rules = globally_unused_rules.intersection(unused_rules) |
- all_cases += cases |
+ all_cases += ShardTests(cases, options) |
all_unused.append(unused_rules) |
if options.cat: |