X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fframework.py;h=5eeb5187041124a1981742d3862095965dabb16a;hb=919efad2671993d4c6d5a0dba8eeb99d5c60edf1;hp=a0dd538e5b0e9735ed9022162c038dda9dfb224c;hpb=b6d92d811ce39efd5276d1499afde7a1628d03ca;p=vpp.git diff --git a/test/framework.py b/test/framework.py index a0dd538e5b0..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 @@ -40,6 +42,12 @@ if os.name == 'posix' and sys.version_info[0] < 3: else: import subprocess +# Python2/3 compatible +try: + input = raw_input +except NameError: + pass + PASS = 0 FAIL = 1 ERROR = 2 @@ -132,23 +140,31 @@ def pump_output(testclass): # flag will take care of properly terminating the loop -def is_skip_aarch64_set(): +def _is_skip_aarch64_set(): return os.getenv('SKIP_AARCH64', 'n').lower() in ('yes', 'y', '1') +is_skip_aarch64_set = _is_skip_aarch64_set() -def is_platform_aarch64(): + +def _is_platform_aarch64(): return platform.machine() == 'aarch64' +is_platform_aarch64 = _is_platform_aarch64() + -def running_extended_tests(): +def _running_extended_tests(): s = os.getenv("EXTENDED_TESTS", "n") return True if s.lower() in ("y", "yes", "1") else False +running_extended_tests = _running_extended_tests() + -def running_on_centos(): +def _running_on_centos(): os_id = os.getenv("OS_ID", "") return True if "centos" in os_id.lower() else False +running_on_centos = _running_on_centos + class KeepAliveReporter(object): """ @@ -191,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): @@ -287,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)) @@ -339,7 +349,7 @@ class VppTestCase(unittest.TestCase): print("Now is the time to attach a gdb by running the above " "command and set up breakpoints etc.") print(single_line_delim) - raw_input("Press ENTER to continue running the testcase...") + input("Press ENTER to continue running the testcase...") @classmethod def run_vpp(cls): @@ -479,8 +489,8 @@ class VppTestCase(unittest.TestCase): print(double_line_delim) print("VPP or GDB server is still running") print(single_line_delim) - raw_input("When done debugging, press ENTER to kill the " - "process and finish running the testcase...") + input("When done debugging, press ENTER to kill the " + "process and finish running the testcase...") # first signal that we want to stop the pump thread, then wake it up if hasattr(cls, 'pump_thread_stop_flag'): @@ -843,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))