Add an automated way to gather available capabilities of the tested hardware and skip test suites or cases which require capabilities that are not available.
This is done through two decorators: 1. The first marks a test suite method as test case. This populates the default attributes of each test case. 2. The seconds adds the required capabilities to a test suite or case, using the attributes from 1). Two types of capabilities are added: 1. NIC capabilities. These are gathered once DPDK has been built because we use testpmd for this. It's possible to add a function that will add configuration before assessing capabilities associated with the function. This is because some capabilities return different status with different configuration present. 2. The topology capability. Each test case is marked as requiring a default topology. The required topology of a test case (or a whole test suite) may be change with the second decorator. This is how it all works: 1. The required capabilities are first all gathered from all test suites and test cases. 2. The list of required capabilities is divided into supported and unsupported capabilities. In this step, the probing of hardware and/or anything else that needs to happen to gauge whether a capability is supported is done. 3. Each test suite and test case is then marked to be skipped if any of their required capabilities are not supported. Depends-on: patch-142276 ("dts: add methods for modifying MTU to testpmd shell") Juraj Linkeš (12): dts: fix default device error handling mode dts: add the aenum dependency dts: add test case decorators dts: add mechanism to skip test cases or suites dts: add support for simpler topologies dst: add basic capability support dts: add testpmd port information caching dts: add NIC capability support dts: add topology capability doc: add DTS capability doc sources dts: add Rx offload capabilities dts: add NIC capabilities from show port info .../framework.testbed_model.capability.rst | 6 + doc/api/dts/framework.testbed_model.rst | 2 + .../dts/framework.testbed_model.topology.rst | 6 + dts/framework/remote_session/testpmd_shell.py | 461 +++++++++++++++- dts/framework/runner.py | 155 +++--- dts/framework/test_result.py | 120 +++-- dts/framework/test_suite.py | 161 +++++- dts/framework/testbed_model/capability.py | 491 ++++++++++++++++++ dts/framework/testbed_model/node.py | 2 +- dts/framework/testbed_model/port.py | 4 +- dts/framework/testbed_model/topology.py | 128 +++++ dts/poetry.lock | 14 +- dts/pyproject.toml | 1 + dts/tests/TestSuite_hello_world.py | 10 +- dts/tests/TestSuite_os_udp.py | 3 +- dts/tests/TestSuite_pmd_buffer_scatter.py | 14 +- dts/tests/TestSuite_smoke_tests.py | 8 +- 17 files changed, 1429 insertions(+), 157 deletions(-) create mode 100644 doc/api/dts/framework.testbed_model.capability.rst create mode 100644 doc/api/dts/framework.testbed_model.topology.rst create mode 100644 dts/framework/testbed_model/capability.py create mode 100644 dts/framework/testbed_model/topology.py -- 2.34.1