X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fconfig.py;h=32cc4cac5fa4e7ad095be5d196dd3da4f8aef177;hb=refs%2Fchanges%2F23%2F40723%2F2;hp=b94dbcb10d7677c4c8dc69372d77ecea6d619257;hpb=152a9b6165c640bd551447e87a68132709864b67;p=vpp.git diff --git a/test/config.py b/test/config.py index b94dbcb10d7..32cc4cac5fa 100644 --- a/test/config.py +++ b/test/config.py @@ -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 ('.') .. @@ -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", @@ -301,6 +311,14 @@ parser.add_argument( help="directory containing external plugins", ) +parser.add_argument( + "--extern-apidir", + action="append", + type=directory, + default=[], + help="directory to look for API JSON files", +) + parser.add_argument( "--coredump-size", action="store", @@ -359,6 +377,46 @@ parser.add_argument( help=f"if set, keep all pcap files from a test run (default: {default_keep_pcaps})", ) +parser.add_argument( + "-r", + "--use-running-vpp", + dest="running_vpp", + required=False, + action="store_true", + default=False, + 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", + dest="socket_dir", + required=False, + action="store", + default="", + help="Relative or absolute path to running VPP's socket directory.\n" + "The directory must contain VPP's socket files:api.sock & stats.sock.\n" + "Default: /var/run/vpp if VPP is started as the root user, else " + "/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 @@ -395,7 +453,7 @@ config.test_src_dir = test_dirs if config.venv_dir is None: - config.venv_dir = f"{ws}/test/venv" + config.venv_dir = f"{ws}/build-root/test/venv" if config.failed_dir is None: config.failed_dir = f"{config.tmp_dir}" @@ -410,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__: