make test: automatically seed random generator
Change-Id: I286b61d41cc2b557de3eb8801ff95c643f680acd Signed-off-by: Klement Sekera <ksekera@cisco.com>
This commit is contained in:

committed by
Damjan Marion

parent
b79d886ff4
commit
6a6f4f7fe7
@ -10,6 +10,7 @@ import tempfile
|
||||
import time
|
||||
import resource
|
||||
import faulthandler
|
||||
import random
|
||||
from collections import deque
|
||||
from threading import Thread, Event
|
||||
from inspect import getdoc, isclass
|
||||
@ -68,23 +69,45 @@ class _PacketInfo(object):
|
||||
|
||||
def pump_output(testclass):
|
||||
""" pump output from vpp stdout/stderr to proper queues """
|
||||
stdout_fragment = ""
|
||||
stderr_fragment = ""
|
||||
while not testclass.pump_thread_stop_flag.wait(0):
|
||||
readable = select.select([testclass.vpp.stdout.fileno(),
|
||||
testclass.vpp.stderr.fileno(),
|
||||
testclass.pump_thread_wakeup_pipe[0]],
|
||||
[], [])[0]
|
||||
if testclass.vpp.stdout.fileno() in readable:
|
||||
read = os.read(testclass.vpp.stdout.fileno(), 1024)
|
||||
testclass.vpp_stdout_deque.append(read)
|
||||
if not testclass.cache_vpp_output:
|
||||
for line in read.splitlines():
|
||||
testclass.logger.debug("VPP STDOUT: %s" % line)
|
||||
read = os.read(testclass.vpp.stdout.fileno(), 102400)
|
||||
if len(read) > 0:
|
||||
split = read.splitlines(True)
|
||||
if len(stdout_fragment) > 0:
|
||||
split[0] = "%s%s" % (stdout_fragment, split[0])
|
||||
if len(split) > 0 and split[-1].endswith("\n"):
|
||||
limit = None
|
||||
else:
|
||||
limit = -1
|
||||
stdout_fragment = split[-1]
|
||||
testclass.vpp_stdout_deque.extend(split[:limit])
|
||||
if not testclass.cache_vpp_output:
|
||||
for line in split[:limit]:
|
||||
testclass.logger.debug(
|
||||
"VPP STDOUT: %s" % line.rstrip("\n"))
|
||||
if testclass.vpp.stderr.fileno() in readable:
|
||||
read = os.read(testclass.vpp.stderr.fileno(), 1024)
|
||||
testclass.vpp_stderr_deque.append(read)
|
||||
if not testclass.cache_vpp_output:
|
||||
for line in read.splitlines():
|
||||
testclass.logger.debug("VPP STDERR: %s" % line)
|
||||
read = os.read(testclass.vpp.stderr.fileno(), 102400)
|
||||
if len(read) > 0:
|
||||
split = read.splitlines(True)
|
||||
if len(stderr_fragment) > 0:
|
||||
split[0] = "%s%s" % (stderr_fragment, split[0])
|
||||
if len(split) > 0 and split[-1].endswith("\n"):
|
||||
limit = None
|
||||
else:
|
||||
limit = -1
|
||||
stderr_fragment = split[-1]
|
||||
testclass.vpp_stderr_deque.extend(split[:limit])
|
||||
if not testclass.cache_vpp_output:
|
||||
for line in split[:limit]:
|
||||
testclass.logger.debug(
|
||||
"VPP STDERR: %s" % line.rstrip("\n"))
|
||||
# ignoring the dummy pipe here intentionally - the flag will take care
|
||||
# of properly terminating the loop
|
||||
|
||||
@ -294,6 +317,7 @@ class VppTestCase(unittest.TestCase):
|
||||
Remove shared memory files, start vpp and connect the vpp-api
|
||||
"""
|
||||
gc.collect() # run garbage collection first
|
||||
random.seed()
|
||||
cls.logger = getLogger(cls.__name__)
|
||||
cls.tempdir = tempfile.mkdtemp(
|
||||
prefix='vpp-unittest-%s-' % cls.__name__)
|
||||
|
Reference in New Issue
Block a user