diff options
-rw-r--r-- | src/plugins/acl/test/test_acl_plugin.py | 2 | ||||
-rw-r--r-- | test/framework.py | 18 | ||||
-rwxr-xr-x | test/test_util.py | 9 |
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' |