diff options
author | Ole Troan <ot@cisco.com> | 2019-04-15 11:27:22 +0200 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2019-04-23 18:49:22 +0000 |
commit | 4ff09ae3483593f51faa160829fbcad4c77ed5b3 (patch) | |
tree | f2fa50765a7deaa081d26841437e9e9f24c00337 /test | |
parent | 59e0c8f5dc4b9c2b580c68da5595e4ed750194fe (diff) |
API: Python and Unix domain socket improvement
Handle the case where buffer overflows.
Then SOCK_SEQPACKET assumption that multiple API messages
are not returned by recv() is broken. Use SOCK_STREAM for
API exchanges instead.
Add support for running tests over sockets.
make test SOCKET=1
Change-Id: Ibe5fd69b1bf617de4c7ba6cce0a7c2b3f97a2821
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile | 2 | ||||
-rw-r--r-- | test/framework.py | 7 | ||||
-rw-r--r-- | test/vpp_papi_provider.py | 10 |
3 files changed, 16 insertions, 3 deletions
diff --git a/test/Makefile b/test/Makefile index f78c8a8ca69..724b50457aa 100644 --- a/test/Makefile +++ b/test/Makefile @@ -297,6 +297,8 @@ help: @echo "" @echo " SKIP_AARCH64=1 - skip tests that are failing on the ARM platorm in FD.io CI" @echo "" + @echo " SOCKET=1 - Communicate with VPP over Unix domain socket instead of SHM" + @echo "" @echo "Creating test documentation" @echo " test-doc - generate documentation for test framework" @echo " test-wipe-doc - wipe documentation for test framework" diff --git a/test/framework.py b/test/framework.py index 8a92229249b..25db2b72b34 100644 --- a/test/framework.py +++ b/test/framework.py @@ -313,8 +313,10 @@ class VppTestCase(unittest.TestCase): coredump_size, "runtime-dir", cls.tempdir, "}", "api-trace", "{", "on", "}", "api-segment", "{", "prefix", cls.shm_prefix, "}", "cpu", "{", - "main-core", str(cpu_core_number), "}", "statseg", - "{", "socket-name", cls.stats_sock, "}", "plugins", + "main-core", str(cpu_core_number), "}", + "statseg", "{", "socket-name", cls.stats_sock, "}", + "socksvr", "{", "socket-name", cls.api_sock, "}", + "plugins", "{", "plugin", "dpdk_plugin.so", "{", "disable", "}", "plugin", "rdma_plugin.so", "{", "disable", "}", "plugin", "unittest_plugin.so", "{", "enable", @@ -415,6 +417,7 @@ class VppTestCase(unittest.TestCase): cls.tempdir = tempfile.mkdtemp( prefix='vpp-unittest-%s-' % cls.__name__) cls.stats_sock = "%s/stats.sock" % cls.tempdir + cls.api_sock = "%s/api.sock" % cls.tempdir cls.file_handler = FileHandler("%s/log.txt" % cls.tempdir) cls.file_handler.setFormatter( Formatter(fmt='%(asctime)s,%(msecs)03d %(message)s', diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 62fc0aa42b3..8b637f0bd49 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -226,8 +226,16 @@ class VppPapiProvider(object): if 'VPP_API_DIR' not in os.environ: os.environ['VPP_API_DIR'] = os.getenv('VPP_INSTALL_PATH') + use_socket = False + try: + if os.environ['SOCKET'] == '1': + use_socket = True + except: + pass self.vpp = VPP(logger=test_class.logger, - read_timeout=read_timeout) + read_timeout=read_timeout, + use_socket=use_socket, + server_address=test_class.api_sock) self._events = deque() def __enter__(self): |