diff options
author | Paul Vinciguerra <pvinci@vinciconsulting.com> | 2018-12-17 21:43:43 -0800 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2018-12-21 07:49:37 +0000 |
commit | 919efad2671993d4c6d5a0dba8eeb99d5c60edf1 (patch) | |
tree | 7798b4deaa7057817194a59e1b7d94a99f3e460d /test/framework.py | |
parent | e21463d87979a49720bf1eb1744f01261ffea620 (diff) |
tests: Rework vpp config generation.
* Allows test cases to configure the VPP runtime config
during fixture setup.
* Sample use in a TestCase:
@classmethod
def setUpConstants(cls):
tempdir = cls.tempdir
cls.config.add('punt', 'socket', '%s/socket_punt' % cls.tempdir)
super(TestPuntSocket, cls).setUpConstants()
# enable/disabe a plugin via:
#cls.config.add_plugin('dpdk_plugin.so', 'disable')
* Supports the following config stanzas:
'unix',
'acl-plugin'
'api-queue'
'api-trace'
'api-segment'
'cj'
'cpu'
'dns'
'dpdk
# currently don't support dynamic keys
# 'heapsize'
'l2learn'
'l2tp'
'mactime'
'mc'
'nat'
'oam'
'plugins'
'punt'
'session'
'socksvr'
'statseg'
'tapcli'
'tcp'
'tuntap'
'vhost-user'
Change-Id: I44f276487267d26eaa46f87e730bdd861003b234
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Diffstat (limited to 'test/framework.py')
-rw-r--r-- | test/framework.py | 50 |
1 files changed, 23 insertions, 27 deletions
diff --git a/test/framework.py b/test/framework.py index aec4a8ebbdf..5eeb5187041 100644 --- a/test/framework.py +++ b/test/framework.py @@ -20,8 +20,10 @@ from traceback import format_exception from logging import FileHandler, DEBUG, Formatter from scapy.packet import Raw from hook import StepHook, PollHook, VppDiedError -from vpp_pg_interface import VppPGInterface +from vpp_config import VppTestCaseVppConfig +from vpp_interface import VppInterface from vpp_sub_interface import VppSubInterface +from vpp_pg_interface import VppPGInterface from vpp_lo_interface import VppLoInterface from vpp_papi_provider import VppPapiProvider from vpp_papi.vpp_stats import VPPStats @@ -205,8 +207,8 @@ class VppTestCase(unittest.TestCase): classes. It provides methods to create and run test case. """ - extra_vpp_punt_config = [] - extra_vpp_plugin_config = [] + CLI_LISTEN_DEFAULT = 'localhost:5002' + config = VppTestCaseVppConfig() @property def packet_infos(self): @@ -301,32 +303,26 @@ class VppTestCase(unittest.TestCase): plugin_path = cls.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" + cls.config.add('unix', 'cli-listen', cls.CLI_LISTEN_DEFAULT) + coredump_size = None size = os.getenv("COREDUMP_SIZE") - if size is not None: - coredump_size = "coredump-size %s" % size - if coredump_size is None: - coredump_size = "coredump-size unlimited" - - cpu_core_number = cls.get_least_used_cpu() - - cls.vpp_cmdline = [cls.vpp_bin, "unix", - "{", "nodaemon", debug_cli, "full-coredump", - 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", - "{", "plugin", "dpdk_plugin.so", "{", "disable", - "}", "plugin", "unittest_plugin.so", "{", "enable", - "}"] + cls.extra_vpp_plugin_config + ["}", ] - if cls.extra_vpp_punt_config is not None: - cls.vpp_cmdline.extend(cls.extra_vpp_punt_config) + cls.config.add('unix', 'coredump-size', + size if size is not None else 'unlimited') + + cls.config.add('unix', 'runtime-dir', cls.tempdir) + cls.config.add('api-segment', 'prefix', cls.shm_prefix) + cls.config.add('cpu', 'main-core', str(cls.get_least_used_cpu())) + cls.config.add('statseg', 'socket-name', cls.stats_sock) + if plugin_path is not None: - cls.vpp_cmdline.extend(["plugin_path", plugin_path]) + cls.config.add('plugins', 'path', plugin_path) + cls.config.add_plugin('dpdk_plugin.so', 'disable') + cls.config.add_plugin('unittest_plugin.so', 'enable') + + cls.vpp_cmdline = [cls.vpp_bin] + cls.config.shlex() cls.logger.info("vpp_cmdline args: %s" % cls.vpp_cmdline) cls.logger.info("vpp_cmdline: %s" % " ".join(cls.vpp_cmdline)) @@ -857,8 +853,8 @@ class VppTestCase(unittest.TestCase): for cf in checksum_fields: if hasattr(layer, cf): if ignore_zero_udp_checksums and \ - 0 == getattr(layer, cf) and \ - layer.name in udp_layers: + 0 == getattr(layer, cf) and \ + layer.name in udp_layers: continue delattr(layer, cf) checksums.append((counter, cf)) |