summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Wallace <dwallacelf@gmail.com>2021-05-12 21:43:59 -0400
committerDamjan Marion <dmarion@me.com>2021-05-13 09:33:06 +0000
commiteddd8e3588561039985b27edf059db6033bfdfab (patch)
tree44896887d6070853ea77a18cae218f5d4ef4d93a
parentfd77f8c00c8e9d528d91a9cefae1878e383582ed (diff)
tests: move test source to vpp/test
- Generate copyright year and version instead of using hard-coded data Type: refactor Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I6058f5025323b3aa483f5df4a2c4371e27b5914e
-rw-r--r--.gitignore5
l---------src/plugins/srv6-am/test/vpp_srv6.py1
l---------src/plugins/srv6-as/test/vpp_srv6.py1
-rw-r--r--test/Makefile41
-rw-r--r--test/bfd.py (renamed from src/vnet/bfd/test/bfd.py)0
-rw-r--r--test/doc/Makefile5
-rw-r--r--test/doc/conf.py13
-rw-r--r--test/test_abf.py (renamed from src/plugins/abf/test/test_abf.py)0
-rw-r--r--test/test_acl_plugin.py (renamed from src/plugins/acl/test/test_acl_plugin.py)0
-rw-r--r--test/test_acl_plugin_conns.py (renamed from src/plugins/acl/test/test_acl_plugin_conns.py)0
-rw-r--r--test/test_acl_plugin_l2l3.py (renamed from src/plugins/acl/test/test_acl_plugin_l2l3.py)0
-rw-r--r--test/test_acl_plugin_macip.py (renamed from src/plugins/acl/test/test_acl_plugin_macip.py)0
-rw-r--r--test/test_adl.py (renamed from src/plugins/adl/test/test_adl.py)0
-rw-r--r--test/test_arping.py (renamed from src/plugins/arping/test/test_arping.py)0
-rw-r--r--test/test_bfd.py (renamed from src/vnet/bfd/test/test_bfd.py)0
-rw-r--r--test/test_bier.py (renamed from src/vnet/bier/test/test_bier.py)0
-rw-r--r--test/test_bihash.py (renamed from src/vppinfra/test/test_bihash.py)0
-rw-r--r--test/test_bond.py (renamed from src/vnet/bonding/test/test_bond.py)0
-rw-r--r--test/test_buffers.py (renamed from src/vlib/test/test_buffers.py)0
-rw-r--r--test/test_cdp.py (renamed from src/plugins/cdp/test/test_cdp.py)0
-rw-r--r--test/test_classifier.py (renamed from src/vnet/classify/test/test_classifier.py)0
-rw-r--r--test/test_classifier_ip6.py (renamed from src/vnet/classify/test/test_classifier_ip6.py)0
-rw-r--r--test/test_classify_l2_acl.py (renamed from src/plugins/acl/test/test_classify_l2_acl.py)0
-rw-r--r--test/test_cli.py (renamed from src/vlib/test/test_cli.py)0
-rw-r--r--test/test_cnat.py (renamed from src/plugins/cnat/test/test_cnat.py)0
-rw-r--r--test/test_counters.py (renamed from src/vlib/test/test_counters.py)0
-rw-r--r--test/test_crypto.py (renamed from src/vnet/crypto/test/test_crypto.py)0
-rw-r--r--test/test_det44.py (renamed from src/plugins/nat/test/test_det44.py)0
-rw-r--r--test/test_dhcp.py (renamed from src/plugins/dhcp/test/test_dhcp.py)0
-rw-r--r--test/test_dhcp6.py (renamed from src/plugins/dhcp/test/test_dhcp6.py)0
-rw-r--r--test/test_dns.py (renamed from src/plugins/dns/test/test_dns.py)0
-rw-r--r--test/test_dslite.py (renamed from src/plugins/nat/test/test_dslite.py)0
-rw-r--r--test/test_dvr.py (renamed from src/vnet/fib/test/test_dvr.py)0
-rw-r--r--test/test_endian.py (renamed from src/vpp-api/test/test_endian.py)0
-rw-r--r--test/test_fib.py (renamed from src/vnet/fib/test/test_fib.py)0
-rw-r--r--test/test_flowprobe.py (renamed from src/plugins/flowprobe/test/test_flowprobe.py)0
-rw-r--r--test/test_gbp.py (renamed from src/plugins/gbp/test/test_gbp.py)0
-rw-r--r--test/test_geneve.py (renamed from src/plugins/geneve/test/test_geneve.py)0
-rw-r--r--test/test_gre.py (renamed from src/vnet/gre/test/test_gre.py)0
-rw-r--r--test/test_gro.py (renamed from src/vnet/gso/test/test_gro.py)0
-rw-r--r--test/test_gso.py (renamed from src/vnet/gso/test/test_gso.py)0
-rw-r--r--test/test_gtpu.py (renamed from src/plugins/gtpu/test/test_gtpu.py)0
-rw-r--r--test/test_igmp.py (renamed from src/plugins/igmp/test/test_igmp.py)0
-rw-r--r--test/test_ikev2.py (renamed from src/plugins/ikev2/test/test_ikev2.py)0
-rw-r--r--test/test_ipsec_nat.py (renamed from src/plugins/nat/test/test_ipsec_nat.py)0
-rw-r--r--test/test_l2tp.py (renamed from src/plugins/l2tp/test/test_l2tp.py)0
-rw-r--r--test/test_l3xc.py (renamed from src/plugins/l3xc/test/test_l3xc.py)0
-rw-r--r--test/test_lacp.py (renamed from src/plugins/lacp/test/test_lacp.py)0
-rw-r--r--test/test_lb.py (renamed from src/plugins/lb/test/test_lb.py)0
-rw-r--r--test/test_lb_api.py (renamed from src/plugins/lb/test/test_lb_api.py)0
-rw-r--r--test/test_linux_cp.py (renamed from src/plugins/linux-cp/test/test_linux_cp.py)0
-rw-r--r--test/test_lisp.py (renamed from src/plugins/lisp/test/test_lisp.py)0
-rw-r--r--test/test_mactime.py (renamed from src/plugins/mactime/test/test_mactime.py)0
-rw-r--r--test/test_map.py (renamed from src/plugins/map/test/test_map.py)0
-rw-r--r--test/test_map_br.py (renamed from src/plugins/map/test/test_map_br.py)0
-rw-r--r--test/test_memif.py (renamed from src/plugins/memif/test/test_memif.py)0
-rw-r--r--test/test_mss_clamp.py (renamed from src/plugins/mss_clamp/test/test_mss_clamp.py)0
-rw-r--r--test/test_nat44_ed.py (renamed from src/plugins/nat/test/test_nat44_ed.py)0
-rw-r--r--test/test_nat44_ei.py (renamed from src/plugins/nat/test/test_nat44_ei.py)0
-rw-r--r--test/test_nat64.py (renamed from src/plugins/nat/test/test_nat64.py)0
-rw-r--r--test/test_nat66.py (renamed from src/plugins/nat/test/test_nat66.py)0
-rw-r--r--test/test_ping.py (renamed from src/plugins/ping/test/test_ping.py)0
-rw-r--r--test/test_pnat.py (renamed from src/plugins/nat/test/test_pnat.py)0
-rw-r--r--test/test_policer.py (renamed from src/vnet/policer/test/test_policer.py)0
-rw-r--r--test/test_policer_input.py (renamed from src/vnet/policer/test/test_policer_input.py)0
-rw-r--r--test/test_pppoe.py (renamed from src/plugins/pppoe/test/test_pppoe.py)0
-rw-r--r--test/test_quic.py (renamed from src/plugins/quic/test/test_quic.py)0
-rw-r--r--test/test_srv6.py (renamed from src/plugins/srv6-am/test/test_srv6.py)0
-rw-r--r--test/test_srv6_ad.py (renamed from src/plugins/srv6-ad/test/test_srv6_ad.py)0
-rw-r--r--test/test_srv6_ad_flow.py (renamed from src/plugins/srv6-ad-flow/test/test_srv6_ad_flow.py)0
-rwxr-xr-xtest/test_srv6_as.py (renamed from src/plugins/srv6-as/test/test_srv6_as.py)0
-rw-r--r--test/test_srv6_mobile.py (renamed from src/plugins/srv6-mobile/test/test_srv6_mobile.py)0
-rw-r--r--test/test_svs.py (renamed from src/plugins/svs/test/test_svs.py)0
-rw-r--r--test/test_urpf.py (renamed from src/plugins/urpf/test/test_urpf.py)0
-rw-r--r--test/test_vapi.py (renamed from src/vpp-api/test/test_vapi.py)0
-rw-r--r--test/test_vpe_api.py (renamed from src/vpp-api/test/test_vpe_api.py)0
-rw-r--r--test/test_vppinfra.py (renamed from src/vppinfra/test/test_vppinfra.py)0
-rw-r--r--test/test_vrrp.py (renamed from src/plugins/vrrp/test/test_vrrp.py)0
-rw-r--r--test/test_vxlan.py (renamed from src/vnet/vxlan/test/test_vxlan.py)0
-rw-r--r--test/test_vxlan6.py (renamed from src/vnet/vxlan/test/test_vxlan6.py)0
-rw-r--r--test/test_vxlan_gbp.py (renamed from src/vnet/vxlan/test/test_vxlan_gbp.py)0
-rw-r--r--test/test_vxlan_gpe.py (renamed from src/vnet/vxlan/test/test_vxlan_gpe.py)0
-rwxr-xr-xtest/test_wireguard.py (renamed from src/plugins/wireguard/test/test_wireguard.py)0
-rw-r--r--test/vpp_acl.py (renamed from src/plugins/acl/test/vpp_acl.py)0
-rw-r--r--test/vpp_bier.py (renamed from src/vnet/bier/test/vpp_bier.py)0
-rw-r--r--test/vpp_bond_interface.py (renamed from src/vnet/bonding/test/vpp_bond_interface.py)0
-rw-r--r--test/vpp_dhcp.py (renamed from src/plugins/dhcp/test/vpp_dhcp.py)0
-rw-r--r--test/vpp_igmp.py (renamed from src/plugins/igmp/test/vpp_igmp.py)0
-rw-r--r--test/vpp_ikev2.py (renamed from src/plugins/ikev2/test/vpp_ikev2.py)0
-rw-r--r--test/vpp_lb.py (renamed from src/plugins/lb/test/vpp_lb.py)0
-rw-r--r--test/vpp_memif.py (renamed from src/plugins/memif/test/vpp_memif.py)0
-rw-r--r--test/vpp_pppoe_interface.py (renamed from src/plugins/pppoe/test/vpp_pppoe_interface.py)0
-rw-r--r--test/vpp_srv6.py (renamed from src/plugins/srv6-ad/test/vpp_srv6.py)0
-rw-r--r--test/vpp_vxlan_gbp_tunnel.py (renamed from src/vnet/vxlan/test/vpp_vxlan_gbp_tunnel.py)0
-rw-r--r--test/vpp_vxlan_tunnel.py (renamed from src/vnet/vxlan/test/vpp_vxlan_tunnel.py)0
95 files changed, 25 insertions, 41 deletions
diff --git a/.gitignore b/.gitignore
index d91975e72a0..80c4e4f92c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,6 +20,9 @@
/test/run/
/test/build/
/test/coverage/
+/test/venv/
+/test/vapi_test/
+/test/doc/build/
/build-config.mk
/build/external/*.tar.gz
/build/external/*.tar.xz
@@ -117,4 +120,4 @@ compile_commands.json
/extras/vpptop/build/*
# debian packaging
-.pc \ No newline at end of file
+.pc
diff --git a/src/plugins/srv6-am/test/vpp_srv6.py b/src/plugins/srv6-am/test/vpp_srv6.py
deleted file mode 120000
index 78f756605fc..00000000000
--- a/src/plugins/srv6-am/test/vpp_srv6.py
+++ /dev/null
@@ -1 +0,0 @@
-../../srv6-ad/test/vpp_srv6.py \ No newline at end of file
diff --git a/src/plugins/srv6-as/test/vpp_srv6.py b/src/plugins/srv6-as/test/vpp_srv6.py
deleted file mode 120000
index 78f756605fc..00000000000
--- a/src/plugins/srv6-as/test/vpp_srv6.py
+++ /dev/null
@@ -1 +0,0 @@
-../../srv6-ad/test/vpp_srv6.py \ No newline at end of file
diff --git a/test/Makefile b/test/Makefile
index 0ee61a23c0b..82095883b55 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -13,14 +13,10 @@ ifndef TEST_DIR
$(error TEST_DIR is not set)
endif
-export TEST_BR = $(BR)/build-test
-export TEST_DOC_BR = $(TEST_BR)/doc
-export BUILD_TEST_SRC = $(TEST_BR)/src
+export TEST_BR = $(TEST_DIR)
+export TEST_DOC_BR = $(TEST_DIR)/doc/build
FAILED_DIR=/tmp/vpp-failed-unittests/
-PLUGIN_TEST_DIRS=$(shell find $(PLUGIN_SRC_DIR) -type d -name test -exec echo -n " -d {}" \;)
-CORE_TEST_DIRS=$(shell find $(WS_ROOT)/src -not \( -path $(INTERN_PLUGIN_SRC_DIR) -prune \) -type d -name test -exec echo -n " -d {}" \;)
-VPP_TEST_DIRS=$(shell ls -d $(TEST_DIR)$(PLUGIN_TEST_DIRS)$(CORE_TEST_DIRS) $(EXTERN_TESTS))
-VPP_TEST_SRC=$(shell for dir in $(VPP_TEST_DIRS) ; do ls $$dir/*.py 2>/dev/null; done)
+VPP_TEST_DIRS=$(shell ls -d $(TEST_DIR) $(EXTERN_TESTS))
FORCE_NO_WIPE=0
ifeq ($(DEBUG),gdb)
@@ -70,7 +66,7 @@ ifneq ($(EXTERN_TESTS),)
UNITTEST_EXTRA_OPTS=$(UNITTEST_FAILFAST_OPTS) -d $(EXTERN_TESTS)
endif
-VENV_PATH=$(TEST_BR)/venv
+VENV_PATH=$(TEST_DIR)/venv
ifeq ($(TEST_DEBUG),1)
VENV_RUN_DIR:=$(VENV_PATH)/run-debug
@@ -84,11 +80,6 @@ else
PYTHON_INTERP=$(PYTHON)
endif
-empty:=
-space:= $(empty) $(empty)
-export PYTHONPATH=$(subst $(space),:,$(VPP_TEST_DIRS))
-export PYTHONPYCACHEPREFIX=$(TEST_BR)/pycache
-
PYTHON_VERSION=$(shell $(PYTHON_INTERP) -c 'import sys; print(sys.version_info.major)')
PIP_VERSION=20.1.1
# Keep in sync with requirements.txt
@@ -158,7 +149,7 @@ PLUGIN_SRC_DIR=$(INTERN_PLUGIN_SRC_DIR)
endif
define retest-func
-@env VPP_IN_GDB=$(VPP_IN_GDB) FORCE_FOREGROUND=$(FORCE_FOREGROUND) FAILED_DIR=$(FAILED_DIR) VENV_PATH=$(VENV_PATH) scripts/setsid_wrapper.sh $(FORCE_FOREGROUND) $(VENV_PATH)/bin/activate $(PYTHON_INTERP) $(PYTHON_PROFILE_OPTS) $(BUILD_TEST_SRC)/run_tests.py -d $(BUILD_TEST_SRC) $(UNITTEST_EXTRA_OPTS) || env FAILED_DIR=$(FAILED_DIR) COMPRESS_FAILED_TEST_LOGS=$(COMPRESS_FAILED_TEST_LOGS) scripts/compress_failed.sh
+@env VPP_IN_GDB=$(VPP_IN_GDB) FORCE_FOREGROUND=$(FORCE_FOREGROUND) FAILED_DIR=$(FAILED_DIR) VENV_PATH=$(VENV_PATH) scripts/setsid_wrapper.sh $(FORCE_FOREGROUND) $(VENV_PATH)/bin/activate $(PYTHON_INTERP) $(PYTHON_PROFILE_OPTS) run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS) || env FAILED_DIR=$(FAILED_DIR) COMPRESS_FAILED_TEST_LOGS=$(COMPRESS_FAILED_TEST_LOGS) scripts/compress_failed.sh
endef
.PHONY: sanity
@@ -167,8 +158,8 @@ ifeq ($(SANITY),no)
SANITY_IMPORT_VPP_PAPI_CMD=true
SANITY_RUN_VPP_CMD=true
else
-SANITY_IMPORT_VPP_PAPI_CMD=source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) $(BUILD_TEST_SRC)/sanity_import_vpp_papi.py
-SANITY_RUN_VPP_CMD=source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) $(BUILD_TEST_SRC)/sanity_run_vpp.py
+SANITY_IMPORT_VPP_PAPI_CMD=source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) sanity_import_vpp_papi.py
+SANITY_RUN_VPP_CMD=source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) sanity_run_vpp.py
endif
ifndef TEST_JOBS
@@ -207,16 +198,11 @@ sanity: test-dep
ext-test-apps:
make -C ext test-apps
-$(BUILD_TEST_SRC): verify-env
- @rm -rf $@
- @mkdir -p $@
- @for file in $(VPP_TEST_SRC); do if [ ! -L $$file ] && [ ! -e $(BUILD_TEST_SRC)/$$(basename $$file) ] ; then ln -s $$file $(BUILD_TEST_SRC) ; fi ; done
-
$(FAILED_DIR): reset
@mkdir -p $@
.PHONY: test-dep
-test-dep: $(BUILD_TEST_SRC) $(PAPI_INSTALL_DONE) $(FAILED_DIR)
+test-dep: $(PAPI_INSTALL_DONE) $(FAILED_DIR)
.PHONY: test
test: test-dep ext-test-apps sanity
@@ -229,8 +215,6 @@ retest: verify-env sanity $(FAILED_DIR)
.PHONY: shell
shell: test-dep
@echo "source $(VENV_PATH)/bin/activate;\
- cd $(BUILD_TEST_SRC);\
- export PYTHONPATH=$(PYTHONPATH);\
export RND_SEED=$(RND_SEED);\
echo '***';\
echo PYTHONPATH=$(PYTHONPATH);\
@@ -259,14 +243,13 @@ wipe: reset
@make -C ext clean
@rm -rf $(VENV_PATH)
@rm -rf $(patsubst %,%/__pycache__, $(VPP_TEST_DIRS))
- @rm -rf $(BUILD_TEST_SRC)
$(TEST_DOC_BR): $(PIP_INSTALL_DONE)
@mkdir -p $@
@bash -c "source $(VENV_PATH)/bin/activate && make -C doc html"
.PHONY: doc
-doc: $(BUILD_TEST_SRC) $(PIP_PATCH_DONE) $(TEST_DOC_BR)
+doc: $(PIP_PATCH_DONE) $(TEST_DOC_BR)
@echo
@echo "Test Documentation URL: $(TEST_DOC_BR)/html/index.html"
@echo "Run 'make test-wipe-doc test-doc' to rebuild the test docs"
@@ -305,7 +288,7 @@ wipe-all: wipe wipe-papi wipe-doc wipe-cov
@rm -rf $(TEST_BR)
.PHONY: checkstyle-diff
-checkstyle-diff: $(BUILD_TEST_SRC) $(PIP_INSTALL_DONE)
+checkstyle-diff: $(PIP_INSTALL_DONE)
@bash -c "source $(VENV_PATH)/bin/activate &&\
$(PYTHON_INTERP) -m pip install pycodestyle"
@bash -c "source $(VENV_PATH)/bin/activate &&\
@@ -326,11 +309,11 @@ start-gdb: sanity
$(call retest-func)
.PHONY: checkstyle
-checkstyle: $(BUILD_TEST_SRC) $(PIP_INSTALL_DONE)
+checkstyle: $(PIP_INSTALL_DONE)
@bash -c "source $(VENV_PATH)/bin/activate &&\
$(PYTHON_INTERP) -m pip install pycodestyle"
@bash -c "source $(VENV_PATH)/bin/activate &&\
- pycodestyle --show-source --ignore=W504,E126,E241,E226,E305,E704,E741,E722 -v $(BUILD_TEST_SRC)/*.py ||\
+ pycodestyle --show-source --ignore=W504,E126,E241,E226,E305,E704,E741,E722 -v *.py ||\
(echo \"*******************************************************************\" &&\
echo \"* Test framework PEP8 compliance check FAILED (checked all files)\" &&\
echo \"*******************************************************************\" &&\
diff --git a/src/vnet/bfd/test/bfd.py b/test/bfd.py
index 9d44425ec9f..9d44425ec9f 100644
--- a/src/vnet/bfd/test/bfd.py
+++ b/test/bfd.py
diff --git a/test/doc/Makefile b/test/doc/Makefile
index 608df0a1baf..2d06cedd0be 100644
--- a/test/doc/Makefile
+++ b/test/doc/Makefile
@@ -19,9 +19,6 @@ endif
ifndef TEST_DOC_BR
$(error TEST_DOC_BR is not set)
endif
-ifndef BUILD_TEST_SRC
- $(error BUILD_TEST_SRC is not set)
-endif
ifeq ($(IN_VENV),0)
$(error "Not running inside virtualenv (are you running 'make test-doc' from root?)")
endif
@@ -32,7 +29,7 @@ regen-api-doc: verify-virtualenv
@cp $(SRC_DOC_DIR)/index.rst $(API_DOC_GEN_DIR)
@cp $(SRC_DOC_DIR)/indices.rst $(API_DOC_GEN_DIR)
@cp $(SRC_DOC_DIR)/overview.rst $(API_DOC_GEN_DIR)
- sphinx-apidoc -o $(API_DOC_GEN_DIR) -H "Module documentation" $(BUILD_TEST_SRC)
+ sphinx-apidoc -o $(API_DOC_GEN_DIR) -H "Module documentation" $(TEST_DIR)
.PHONY: html
html: regen-api-doc verify-virtualenv
diff --git a/test/doc/conf.py b/test/doc/conf.py
index f5e974954d8..f73cde27fae 100644
--- a/test/doc/conf.py
+++ b/test/doc/conf.py
@@ -18,7 +18,9 @@
#
import os
import sys
-sys.path.insert(0, os.path.abspath('../../build-root/build-test/src'))
+import subprocess
+from datetime import date
+sys.path.insert(0, os.path.abspath('..'))
# -- General configuration ------------------------------------------------
@@ -59,17 +61,18 @@ master_doc = 'index'
# General information about the project.
project = u'VPP test framework'
-copyright = u'2019, VPP team'
-author = u'VPP team'
+copyright = f'{date.today().year}, FD.io VPP team'
+author = u'FD.io VPP team'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = u'20.01'
+output = subprocess.run(['../../src/scripts/version'], stdout=subprocess.PIPE)
+version = f'{output.stdout.decode("utf-8")}'
# The full version, including alpha/beta/rc tags.
-release = u'20.01-rc0'
+release = f'{output.stdout.decode("utf-8")}'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/src/plugins/abf/test/test_abf.py b/test/test_abf.py
index 097476b879a..097476b879a 100644
--- a/src/plugins/abf/test/test_abf.py
+++ b/test/test_abf.py
diff --git a/src/plugins/acl/test/test_acl_plugin.py b/test/test_acl_plugin.py
index 53d96215949..53d96215949 100644
--- a/src/plugins/acl/test/test_acl_plugin.py
+++ b/test/test_acl_plugin.py
diff --git a/src/plugins/acl/test/test_acl_plugin_conns.py b/test/test_acl_plugin_conns.py
index c7941fa150b..c7941fa150b 100644
--- a/src/plugins/acl/test/test_acl_plugin_conns.py
+++ b/test/test_acl_plugin_conns.py
diff --git a/src/plugins/acl/test/test_acl_plugin_l2l3.py b/test/test_acl_plugin_l2l3.py
index 48faafb7398..48faafb7398 100644
--- a/src/plugins/acl/test/test_acl_plugin_l2l3.py
+++ b/test/test_acl_plugin_l2l3.py
diff --git a/src/plugins/acl/test/test_acl_plugin_macip.py b/test/test_acl_plugin_macip.py
index 5edd7b03258..5edd7b03258 100644
--- a/src/plugins/acl/test/test_acl_plugin_macip.py
+++ b/test/test_acl_plugin_macip.py
diff --git a/src/plugins/adl/test/test_adl.py b/test/test_adl.py
index 4a996fc5c90..4a996fc5c90 100644
--- a/src/plugins/adl/test/test_adl.py
+++ b/test/test_adl.py
diff --git a/src/plugins/arping/test/test_arping.py b/test/test_arping.py
index bd8b6250a54..bd8b6250a54 100644
--- a/src/plugins/arping/test/test_arping.py
+++ b/test/test_arping.py
diff --git a/src/vnet/bfd/test/test_bfd.py b/test/test_bfd.py
index 01b468c8e27..01b468c8e27 100644
--- a/src/vnet/bfd/test/test_bfd.py
+++ b/test/test_bfd.py
diff --git a/src/vnet/bier/test/test_bier.py b/test/test_bier.py
index 2f649bbde53..2f649bbde53 100644
--- a/src/vnet/bier/test/test_bier.py
+++ b/test/test_bier.py
diff --git a/src/vppinfra/test/test_bihash.py b/test/test_bihash.py
index 2949d66750d..2949d66750d 100644
--- a/src/vppinfra/test/test_bihash.py
+++ b/test/test_bihash.py
diff --git a/src/vnet/bonding/test/test_bond.py b/test/test_bond.py
index 5df86ae5b0f..5df86ae5b0f 100644
--- a/src/vnet/bonding/test/test_bond.py
+++ b/test/test_bond.py
diff --git a/src/vlib/test/test_buffers.py b/test/test_buffers.py
index f50f05c609a..f50f05c609a 100644
--- a/src/vlib/test/test_buffers.py
+++ b/test/test_buffers.py
diff --git a/src/plugins/cdp/test/test_cdp.py b/test/test_cdp.py
index 46751e81d86..46751e81d86 100644
--- a/src/plugins/cdp/test/test_cdp.py
+++ b/test/test_cdp.py
diff --git a/src/vnet/classify/test/test_classifier.py b/test/test_classifier.py
index 11c0985f4d4..11c0985f4d4 100644
--- a/src/vnet/classify/test/test_classifier.py
+++ b/test/test_classifier.py
diff --git a/src/vnet/classify/test/test_classifier_ip6.py b/test/test_classifier_ip6.py
index 211374b5ec6..211374b5ec6 100644
--- a/src/vnet/classify/test/test_classifier_ip6.py
+++ b/test/test_classifier_ip6.py
diff --git a/src/plugins/acl/test/test_classify_l2_acl.py b/test/test_classify_l2_acl.py
index b1309881e58..b1309881e58 100644
--- a/src/plugins/acl/test/test_classify_l2_acl.py
+++ b/test/test_classify_l2_acl.py
diff --git a/src/vlib/test/test_cli.py b/test/test_cli.py
index 5005bf4c43a..5005bf4c43a 100644
--- a/src/vlib/test/test_cli.py
+++ b/test/test_cli.py
diff --git a/src/plugins/cnat/test/test_cnat.py b/test/test_cnat.py
index ff4c44033cb..ff4c44033cb 100644
--- a/src/plugins/cnat/test/test_cnat.py
+++ b/test/test_cnat.py
diff --git a/src/vlib/test/test_counters.py b/test/test_counters.py
index e4cb85621d0..e4cb85621d0 100644
--- a/src/vlib/test/test_counters.py
+++ b/test/test_counters.py
diff --git a/src/vnet/crypto/test/test_crypto.py b/test/test_crypto.py
index aa62dba1bab..aa62dba1bab 100644
--- a/src/vnet/crypto/test/test_crypto.py
+++ b/test/test_crypto.py
diff --git a/src/plugins/nat/test/test_det44.py b/test/test_det44.py
index ced77468959..ced77468959 100644
--- a/src/plugins/nat/test/test_det44.py
+++ b/test/test_det44.py
diff --git a/src/plugins/dhcp/test/test_dhcp.py b/test/test_dhcp.py
index e17b0049df7..e17b0049df7 100644
--- a/src/plugins/dhcp/test/test_dhcp.py
+++ b/test/test_dhcp.py
diff --git a/src/plugins/dhcp/test/test_dhcp6.py b/test/test_dhcp6.py
index 57eb113fb13..57eb113fb13 100644
--- a/src/plugins/dhcp/test/test_dhcp6.py
+++ b/test/test_dhcp6.py
diff --git a/src/plugins/dns/test/test_dns.py b/test/test_dns.py
index fb8958c511b..fb8958c511b 100644
--- a/src/plugins/dns/test/test_dns.py
+++ b/test/test_dns.py
diff --git a/src/plugins/nat/test/test_dslite.py b/test/test_dslite.py
index 2b4f4aacc9f..2b4f4aacc9f 100644
--- a/src/plugins/nat/test/test_dslite.py
+++ b/test/test_dslite.py
diff --git a/src/vnet/fib/test/test_dvr.py b/test/test_dvr.py
index 8531b8553ca..8531b8553ca 100644
--- a/src/vnet/fib/test/test_dvr.py
+++ b/test/test_dvr.py
diff --git a/src/vpp-api/test/test_endian.py b/test/test_endian.py
index 462ee2b6b57..462ee2b6b57 100644
--- a/src/vpp-api/test/test_endian.py
+++ b/test/test_endian.py
diff --git a/src/vnet/fib/test/test_fib.py b/test/test_fib.py
index 7c08722d803..7c08722d803 100644
--- a/src/vnet/fib/test/test_fib.py
+++ b/test/test_fib.py
diff --git a/src/plugins/flowprobe/test/test_flowprobe.py b/test/test_flowprobe.py
index 517729d8591..517729d8591 100644
--- a/src/plugins/flowprobe/test/test_flowprobe.py
+++ b/test/test_flowprobe.py
diff --git a/src/plugins/gbp/test/test_gbp.py b/test/test_gbp.py
index 21d0770cf66..21d0770cf66 100644
--- a/src/plugins/gbp/test/test_gbp.py
+++ b/test/test_gbp.py
diff --git a/src/plugins/geneve/test/test_geneve.py b/test/test_geneve.py
index 9ce1f8ff643..9ce1f8ff643 100644
--- a/src/plugins/geneve/test/test_geneve.py
+++ b/test/test_geneve.py
diff --git a/src/vnet/gre/test/test_gre.py b/test/test_gre.py
index ba20ba8dec0..ba20ba8dec0 100644
--- a/src/vnet/gre/test/test_gre.py
+++ b/test/test_gre.py
diff --git a/src/vnet/gso/test/test_gro.py b/test/test_gro.py
index 33215d65fa7..33215d65fa7 100644
--- a/src/vnet/gso/test/test_gro.py
+++ b/test/test_gro.py
diff --git a/src/vnet/gso/test/test_gso.py b/test/test_gso.py
index 094600eb74c..094600eb74c 100644
--- a/src/vnet/gso/test/test_gso.py
+++ b/test/test_gso.py
diff --git a/src/plugins/gtpu/test/test_gtpu.py b/test/test_gtpu.py
index 791067c0633..791067c0633 100644
--- a/src/plugins/gtpu/test/test_gtpu.py
+++ b/test/test_gtpu.py
diff --git a/src/plugins/igmp/test/test_igmp.py b/test/test_igmp.py
index 8053bc3d544..8053bc3d544 100644
--- a/src/plugins/igmp/test/test_igmp.py
+++ b/test/test_igmp.py
diff --git a/src/plugins/ikev2/test/test_ikev2.py b/test/test_ikev2.py
index 558e8a02f87..558e8a02f87 100644
--- a/src/plugins/ikev2/test/test_ikev2.py
+++ b/test/test_ikev2.py
diff --git a/src/plugins/nat/test/test_ipsec_nat.py b/test/test_ipsec_nat.py
index dcedf64b52d..dcedf64b52d 100644
--- a/src/plugins/nat/test/test_ipsec_nat.py
+++ b/test/test_ipsec_nat.py
diff --git a/src/plugins/l2tp/test/test_l2tp.py b/test/test_l2tp.py
index 5a665238260..5a665238260 100644
--- a/src/plugins/l2tp/test/test_l2tp.py
+++ b/test/test_l2tp.py
diff --git a/src/plugins/l3xc/test/test_l3xc.py b/test/test_l3xc.py
index d7a82976cf5..d7a82976cf5 100644
--- a/src/plugins/l3xc/test/test_l3xc.py
+++ b/test/test_l3xc.py
diff --git a/src/plugins/lacp/test/test_lacp.py b/test/test_lacp.py
index b5f2dae2cd3..b5f2dae2cd3 100644
--- a/src/plugins/lacp/test/test_lacp.py
+++ b/test/test_lacp.py
diff --git a/src/plugins/lb/test/test_lb.py b/test/test_lb.py
index fafb87b62d9..fafb87b62d9 100644
--- a/src/plugins/lb/test/test_lb.py
+++ b/test/test_lb.py
diff --git a/src/plugins/lb/test/test_lb_api.py b/test/test_lb_api.py
index 70d41d432a7..70d41d432a7 100644
--- a/src/plugins/lb/test/test_lb_api.py
+++ b/test/test_lb_api.py
diff --git a/src/plugins/linux-cp/test/test_linux_cp.py b/test/test_linux_cp.py
index df38681b16e..df38681b16e 100644
--- a/src/plugins/linux-cp/test/test_linux_cp.py
+++ b/test/test_linux_cp.py
diff --git a/src/plugins/lisp/test/test_lisp.py b/test/test_lisp.py
index 0a6e7525159..0a6e7525159 100644
--- a/src/plugins/lisp/test/test_lisp.py
+++ b/test/test_lisp.py
diff --git a/src/plugins/mactime/test/test_mactime.py b/test/test_mactime.py
index 85ded33d158..85ded33d158 100644
--- a/src/plugins/mactime/test/test_mactime.py
+++ b/test/test_mactime.py
diff --git a/src/plugins/map/test/test_map.py b/test/test_map.py
index 90fee301267..90fee301267 100644
--- a/src/plugins/map/test/test_map.py
+++ b/test/test_map.py
diff --git a/src/plugins/map/test/test_map_br.py b/test/test_map_br.py
index 3602ddd2e31..3602ddd2e31 100644
--- a/src/plugins/map/test/test_map_br.py
+++ b/test/test_map_br.py
diff --git a/src/plugins/memif/test/test_memif.py b/test/test_memif.py
index fc7cf9b2e7e..fc7cf9b2e7e 100644
--- a/src/plugins/memif/test/test_memif.py
+++ b/test/test_memif.py
diff --git a/src/plugins/mss_clamp/test/test_mss_clamp.py b/test/test_mss_clamp.py
index 23495b6050b..23495b6050b 100644
--- a/src/plugins/mss_clamp/test/test_mss_clamp.py
+++ b/test/test_mss_clamp.py
diff --git a/src/plugins/nat/test/test_nat44_ed.py b/test/test_nat44_ed.py
index 2ce7f23dac9..2ce7f23dac9 100644
--- a/src/plugins/nat/test/test_nat44_ed.py
+++ b/test/test_nat44_ed.py
diff --git a/src/plugins/nat/test/test_nat44_ei.py b/test/test_nat44_ei.py
index 4160ea2c344..4160ea2c344 100644
--- a/src/plugins/nat/test/test_nat44_ei.py
+++ b/test/test_nat44_ei.py
diff --git a/src/plugins/nat/test/test_nat64.py b/test/test_nat64.py
index 9a10b9fc380..9a10b9fc380 100644
--- a/src/plugins/nat/test/test_nat64.py
+++ b/test/test_nat64.py
diff --git a/src/plugins/nat/test/test_nat66.py b/test/test_nat66.py
index acda72bcdf6..acda72bcdf6 100644
--- a/src/plugins/nat/test/test_nat66.py
+++ b/test/test_nat66.py
diff --git a/src/plugins/ping/test/test_ping.py b/test/test_ping.py
index 8c5c087b0c5..8c5c087b0c5 100644
--- a/src/plugins/ping/test/test_ping.py
+++ b/test/test_ping.py
diff --git a/src/plugins/nat/test/test_pnat.py b/test/test_pnat.py
index d5b60050691..d5b60050691 100644
--- a/src/plugins/nat/test/test_pnat.py
+++ b/test/test_pnat.py
diff --git a/src/vnet/policer/test/test_policer.py b/test/test_policer.py
index 6b15a0234a3..6b15a0234a3 100644
--- a/src/vnet/policer/test/test_policer.py
+++ b/test/test_policer.py
diff --git a/src/vnet/policer/test/test_policer_input.py b/test/test_policer_input.py
index c95f6643ff2..c95f6643ff2 100644
--- a/src/vnet/policer/test/test_policer_input.py
+++ b/test/test_policer_input.py
diff --git a/src/plugins/pppoe/test/test_pppoe.py b/test/test_pppoe.py
index 99dba01cdc9..99dba01cdc9 100644
--- a/src/plugins/pppoe/test/test_pppoe.py
+++ b/test/test_pppoe.py
diff --git a/src/plugins/quic/test/test_quic.py b/test/test_quic.py
index 1257f4e2b0a..1257f4e2b0a 100644
--- a/src/plugins/quic/test/test_quic.py
+++ b/test/test_quic.py
diff --git a/src/plugins/srv6-am/test/test_srv6.py b/test/test_srv6.py
index 449ad59ac60..449ad59ac60 100644
--- a/src/plugins/srv6-am/test/test_srv6.py
+++ b/test/test_srv6.py
diff --git a/src/plugins/srv6-ad/test/test_srv6_ad.py b/test/test_srv6_ad.py
index 2627df32aa9..2627df32aa9 100644
--- a/src/plugins/srv6-ad/test/test_srv6_ad.py
+++ b/test/test_srv6_ad.py
diff --git a/src/plugins/srv6-ad-flow/test/test_srv6_ad_flow.py b/test/test_srv6_ad_flow.py
index f5452089a79..f5452089a79 100644
--- a/src/plugins/srv6-ad-flow/test/test_srv6_ad_flow.py
+++ b/test/test_srv6_ad_flow.py
diff --git a/src/plugins/srv6-as/test/test_srv6_as.py b/test/test_srv6_as.py
index eec44e31ee5..eec44e31ee5 100755
--- a/src/plugins/srv6-as/test/test_srv6_as.py
+++ b/test/test_srv6_as.py
diff --git a/src/plugins/srv6-mobile/test/test_srv6_mobile.py b/test/test_srv6_mobile.py
index a695c9d7115..a695c9d7115 100644
--- a/src/plugins/srv6-mobile/test/test_srv6_mobile.py
+++ b/test/test_srv6_mobile.py
diff --git a/src/plugins/svs/test/test_svs.py b/test/test_svs.py
index db4ad8078e0..db4ad8078e0 100644
--- a/src/plugins/svs/test/test_svs.py
+++ b/test/test_svs.py
diff --git a/src/plugins/urpf/test/test_urpf.py b/test/test_urpf.py
index 8f4e563f8bc..8f4e563f8bc 100644
--- a/src/plugins/urpf/test/test_urpf.py
+++ b/test/test_urpf.py
diff --git a/src/vpp-api/test/test_vapi.py b/test/test_vapi.py
index d91099210d2..d91099210d2 100644
--- a/src/vpp-api/test/test_vapi.py
+++ b/test/test_vapi.py
diff --git a/src/vpp-api/test/test_vpe_api.py b/test/test_vpe_api.py
index 54f7e41151b..54f7e41151b 100644
--- a/src/vpp-api/test/test_vpe_api.py
+++ b/test/test_vpe_api.py
diff --git a/src/vppinfra/test/test_vppinfra.py b/test/test_vppinfra.py
index 8b6ec965fea..8b6ec965fea 100644
--- a/src/vppinfra/test/test_vppinfra.py
+++ b/test/test_vppinfra.py
diff --git a/src/plugins/vrrp/test/test_vrrp.py b/test/test_vrrp.py
index cc70613dfb5..cc70613dfb5 100644
--- a/src/plugins/vrrp/test/test_vrrp.py
+++ b/test/test_vrrp.py
diff --git a/src/vnet/vxlan/test/test_vxlan.py b/test/test_vxlan.py
index 028275ccedf..028275ccedf 100644
--- a/src/vnet/vxlan/test/test_vxlan.py
+++ b/test/test_vxlan.py
diff --git a/src/vnet/vxlan/test/test_vxlan6.py b/test/test_vxlan6.py
index 123cce9b7ba..123cce9b7ba 100644
--- a/src/vnet/vxlan/test/test_vxlan6.py
+++ b/test/test_vxlan6.py
diff --git a/src/vnet/vxlan/test/test_vxlan_gbp.py b/test/test_vxlan_gbp.py
index f332aced7d8..f332aced7d8 100644
--- a/src/vnet/vxlan/test/test_vxlan_gbp.py
+++ b/test/test_vxlan_gbp.py
diff --git a/src/vnet/vxlan/test/test_vxlan_gpe.py b/test/test_vxlan_gpe.py
index c5d6bf07f7c..c5d6bf07f7c 100644
--- a/src/vnet/vxlan/test/test_vxlan_gpe.py
+++ b/test/test_vxlan_gpe.py
diff --git a/src/plugins/wireguard/test/test_wireguard.py b/test/test_wireguard.py
index edc305b1336..edc305b1336 100755
--- a/src/plugins/wireguard/test/test_wireguard.py
+++ b/test/test_wireguard.py
diff --git a/src/plugins/acl/test/vpp_acl.py b/test/vpp_acl.py
index 2d2f7ca257b..2d2f7ca257b 100644
--- a/src/plugins/acl/test/vpp_acl.py
+++ b/test/vpp_acl.py
diff --git a/src/vnet/bier/test/vpp_bier.py b/test/vpp_bier.py
index 6e087a8ee0b..6e087a8ee0b 100644
--- a/src/vnet/bier/test/vpp_bier.py
+++ b/test/vpp_bier.py
diff --git a/src/vnet/bonding/test/vpp_bond_interface.py b/test/vpp_bond_interface.py
index 60c1ac1557b..60c1ac1557b 100644
--- a/src/vnet/bonding/test/vpp_bond_interface.py
+++ b/test/vpp_bond_interface.py
diff --git a/src/plugins/dhcp/test/vpp_dhcp.py b/test/vpp_dhcp.py
index f8265a26252..f8265a26252 100644
--- a/src/plugins/dhcp/test/vpp_dhcp.py
+++ b/test/vpp_dhcp.py
diff --git a/src/plugins/igmp/test/vpp_igmp.py b/test/vpp_igmp.py
index 8f78a9b909a..8f78a9b909a 100644
--- a/src/plugins/igmp/test/vpp_igmp.py
+++ b/test/vpp_igmp.py
diff --git a/src/plugins/ikev2/test/vpp_ikev2.py b/test/vpp_ikev2.py
index de2081268ee..de2081268ee 100644
--- a/src/plugins/ikev2/test/vpp_ikev2.py
+++ b/test/vpp_ikev2.py
diff --git a/src/plugins/lb/test/vpp_lb.py b/test/vpp_lb.py
index d755cef70e5..d755cef70e5 100644
--- a/src/plugins/lb/test/vpp_lb.py
+++ b/test/vpp_lb.py
diff --git a/src/plugins/memif/test/vpp_memif.py b/test/vpp_memif.py
index 226f8af72b5..226f8af72b5 100644
--- a/src/plugins/memif/test/vpp_memif.py
+++ b/test/vpp_memif.py
diff --git a/src/plugins/pppoe/test/vpp_pppoe_interface.py b/test/vpp_pppoe_interface.py
index 505ac4c6425..505ac4c6425 100644
--- a/src/plugins/pppoe/test/vpp_pppoe_interface.py
+++ b/test/vpp_pppoe_interface.py
diff --git a/src/plugins/srv6-ad/test/vpp_srv6.py b/test/vpp_srv6.py
index d6efedc9f3e..d6efedc9f3e 100644
--- a/src/plugins/srv6-ad/test/vpp_srv6.py
+++ b/test/vpp_srv6.py
diff --git a/src/vnet/vxlan/test/vpp_vxlan_gbp_tunnel.py b/test/vpp_vxlan_gbp_tunnel.py
index 0898bd9f810..0898bd9f810 100644
--- a/src/vnet/vxlan/test/vpp_vxlan_gbp_tunnel.py
+++ b/test/vpp_vxlan_gbp_tunnel.py
diff --git a/src/vnet/vxlan/test/vpp_vxlan_tunnel.py b/test/vpp_vxlan_tunnel.py
index d7e087da6f8..d7e087da6f8 100644
--- a/src/vnet/vxlan/test/vpp_vxlan_tunnel.py
+++ b/test/vpp_vxlan_tunnel.py