make test: support out-of-tree plugins 13/5813/2
authorKlement Sekera <ksekera@cisco.com>
Tue, 21 Mar 2017 07:21:25 +0000 (08:21 +0100)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 22 Mar 2017 10:48:26 +0000 (10:48 +0000)
usage:

env EXTERN_PLUGINS=/path/to/plugins make test

Change-Id: I8eece726dfafeff1cffd921c1e18cd3eb7eb64ed
Signed-off-by: Klement Sekera <ksekera@cisco.com>
test/Makefile
test/framework.py

index c65eaae..6647d67 100644 (file)
@@ -92,6 +92,8 @@ shell: verify-python-path $(PAPI_INSTALL_DONE)
                echo VPP_TEST_BIN=$(VPP_TEST_BIN);\
                echo VPP_TEST_PLUGIN_PATH=$(VPP_TEST_PLUGIN_PATH);\
                echo VPP_TEST_INSTALL_PATH=$(VPP_TEST_INSTALL_PATH);\
+               echo EXTERN_TESTS=$(EXTERN_TESTS);\
+               echo EXTERN_PLUGINS=$(EXTERN_PLUGINS);\
                echo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH);\
                echo '***';\
                exec </dev/tty" | bash -i
@@ -182,6 +184,8 @@ help:
        @echo " COREDUMP_SIZE=<size> - pass <size> as unix { coredump-size <size> } argument to vpp"
        @echo "                        e.g. COREDUMP_SIZE=4g"
        @echo "                             COREDUMP_SIZE=unlimited"
+       @echo " EXTERN_TESTS=<path>  - path to out-of-tree test_<name>.py files containing test cases"
+       @echo " EXTERN_PLUGINS=<path>- path to out-of-tree plugins to be loaded by vpp under test"
        @echo ""
        @echo "Creating test documentation"
        @echo " test-doc            - generate documentation for test framework"
index d7a0026..fe6a8a5 100644 (file)
@@ -146,6 +146,14 @@ class VppTestCase(unittest.TestCase):
         cls.set_debug_flags(d)
         cls.vpp_bin = os.getenv('VPP_TEST_BIN', "vpp")
         cls.plugin_path = os.getenv('VPP_TEST_PLUGIN_PATH')
+        cls.extern_plugin_path = os.getenv('EXTERN_PLUGINS')
+        plugin_path = None
+        if cls.plugin_path is not None:
+            if cls.extern_plugin_path is not None:
+                plugin_path = "%s:%s" % (
+                    cls.plugin_path, cls.extern_plugin_path)
+        elif cls.extern_plugin_path is not None:
+            plugin_path = cls.extern_plugin_path
         debug_cli = ""
         if cls.step or cls.debug_gdb or cls.debug_gdbserver:
             debug_cli = "cli-listen localhost:5002"
@@ -164,8 +172,8 @@ class VppTestCase(unittest.TestCase):
                            "api-segment", "{", "prefix", cls.shm_prefix, "}",
                            "plugins", "{", "plugin", "dpdk_plugin.so", "{",
                            "disable", "}", "}"]
-        if cls.plugin_path is not None:
-            cls.vpp_cmdline.extend(["plugin_path", cls.plugin_path])
+        if plugin_path is not None:
+            cls.vpp_cmdline.extend(["plugin_path", plugin_path])
         cls.logger.info("vpp_cmdline: %s" % cls.vpp_cmdline)
 
     @classmethod