tests: Add support for getting corefile patterns on FreeBSD
[vpp.git] / test / config.py
index d2f14c8..32cc4ca 100644 (file)
@@ -2,11 +2,12 @@ import argparse
 import os
 import psutil
 import time
+from vpp_qemu_utils import can_create_namespaces
 
 
 def positive_int_or_default(default):
     def positive_integer(v):
-        if v is None or v == "":
+        if v is None or v == "" or int(v) == default:
             return default
         if int(v) <= 0:
             raise ValueError("value must be positive")
@@ -17,7 +18,7 @@ def positive_int_or_default(default):
 
 def positive_float_or_default(default):
     def positive_float(v):
-        if v is None or v == "":
+        if v is None or v == "" or float(v) == default:
             return default
         if float(v) <= 0:
             raise ValueError("value must be positive")
@@ -122,7 +123,8 @@ parser.add_argument(
 )
 
 filter_help_string = """\
-expression consists of 3 string selectors separated by '.' separators:
+expression consists of one or more filters separated by commas (',')
+filter consists of 3 string selectors separated by dots ('.')
 
     <file>.<class>.<function>
 
@@ -142,6 +144,8 @@ examples:
    test_add_bfd from test_bfd.py/BFDAPITestCase
 4. '.*.test_add_bfd' selects all test functions named test_add_bfd
    from all files/classes
+5. 'bfd,ip4,..test_icmp_error' selects all test functions in test_bfd.py,
+   test_ip4.py and all test functions named 'test_icmp_error' in all files
 """
 parser.add_argument(
     "--filter", action="store", metavar="FILTER_EXPRESSION", help=filter_help_string
@@ -188,10 +192,16 @@ parser.add_argument(
 )
 
 parser.add_argument("--extended", action="store_true", help="run extended tests")
+parser.add_argument(
+    "--skip-netns-tests",
+    action="store_true",
+    help="skip tests involving netns operations",
+)
 
 parser.add_argument(
     "--sanity", action="store_true", help="perform sanity vpp run before running tests"
 )
+parser.add_argument("--api-preload", action="store_true", help="preload API files")
 
 parser.add_argument(
     "--force-foreground",
@@ -377,6 +387,15 @@ parser.add_argument(
     help="Runs tests against a running VPP.",
 )
 
+parser.add_argument(
+    "--excluded-plugin",
+    dest="excluded_plugins",
+    required=False,
+    action="append",
+    default=[],
+    help="Exclude the tests that indicate they require this plugin(s)",
+)
+
 parser.add_argument(
     "-d",
     "--socket-dir",
@@ -390,6 +409,14 @@ parser.add_argument(
     "/var/run/user/${uid}/vpp.",
 )
 
+default_decode_pcaps = False
+parser.add_argument(
+    "--decode-pcaps",
+    action="store_true",
+    default=default_decode_pcaps,
+    help=f"if set, decode all pcap files from a test run (default: {default_decode_pcaps})",
+)
+
 config = parser.parse_args()
 
 ws = config.vpp_ws_dir
@@ -441,6 +468,10 @@ elif config.max_vpp_cpus > 0:
 else:
     max_vpp_cpus = num_cpus
 
+if not config.skip_netns_tests:
+    if not can_create_namespaces():
+        config.skip_netns_tests = True
+
 if __name__ == "__main__":
     print("Provided arguments:")
     for i in config.__dict__: