8800f732f8
- Make framework.py classes a subset of asfframework.py classes - Remove all packet related code from asfframework.py - Add test class and test case set up debug output to log - Repatriate packet tests from asf to test directory - Remove non-packet related code from framework.py and inherit them from asfframework.py classes - Clean up unused import variables - Re-enable BFD tests on Ubuntu 22.04 and fix intermittent test failures in echo_looped_back testcases (where # control packets verified but not guaranteed to be received during test) - Re-enable Wireguard tests on Ubuntu 22.04 and fix intermittent test failures in handshake ratelimiting testcases and event testcase - Run Wiregard testcase suites solo - Improve debug output in log.txt - Increase VCL/LDP post sleep timeout to allow iperf server to finish cleanly. - Fix pcap history files to be sorted by suite and testcase and ensure order/timestamp is correct based on creation in the testcase. - Decode pcap files for each suite and testcase for all errors or if configured via comandline option / env var - Improve vpp corefile detection to allow complete corefile generation - Disable vm vpp interfaces testcases on debian11 - Clean up failed unittest dir when retrying failed testcases and unify testname directory and failed linknames into framwork functions Type: test Change-Id: I0764f79ea5bb639d278bf635ed2408d4d5220e1e Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
45 lines
1.3 KiB
Python
Executable File
45 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import os
|
|
import unittest
|
|
import importlib
|
|
|
|
|
|
def discover_tests(directory, callback):
|
|
do_insert = True
|
|
for _f in os.listdir(directory):
|
|
f = "%s/%s" % (directory, _f)
|
|
if os.path.isdir(f):
|
|
discover_tests(f, callback)
|
|
continue
|
|
if not os.path.isfile(f):
|
|
continue
|
|
if do_insert:
|
|
sys.path.insert(0, directory)
|
|
do_insert = False
|
|
if not _f.startswith("test_") or not _f.endswith(".py"):
|
|
continue
|
|
name = "".join(f.split("/")[-1].split(".")[:-1])
|
|
module = importlib.import_module(name)
|
|
for name, cls in module.__dict__.items():
|
|
if not isinstance(cls, type):
|
|
continue
|
|
if not issubclass(cls, unittest.TestCase):
|
|
continue
|
|
if (
|
|
name == "VppTestCase"
|
|
or name == "VppAsfTestCase"
|
|
or name.startswith("Template")
|
|
):
|
|
continue
|
|
for method in dir(cls):
|
|
if not callable(getattr(cls, method)):
|
|
continue
|
|
if method.startswith("test_"):
|
|
callback(_f, cls, method)
|
|
|
|
|
|
def print_callback(file_name, cls, method):
|
|
print("%s.%s.%s" % (file_name, cls.__name__, method))
|