Chromium Code Reviews| Index: tools/run-tests.py |
| diff --git a/tools/run-tests.py b/tools/run-tests.py |
| index bd8330f5ae0284a903a2731c57d59c6661972810..e64dd6ced35c83a80010ef47bd579d25d0d994de 100755 |
| --- a/tools/run-tests.py |
| +++ b/tools/run-tests.py |
| @@ -303,12 +303,22 @@ def BuildOptions(): |
| default="v8tests") |
| result.add_option("--random-seed", default=0, dest="random_seed", |
| help="Default seed for initializing random generator") |
| + result.add_option("--random-seed-stress-count", default=1, type="int", |
| + dest="random_seed_stress_count", |
| + help="Number of runs with different random seeds") |
| result.add_option("--msan", |
| help="Regard test expectations for MSAN", |
| default=False, action="store_true") |
| return result |
| +def RandomSeed(): |
| + seed = 0 |
| + while not seed: |
| + seed = random.SystemRandom().randint(-2147483648, 2147483647) |
| + return seed |
| + |
| + |
| def ProcessOptions(options): |
| global VARIANT_FLAGS |
| global VARIANTS |
| @@ -373,8 +383,8 @@ def ProcessOptions(options): |
| if options.j == 0: |
| options.j = multiprocessing.cpu_count() |
| - while options.random_seed == 0: |
| - options.random_seed = random.SystemRandom().randint(-2147483648, 2147483647) |
| + if options.random_seed_stress_count <= 1: |
|
Jakob Kummerow
2015/06/11 08:50:35
Shouldn't this condition include a check that opti
Michael Achenbach
2015/06/11 09:45:05
Good catch!
|
| + options.random_seed = RandomSeed() |
| def excl(*args): |
| """Returns true if zero or one of multiple arguments are true.""" |
| @@ -596,9 +606,26 @@ def Execute(arch, mode, args, options, suites, workspace): |
| verbose.PrintTestSource(s.tests) |
| continue |
| variant_flags = [VARIANT_FLAGS[var] for var in VARIANTS] |
| - s.tests = [ t.CopyAddingFlags(v) |
| - for t in s.tests |
| - for v in s.VariantFlags(t, variant_flags) ] |
| + variant_tests = [ t.CopyAddingFlags(v) |
| + for t in s.tests |
| + for v in s.VariantFlags(t, variant_flags) ] |
| + |
| + if options.random_seed_stress_count > 1: |
| + # Duplicate test for random seed stress mode. |
| + def iter_seed_flags(): |
| + for i in range(0, options.random_seed_stress_count): |
| + # Use given random seed for all runs or a new random seed if none |
| + # is specified. |
| + seed = options.random_seed or RandomSeed() |
| + yield ["--random-seed=%s" % str(seed)] |
|
Jakob Kummerow
2015/06/11 08:50:35
nit: explicit str() is not necessary when using %s
Michael Achenbach
2015/06/11 09:45:05
Done.
|
| + s.tests = [ |
| + t.CopyAddingFlags(v) |
| + for t in variant_tests |
| + for v in iter_seed_flags() |
| + ] |
| + else: |
| + s.tests = variant_tests |
| + |
| s.tests = ShardTests(s.tests, options.shard_count, options.shard_run) |
| num_tests += len(s.tests) |