Hi there, sending some more final code, hence dropping the RFC.
v2: - applied suggested changes to the port topology config - re-implemented FSM from a generator function to a more traditional approach where each state is actually is self-contained in its own class. - dropped the status enums (as a consequence of the above) - fixed some docstrings Best, Luca Luca Vizzarro (7): dts: add port topology configuration dts: isolate test specification to config dts: revamp Topology model dts: improve Port model dts: add global runtime context dts: revamp runtime internals dts: remove node distinction doc/api/dts/framework.context.rst | 8 + doc/api/dts/framework.remote_session.dpdk.rst | 8 + doc/api/dts/framework.remote_session.rst | 1 + doc/api/dts/framework.test_run.rst | 8 + doc/api/dts/index.rst | 2 + doc/guides/conf.py | 3 +- dts/framework/config/__init__.py | 138 ++-- dts/framework/config/node.py | 96 +-- dts/framework/config/test_run.py | 214 +++++- dts/framework/context.py | 120 ++++ dts/framework/exception.py | 33 +- dts/framework/logger.py | 26 +- .../sut_node.py => remote_session/dpdk.py} | 462 ++++++------- dts/framework/remote_session/dpdk_shell.py | 59 +- .../single_active_interactive_shell.py | 12 +- dts/framework/remote_session/testpmd_shell.py | 27 +- dts/framework/runner.py | 547 +-------------- dts/framework/test_result.py | 138 +--- dts/framework/test_run.py | 641 ++++++++++++++++++ dts/framework/test_suite.py | 80 ++- dts/framework/testbed_model/capability.py | 70 +- dts/framework/testbed_model/linux_session.py | 47 +- dts/framework/testbed_model/node.py | 100 +-- dts/framework/testbed_model/os_session.py | 16 +- dts/framework/testbed_model/port.py | 97 ++- dts/framework/testbed_model/tg_node.py | 105 --- dts/framework/testbed_model/topology.py | 165 ++--- .../traffic_generator/__init__.py | 8 +- .../testbed_model/traffic_generator/scapy.py | 12 +- .../traffic_generator/traffic_generator.py | 9 +- dts/framework/utils.py | 8 +- dts/nodes.example.yaml | 24 +- dts/test_runs.example.yaml | 4 + dts/tests/TestSuite_blocklist.py | 6 +- dts/tests/TestSuite_checksum_offload.py | 14 +- dts/tests/TestSuite_dual_vlan.py | 6 +- dts/tests/TestSuite_dynamic_config.py | 8 +- dts/tests/TestSuite_dynamic_queue_conf.py | 1 - dts/tests/TestSuite_hello_world.py | 2 +- dts/tests/TestSuite_l2fwd.py | 9 +- dts/tests/TestSuite_mac_filter.py | 10 +- dts/tests/TestSuite_mtu.py | 17 +- dts/tests/TestSuite_pmd_buffer_scatter.py | 9 +- ...stSuite_port_restart_config_persistency.py | 8 +- dts/tests/TestSuite_promisc_support.py | 8 +- dts/tests/TestSuite_smoke_tests.py | 9 +- dts/tests/TestSuite_softnic.py | 6 +- dts/tests/TestSuite_uni_pkt.py | 14 +- dts/tests/TestSuite_vlan.py | 8 +- 49 files changed, 1726 insertions(+), 1697 deletions(-) create mode 100644 doc/api/dts/framework.context.rst create mode 100644 doc/api/dts/framework.remote_session.dpdk.rst create mode 100644 doc/api/dts/framework.test_run.rst create mode 100644 dts/framework/context.py rename dts/framework/{testbed_model/sut_node.py => remote_session/dpdk.py} (59%) create mode 100644 dts/framework/test_run.py delete mode 100644 dts/framework/testbed_model/tg_node.py -- 2.43.0