X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fframework.py;h=f82f07503872a54e74b46c04e7a39728d8930eea;hb=413f4a5b2123c1625d615315db293a080078482b;hp=6c1ba5e3f339d63435fcb55fd9e08e52d7fefa26;hpb=68ebc83e60f91104667b5ee4b4ab13d9716ee860;p=vpp.git diff --git a/test/framework.py b/test/framework.py index 6c1ba5e3f33..f82f0750387 100644 --- a/test/framework.py +++ b/test/framework.py @@ -32,6 +32,7 @@ from util import ppp, is_core_present from scapy.layers.inet import IPerror, TCPerror, UDPerror, ICMPerror from scapy.layers.inet6 import ICMPv6DestUnreach, ICMPv6EchoRequest from scapy.layers.inet6 import ICMPv6EchoReply + if os.name == 'posix' and sys.version_info[0] < 3: # using subprocess32 is recommended by python official documentation # @ https://docs.python.org/2/library/subprocess.html @@ -39,20 +40,17 @@ if os.name == 'posix' and sys.version_info[0] < 3: else: import subprocess - PASS = 0 FAIL = 1 ERROR = 2 SKIP = 3 TEST_RUN = 4 - debug_framework = False if os.getenv('TEST_DEBUG', "0") == "1": debug_framework = True import debug_internal - """ Test framework module. @@ -120,7 +118,7 @@ def pump_output(testclass): split = read.splitlines(True) if len(stderr_fragment) > 0: split[0] = "%s%s" % (stderr_fragment, split[0]) - if len(split) > 0 and split[-1].endswith("\n"): + if len(split) > 0 and split[-1].endswith(b"\n"): limit = None else: limit = -1 @@ -130,8 +128,8 @@ def pump_output(testclass): for line in split[:limit]: testclass.logger.debug( "VPP STDERR: %s" % line.rstrip("\n")) - # ignoring the dummy pipe here intentionally - the flag will take care - # of properly terminating the loop + # ignoring the dummy pipe here intentionally - the + # flag will take care of properly terminating the loop def is_skip_aarch64_set(): @@ -193,6 +191,8 @@ class VppTestCase(unittest.TestCase): classes. It provides methods to create and run test case. """ + extra_vpp_punt_config = [] + @property def packet_infos(self): """List of packet infos""" @@ -308,6 +308,8 @@ class VppTestCase(unittest.TestCase): "{", "plugin", "dpdk_plugin.so", "{", "disable", "}", "plugin", "unittest_plugin.so", "{", "enable", "}", "}", ] + if cls.extra_vpp_punt_config is not None: + cls.vpp_cmdline.extend(cls.extra_vpp_punt_config) if plugin_path is not None: cls.vpp_cmdline.extend(["plugin_path", plugin_path]) cls.logger.info("vpp_cmdline args: %s" % cls.vpp_cmdline) @@ -483,7 +485,7 @@ class VppTestCase(unittest.TestCase): if hasattr(cls, 'pump_thread_stop_flag'): cls.pump_thread_stop_flag.set() if hasattr(cls, 'pump_thread_wakeup_pipe'): - os.write(cls.pump_thread_wakeup_pipe[1], 'ding dong wake up') + os.write(cls.pump_thread_wakeup_pipe[1], b'ding dong wake up') if hasattr(cls, 'pump_thread'): cls.logger.debug("Waiting for pump thread to stop") cls.pump_thread.join() @@ -524,7 +526,7 @@ class VppTestCase(unittest.TestCase): stderr_log(single_line_delim) stderr_log('VPP output to stderr while running %s:', cls.__name__) stderr_log(single_line_delim) - vpp_output = "".join(cls.vpp_stderr_deque) + vpp_output = "".join(str(cls.vpp_stderr_deque)) with open(cls.tempdir + '/vpp_stderr.txt', 'w') as f: f.write(vpp_output) stderr_log('\n%s', vpp_output) @@ -840,8 +842,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)) @@ -916,7 +918,7 @@ class VppTestCase(unittest.TestCase): def assert_packet_counter_equal(self, counter, expected_value): counters = self.vapi.cli("sh errors").split('\n') counter_value = -1 - for i in range(1, len(counters)-1): + for i in range(1, len(counters)): results = counters[i].split() if results[1] == counter: counter_value = int(results[0]) @@ -927,18 +929,18 @@ class VppTestCase(unittest.TestCase): @classmethod def sleep(cls, timeout, remark=None): if hasattr(cls, 'logger'): - cls.logger.debug("Starting sleep for %ss (%s)" % (timeout, remark)) + cls.logger.debug("Starting sleep for %es (%s)", timeout, remark) before = time.time() time.sleep(timeout) after = time.time() - if after - before > 2 * timeout: + if hasattr(cls, 'logger') and after - before > 2 * timeout: cls.logger.error("unexpected time.sleep() result - " - "slept for %ss instead of ~%ss!" % ( - after - before, timeout)) + "slept for %es instead of ~%es!", + after - before, timeout) if hasattr(cls, 'logger'): cls.logger.debug( - "Finished sleep (%s) - slept %ss (wanted %ss)" % ( - remark, after - before, timeout)) + "Finished sleep (%s) - slept %es (wanted %es)", + remark, after - before, timeout) def send_and_assert_no_replies(self, intf, pkts, remark="", timeout=None): self.vapi.cli("clear trace") @@ -1258,6 +1260,7 @@ class VppTestRunner(unittest.TextTestRunner): """ A basic test runner implementation which prints results to standard error. """ + @property def resultclass(self): """Class maintaining the results of the tests""" @@ -1266,7 +1269,6 @@ class VppTestRunner(unittest.TextTestRunner): def __init__(self, keep_alive_pipe=None, descriptions=True, verbosity=1, result_pipe=None, failfast=False, buffer=False, resultclass=None, print_summary=True): - # ignore stream setting here, use hard-coded stdout to be in sync # with prints from VppTestCase methods ... super(VppTestRunner, self).__init__(sys.stdout, descriptions,