X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fconfig.py;h=32cc4cac5fa4e7ad095be5d196dd3da4f8aef177;hb=4941afb4f96a20df7dc8b6688f7921a3d713b77d;hp=c99d1ca66a629866112b0071db8ab27efcc4c77e;hpb=d9b0c6fbf7aa5bd9af84264105b39c82028a4a29;p=vpp.git diff --git a/test/config.py b/test/config.py index c99d1ca66a6..32cc4cac5fa 100644 --- a/test/config.py +++ b/test/config.py @@ -1,13 +1,13 @@ import argparse import os import psutil -import textwrap 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") @@ -18,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") @@ -119,11 +119,12 @@ parser.add_argument( "--failed-dir", action="store", type=directory, - help="directory containing failed tests", + help="directory containing failed tests (default: --tmp-dir)", ) 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 ('.') .. @@ -143,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 @@ -189,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", @@ -302,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", @@ -357,8 +374,47 @@ parser.add_argument( "--keep-pcaps", action="store_true", default=default_keep_pcaps, - help="if set, keep all pcap files from a test run" - f" (default: {default_keep_pcaps})", + 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() @@ -397,7 +453,10 @@ 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}" available_cpus = psutil.Process().cpu_affinity() num_cpus = len(available_cpus) @@ -409,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__: