make test: code cleanup

Change-Id: Ic689de569e5b6e6209d16d6acdb13c489daca1f5
Signed-off-by: Klement Sekera <ksekera@cisco.com>
This commit is contained in:
Klement Sekera
2018-03-21 12:35:51 +01:00
committed by Damjan Marion
parent 3f2dd30b0b
commit 13a83ef4d4
3 changed files with 38 additions and 57 deletions

View File

@ -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")
s = os.getenv("EXTENDED_TESTS", "n")
return True if s.lower() in ("y", "yes", "1") else False
except:
return False
return False
def running_on_centos():
try:
os_id = os.getenv("OS_ID")
os_id = os.getenv("OS_ID", "")
return True if "centos" in os_id.lower() else False
except:
return False
return 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")
s = os.getenv("STEP", "n")
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:
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
except:
cls.cache_vpp_output = True
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
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

View File

@ -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)):

View File

@ -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())