diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/framework.py | 74 | ||||
-rw-r--r-- | test/hook.py | 8 | ||||
-rw-r--r-- | test/run_tests.py | 13 |
3 files changed, 38 insertions, 57 deletions
diff --git a/test/framework.py b/test/framework.py index 2167399b122..beea515df53 100644 --- a/test/framework.py +++ b/test/framework.py @@ -17,7 +17,7 @@ from inspect import getdoc, isclass from traceback import format_exception from logging import FileHandler, DEBUG, Formatter from scapy.packet import Raw -from hook import StepHook, PollHook +from hook import StepHook, PollHook, VppDiedError from vpp_pg_interface import VppPGInterface from vpp_sub_interface import VppSubInterface from vpp_lo_interface import VppLoInterface @@ -120,21 +120,13 @@ def pump_output(testclass): def running_extended_tests(): - try: - s = os.getenv("EXTENDED_TESTS") - return True if s.lower() in ("y", "yes", "1") else False - except: - return False - return False + s = os.getenv("EXTENDED_TESTS", "n") + return True if s.lower() in ("y", "yes", "1") else False def running_on_centos(): - try: - os_id = os.getenv("OS_ID") - return True if "centos" in os_id.lower() else False - except: - return False - return False + os_id = os.getenv("OS_ID", "") + return True if "centos" in os_id.lower() else False class KeepAliveReporter(object): @@ -217,21 +209,11 @@ class VppTestCase(unittest.TestCase): @classmethod def setUpConstants(cls): """ Set-up the test case class based on environment variables """ - try: - s = os.getenv("STEP") - cls.step = True if s.lower() in ("y", "yes", "1") else False - except: - cls.step = False - try: - d = os.getenv("DEBUG") - except: - d = None - try: - c = os.getenv("CACHE_OUTPUT", "1") - cls.cache_vpp_output = \ - False if c.lower() in ("n", "no", "0") else True - except: - cls.cache_vpp_output = True + s = os.getenv("STEP", "n") + cls.step = True if s.lower() in ("y", "yes", "1") else False + d = os.getenv("DEBUG", None) + c = os.getenv("CACHE_OUTPUT", "1") + cls.cache_vpp_output = False if c.lower() in ("n", "no", "0") else True cls.set_debug_flags(d) cls.vpp_bin = os.getenv('VPP_TEST_BIN', "vpp") cls.plugin_path = os.getenv('VPP_TEST_PLUGIN_PATH') @@ -249,12 +231,9 @@ class VppTestCase(unittest.TestCase): if cls.step or cls.debug_gdb or cls.debug_gdbserver: debug_cli = "cli-listen localhost:5002" coredump_size = None - try: - size = os.getenv("COREDUMP_SIZE") - if size is not None: - coredump_size = "coredump-size %s" % size - except: - pass + 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" cls.vpp_cmdline = [cls.vpp_bin, "unix", @@ -290,7 +269,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...") + sys.stdin.readline("Press ENTER to continue running the testcase...") @classmethod def run_vpp(cls): @@ -368,7 +347,7 @@ class VppTestCase(unittest.TestCase): cls.sleep(0.1, "after vpp startup, before initial poll") try: hook.poll_vpp() - except: + except VppDiedError: cls.vpp_startup_failed = True cls.logger.critical( "VPP died shortly after startup, check the" @@ -376,23 +355,22 @@ class VppTestCase(unittest.TestCase): raise try: cls.vapi.connect() - except: + except Exception: try: cls.vapi.disconnect() - except: + except Exception: pass if cls.debug_gdbserver: print(colorize("You're running VPP inside gdbserver but " "VPP-API connection failed, did you forget " "to 'continue' VPP from within gdb?", RED)) raise - except: - t, v, tb = sys.exc_info() + except Exception: try: cls.quit() - except: + except Exception: pass - raise (t, v, tb) + raise @classmethod def quit(cls): @@ -405,8 +383,9 @@ 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...") + sys.stdin.readline( + "When done debugging, press ENTER to kill the process and " + "finish running the testcase...") os.write(cls.pump_thread_wakeup_pipe[1], 'ding dong wake up') cls.pump_thread_stop_flag.set() @@ -732,7 +711,7 @@ class VppTestCase(unittest.TestCase): msg = msg % (getdoc(name_or_class).strip(), real_value, str(name_or_class(real_value)), expected_value, str(name_or_class(expected_value))) - except: + except Exception: msg = "Invalid %s: %s does not match expected value %s" % ( name_or_class, real_value, expected_value) @@ -1051,10 +1030,7 @@ class VppTestRunner(unittest.TextTestRunner): test_option = "TEST" def parse_test_option(self): - try: - f = os.getenv(self.test_option) - except: - f = None + f = os.getenv(self.test_option, None) filter_file_name = None filter_class_name = None filter_func_name = None diff --git a/test/hook.py b/test/hook.py index 44b432e5c25..49b41c91dff 100644 --- a/test/hook.py +++ b/test/hook.py @@ -1,5 +1,6 @@ import signal import os +import sys import traceback from log import RED, single_line_delim, double_line_delim from debug import spawn_gdb @@ -167,14 +168,15 @@ class StepHook(PollHook): print("Calls in/below that stack frame will be not be stepped anymore") print(single_line_delim) while True: - choice = raw_input("Enter your choice, if any, and press ENTER to " - "continue running the testcase...") + choice = sys.stdin.readline( + "Enter your choice, if any, and press ENTER to continue " + "running the testcase...") if choice == "": choice = None try: if choice is not None: num = int(choice) - except: + except TypeError: print("Invalid input") continue if choice is not None and (num < 0 or num >= len(stack)): diff --git a/test/run_tests.py b/test/run_tests.py index 419b8c679cb..24c51a18f9a 100644 --- a/test/run_tests.py +++ b/test/run_tests.py @@ -165,6 +165,9 @@ if __name__ == '__main__': except: debug = None + s = os.getenv("STEP", "n") + step = True if s.lower() in ("y", "yes", "1") else False + parser = argparse.ArgumentParser(description="VPP unit tests") parser.add_argument("-f", "--failfast", action='count', help="fast failure flag") @@ -189,7 +192,11 @@ if __name__ == '__main__': attempts = retries + 1 if attempts > 1: print("Perform %s attempts to pass the suite..." % attempts) - if debug is None or debug.lower() not in ["gdb", "gdbserver"]: + if (debug is not None and debug.lower() in ["gdb", "gdbserver"]) or step: + # don't fork if requiring interactive terminal.. + sys.exit(not VppTestRunner( + verbosity=verbose, failfast=failfast).run(suite).wasSuccessful()) + else: while True: result, failed = run_forked(suite) attempts = attempts - 1 @@ -199,7 +206,3 @@ if __name__ == '__main__': suite = suite_from_failed(suite, failed) continue sys.exit(result) - - # don't fork if debugging.. - sys.exit(not VppTestRunner(verbosity=verbose, - failfast=failfast).run(suite).wasSuccessful()) |