diff options
author | Ole Troan <otroan@cisco.com> | 2022-12-01 11:22:06 +0100 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2022-12-07 10:33:20 +0000 |
commit | 37157dad514b85d008cf8e01a889889d8869f02b (patch) | |
tree | dfdbb28255c4e6d73a7a84333fb5ccb2fde47f5f | |
parent | d7413835e1478b0c1356bae7d45e00061d7eb8d4 (diff) |
tests: multiple apidir locations
To support testing of external plugins, add support to the test framework and PAPI
for specifying a list of locations to look for api.json files.
Type: improvement
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I128a306e3c091dc8ef994801b1470b82d2f4595d
Signed-off-by: Ole Troan <ot@cisco.com>
-rw-r--r-- | src/vpp-api/python/vpp_papi/vpp_papi.py | 7 | ||||
-rw-r--r-- | test/Makefile | 7 | ||||
-rw-r--r-- | test/config.py | 8 | ||||
-rw-r--r-- | test/vpp_papi_provider.py | 2 |
4 files changed, 21 insertions, 3 deletions
diff --git a/src/vpp-api/python/vpp_papi/vpp_papi.py b/src/vpp-api/python/vpp_papi/vpp_papi.py index 6755e227ed1..34d57232865 100644 --- a/src/vpp-api/python/vpp_papi/vpp_papi.py +++ b/src/vpp-api/python/vpp_papi/vpp_papi.py @@ -449,7 +449,12 @@ class VPPApiClient: if not apifiles: # Pick up API definitions from default directory try: - apifiles = VPPApiJSONFiles.find_api_files(self.apidir) + if isinstance(self.apidir, list): + apifiles = [] + for d in self.apidir: + apifiles += VPPApiJSONFiles.find_api_files(d) + else: + apifiles = VPPApiJSONFiles.find_api_files(self.apidir) except (RuntimeError, VPPApiError): # In test mode we don't care that we can't find the API files if testmode: diff --git a/test/Makefile b/test/Makefile index 87b121ac11f..e5e997583db 100644 --- a/test/Makefile +++ b/test/Makefile @@ -249,7 +249,12 @@ ifneq ($(findstring $(API_FUZZ),1 y yes),) ARG16=--api-fuzz=on endif -EXTRA_ARGS=$(ARG0) $(ARG1) $(ARG2) $(ARG3) $(ARG4) $(ARG5) $(ARG6) $(ARG7) $(ARG8) $(ARG9) $(ARG10) $(ARG11) $(ARG12) $(ARG13) $(ARG14) $(ARG15) $(ARG16) +ARG17= +ifneq ($(EXTERN_APIDIR),) +ARG17=--extern-apidir=$(EXTERN_APIDIR) +endif + +EXTRA_ARGS=$(ARG0) $(ARG1) $(ARG2) $(ARG3) $(ARG4) $(ARG5) $(ARG6) $(ARG7) $(ARG8) $(ARG9) $(ARG10) $(ARG11) $(ARG12) $(ARG13) $(ARG14) $(ARG15) $(ARG16) $(ARG17) RUN_TESTS_ARGS=--failed-dir=$(FAILED_DIR) --verbose=$(V) --jobs=$(TEST_JOBS) --filter=$(TEST) --retries=$(RETRIES) --venv-dir=$(VENV_PATH) --vpp-ws-dir=$(WS_ROOT) --vpp-tag=$(TAG) --rnd-seed=$(RND_SEED) --vpp-worker-count="$(VPP_WORKER_COUNT)" --keep-pcaps $(PLUGIN_PATH_ARGS) $(TEST_PLUGIN_PATH_ARGS) $(EXTRA_ARGS) RUN_SCRIPT_ARGS=--python-opts=$(PYTHON_OPTS) diff --git a/test/config.py b/test/config.py index e73555723ff..d2f14c82e19 100644 --- a/test/config.py +++ b/test/config.py @@ -302,6 +302,14 @@ parser.add_argument( ) 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", default="unlimited", diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 148eca2053b..6c3cd7f83fa 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -238,7 +238,7 @@ class VppPapiProvider(object): # install_dir is a class attribute. We need to set it before # calling the constructor. - VPPApiClient.apidir = config.vpp_install_dir + VPPApiClient.apidir = config.extern_apidir + [config.vpp_install_dir] self.vpp = VPPApiClient( logger=test_class.logger, |