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)
This commit is contained in:
Klement Sekera 2019-11-05 11:18:25 +00:00 committed by Andrew Yourtchenko
parent 329c884aa2
commit fc000f0e1d
4 changed files with 13 additions and 1 deletions

View File

@ -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"

View File

@ -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 = []

View File

@ -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

View File

@ -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()