| Index: tools/run-tests.py
|
| diff --git a/tools/run-tests.py b/tools/run-tests.py
|
| index bd8330f5ae0284a903a2731c57d59c6661972810..dc6ff9f7d63c5597afa2b598e388b1e071f163ee 100755
|
| --- a/tools/run-tests.py
|
| +++ b/tools/run-tests.py
|
| @@ -301,14 +301,24 @@ def BuildOptions():
|
| result.add_option("--junittestsuite",
|
| help="The testsuite name in the JUnit output file",
|
| default="v8tests")
|
| - result.add_option("--random-seed", default=0, dest="random_seed",
|
| + result.add_option("--random-seed", default=0, dest="random_seed", type="int",
|
| 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 and options.random_seed == 0:
|
| + options.random_seed = RandomSeed()
|
|
|
| def excl(*args):
|
| """Returns true if zero or one of multiple arguments are true."""
|
| @@ -596,9 +606,28 @@ 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 (set by default in execution.py)
|
| + # or a new random seed if none is specified.
|
| + if options.random_seed:
|
| + yield []
|
| + else:
|
| + yield ["--random-seed=%d" % RandomSeed()]
|
| + 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)
|
|
|
|
|