aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKlement Sekera <ksekera@cisco.com>2017-11-09 09:16:39 +0100
committerDamjan Marion <dmarion.lists@gmail.com>2017-11-10 20:23:18 +0000
commit6a6f4f7fe777dc77f8496fae1fc1075372ad16b6 (patch)
tree2bd81ebb24c095b7648fbce5e5c82357c91dde27
parentb79d886ff411e402818e0d172d7c3facd1da00d8 (diff)
make test: automatically seed random generator
Change-Id: I286b61d41cc2b557de3eb8801ff95c643f680acd Signed-off-by: Klement Sekera <ksekera@cisco.com>
-rw-r--r--test/framework.py44
-rw-r--r--test/test_acl_plugin.py2
-rw-r--r--test/test_nat.py2
3 files changed, 34 insertions, 14 deletions
diff --git a/test/framework.py b/test/framework.py
index 00f55ad893e..3386c201e33 100644
--- a/test/framework.py
+++ b/test/framework.py
@@ -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__)
diff --git a/test/test_acl_plugin.py b/test/test_acl_plugin.py
index cd375a2cea7..4d748921aaf 100644
--- a/test/test_acl_plugin.py
+++ b/test/test_acl_plugin.py
@@ -85,8 +85,6 @@ class TestACLplugin(VppTestCase):
"""
super(TestACLplugin, cls).setUpClass()
- random.seed()
-
try:
# Create 2 pg interfaces
cls.create_pg_interfaces(range(2))
diff --git a/test/test_nat.py b/test/test_nat.py
index b01fe076754..6eb54dda2e7 100644
--- a/test/test_nat.py
+++ b/test/test_nat.py
@@ -704,8 +704,6 @@ class TestNAT44(MethodHolder):
cls.pg4._remote_ip4 = cls.pg9._remote_hosts[0]._ip4 = "10.0.0.2"
cls.pg9.resolve_arp()
- random.seed()
-
except Exception:
super(TestNAT44, cls).tearDownClass()
raise