aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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'