summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Yourtchenko <ayourtch@gmail.com>2021-01-20 20:30:36 +0000
committerAndrew Yourtchenko <ayourtch@gmail.com>2021-02-08 15:32:04 +0000
commitc8eae8d28aa6c9fb946a8be5b1731e0e79d7cdff (patch)
treef181c1f79a2d4c7970761af120285937596d293f
parent7f23ecd151be06ac6f234224628ea305c5e0b41c (diff)
tests: allow for externally supplied VPP workers config for tests
Allow to supply the external VPP worker config for tests which do not specify the workers config explicitly, and use the tags infra to flag those that need attention in this configuration. This commit shows one example use of such a tag, there will be a separate commit with the rest of the places needing it, since that change is rather mechanical. Thus, the assumption is that the test should by default be agnostic of the VPP configuration, unless it explicitly specifies so. Type: test Change-Id: I3c0077e4e22a75cb9561fb98d3b783b93486b2be Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
-rw-r--r--src/plugins/acl/test/test_acl_plugin.py2
-rw-r--r--test/framework.py18
-rwxr-xr-xtest/test_util.py9
3 files changed, 28 insertions, 1 deletions
diff --git a/src/plugins/acl/test/test_acl_plugin.py b/src/plugins/acl/test/test_acl_plugin.py
index d5e195fe44b..53d96215949 100644
--- a/src/plugins/acl/test/test_acl_plugin.py
+++ b/src/plugins/acl/test/test_acl_plugin.py
@@ -11,6 +11,7 @@ from scapy.layers.inet import IP, TCP, UDP, ICMP
from scapy.layers.inet6 import IPv6, ICMPv6EchoRequest
from scapy.layers.inet6 import IPv6ExtHdrFragment
from framework import VppTestCase, VppTestRunner
+from framework import tag_fixme_vpp_workers
from util import Host, ppp
from ipaddress import IPv4Network, IPv6Network
@@ -19,6 +20,7 @@ from vpp_acl import AclRule, VppAcl, VppAclInterface, VppEtypeWhitelist
from vpp_ip import INVALID_INDEX
+@tag_fixme_vpp_workers
class TestACLplugin(VppTestCase):
""" ACL plugin Test Case """
diff --git a/test/framework.py b/test/framework.py
index 7ab5b453b8e..c9ecafd2bca 100644
--- a/test/framework.py
+++ b/test/framework.py
@@ -257,7 +257,11 @@ class KeepAliveReporter(object):
class TestCaseTag(Enum):
+ # marks the suites that must run at the end
+ # using only a single test runner
RUN_SOLO = 1
+ # marks the suites broken on VPP multi-worker
+ FIXME_VPP_WORKERS = 2
def create_tag_decorator(e):
@@ -269,7 +273,9 @@ def create_tag_decorator(e):
return cls
return decorator
+
tag_run_solo = create_tag_decorator(TestCaseTag.RUN_SOLO)
+tag_fixme_vpp_workers = create_tag_decorator(TestCaseTag.FIXME_VPP_WORKERS)
class VppTestCase(unittest.TestCase):
@@ -398,7 +404,10 @@ class VppTestCase(unittest.TestCase):
cpu_core_number = cls.get_least_used_cpu()
if not hasattr(cls, "worker_config"):
- cls.worker_config = ""
+ cls.worker_config = os.getenv("VPP_WORKER_CONFIG", "")
+ if cls.worker_config != "":
+ if cls.has_tag(TestCaseTag.FIXME_VPP_WORKERS):
+ cls.worker_config = ""
default_variant = os.getenv("VARIANT")
if default_variant is not None:
@@ -1435,6 +1444,13 @@ class VppTestResult(unittest.TestResult):
c = YELLOW
test_title_colored = colorize("SOLO RUN: " + test_title, c)
+ # This block may overwrite the colorized title above,
+ # but we want this to stand out and be fixed
+ if test.has_tag(TestCaseTag.FIXME_VPP_WORKERS):
+ c = RED
+ w = "FIXME with VPP workers: "
+ test_title_colored = colorize(w + test_title, c)
+
if not hasattr(test.__class__, '_header_printed'):
print(double_line_delim)
print(test_title_colored)
diff --git a/test/test_util.py b/test/test_util.py
index eb20531505e..421afce4d5d 100755
--- a/test/test_util.py
+++ b/test/test_util.py
@@ -14,6 +14,15 @@ class TestUtil (unittest.TestCase):
""" if the test case class is timing-sensitive - return true """
return False
+ @classmethod
+ def has_tag(cls, tag):
+ """ if the test case has a given tag - return true """
+ try:
+ return tag in cls.test_tags
+ except AttributeError:
+ pass
+ return False
+
def test_mac_to_binary(self):
""" MAC to binary and back """
mac = 'aa:bb:cc:dd:ee:ff'