diff options
author | Klement Sekera <ksekera@cisco.com> | 2019-11-05 11:18:25 +0000 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2019-11-18 13:17:57 +0000 |
commit | fc000f0e1d61a9361e364a8f757e416fad7883b7 (patch) | |
tree | c579b945cd990f477d9c55c66c24893da6205e1a | |
parent | 329c884aa27398523377736f51a2694ec2c4820d (diff) |
tests: support setting random seed
Log the random seed used when running tests and provide means to re-use
it in a later run.
Type: feature
Change-Id: I18d2a36ee802b901d4cca5577df41cec07f09cc0
Signed-off-by: Klement Sekera <ksekera@cisco.com>
(cherry picked from commit 45a95dd782b91e9ae5665b5f95be4b6d7f99b879)
-rw-r--r-- | test/Makefile | 2 | ||||
-rw-r--r-- | test/framework.py | 4 | ||||
-rw-r--r-- | test/run_tests.py | 5 | ||||
-rw-r--r-- | test/sanity_run_vpp.py | 3 |
4 files changed, 13 insertions, 1 deletions
diff --git a/test/Makefile b/test/Makefile index abc611c44d9..2a09bcc6d24 100644 --- a/test/Makefile +++ b/test/Makefile @@ -341,6 +341,8 @@ help: @echo "" @echo " SOCKET=1 - Communicate with VPP over Unix domain socket instead of SHM" @echo "" + @echo " RND_SEED=seed - Seed RND with given seed" + @echo "" @echo "Creating test documentation" @echo " test-doc - generate documentation for test framework" @echo " test-wipe-doc - wipe documentation for test framework" diff --git a/test/framework.py b/test/framework.py index 4e43224c302..046a601e3e3 100644 --- a/test/framework.py +++ b/test/framework.py @@ -500,8 +500,9 @@ class VppTestCase(unittest.TestCase): """ super(VppTestCase, cls).setUpClass() gc.collect() # run garbage collection first - random.seed() cls.logger = get_logger(cls.__name__) + seed = os.environ["RND_SEED"] + random.seed(seed) if hasattr(cls, 'parallel_handler'): cls.logger.addHandler(cls.parallel_handler) cls.logger.propagate = False @@ -522,6 +523,7 @@ class VppTestCase(unittest.TestCase): os.chdir(cls.tempdir) cls.logger.info("Temporary dir is %s, shm prefix is %s", cls.tempdir, cls.shm_prefix) + cls.logger.debug("Random seed is %s" % seed) cls.setUpConstants() cls.reset_packet_infos() cls._captures = [] diff --git a/test/run_tests.py b/test/run_tests.py index c9c5bdb8a6e..8b9ff907296 100644 --- a/test/run_tests.py +++ b/test/run_tests.py @@ -732,6 +732,11 @@ def parse_digit_env(env_var, default): if __name__ == '__main__': + if "RND_SEED" not in os.environ: + os.environ["RND_SEED"] = str(time.time()) + print("Setting RND_SEED=%s" % os.environ["RND_SEED"]) + else: + print("Using provided RND_SEED=%s" % os.environ["RND_SEED"]) verbose = parse_digit_env("V", 0) test_timeout = parse_digit_env("TIMEOUT", 600) # default = 10 minutes diff --git a/test/sanity_run_vpp.py b/test/sanity_run_vpp.py index 92f250b2a6b..2ee7d310a35 100644 --- a/test/sanity_run_vpp.py +++ b/test/sanity_run_vpp.py @@ -3,6 +3,7 @@ from __future__ import print_function from multiprocessing import Pipe from sys import exit +import os from framework import VppDiedError, VppTestCase, KeepAliveReporter @@ -10,7 +11,9 @@ class SanityTestCase(VppTestCase): """ Sanity test case - verify whether VPP is able to start """ pass + if __name__ == '__main__': + os.environ["RND_SEED"] = "1" rc = 0 tc = SanityTestCase x, y = Pipe() |