On Mon, Sep 26, 2022 at 10:17 AM Juraj Linkeš wrote: > All the necessary code needed to connect to a node in a topology with > a bit more, such as basic logging and some extra useful methods. > > To run the code, modify the config file, conf.yaml and execute ./main.py > from the root dts folder. Here's an example config: > executions: > - system_under_test: "SUT 1" > nodes: > - name: "SUT 1" > hostname: 127.0.0.1 > user: root > password: mypw.change.me > > There are configuration files with a README that help with setting up > the execution/development environment. > > The code only connects to a node. You'll see logs emitted to console > saying where DTS connected. > > There's only a bit of documentation, as there's not much to document. > We'll add some real docs when there's enough functionality to document, > when the HelloWorld testcases is in (point 4 in our roadmap below). What > will be documented later is runtime dependencies and how to set up the DTS > control node environment. > > This is our current roadmap: > 1. Review this patchset and do the rest of the items in parallel, if > possible. > 2. We have extracted the code needed to run the most basic testcase, > HelloWorld, which runs the DPDK Hello World application. We'll split > this along logical/functional boundaries and send after 1 is done. > 3. Once we have 2 applied, we're planning on adding a basic functional > testcase - pf_smoke. This send a bit of traffic, so the big addition is > the software traffic generator, Scapy. There's some work already done on > Traffic generators we'll be sending as a dependence on this patch > series. > 4. After 3, we'll add a basic performance testcase which doesn't use > Scapy, but Trex or Ixia instead. > 5. This is far in the future, but at this point we should have all of > the core functionality in place. What then remains is adding the rest of > the testcases. > > We're already working on items 2-4 and we may send more patches even > before this patch series is accepted if that's beneficial. The new > patches would then depend on this patch. > > This patch, as well as all others in the pipeline, are the result of > extensive DTS workgroup review which happens internally. If you'd like > us to make it more public we'd have no problem with that. > > v3: > Added project config files and developer tools. > Removed locks for parallel nodes, which are not needed now and will be > implemented much later (in a different patch). > > v4: > Minor fixes - added missing Exception and utils function. > > v5: > Reordered commits because the dependencies between commits changed. > Added more developer tools. > Added definitions of DTS testbed elements. > Reworked SSH implementation - split it so that the split between an > abstraction and the actual implementation is clearer. > Modified the directory structure to better organize the current and the > future code. > > Juraj Linkeš (9): > dts: add project tools config > dts: add developer tools > dts: add basic logging facility > dts: add remote session abstraction > dts: add ssh connection module > dts: add node base class > dts: add dts workflow module > dts: add dts executable script > maintainers: add dts maintainers > > Owen Hilyard (1): > dts: add config parser module > > .editorconfig | 2 +- > .gitignore | 9 +- > MAINTAINERS | 5 + > devtools/python-checkpatch.sh | 39 ++ > devtools/python-format.sh | 54 +++ > devtools/python-lint.sh | 26 ++ > doc/guides/contributing/coding_style.rst | 4 +- > dts/.devcontainer/devcontainer.json | 30 ++ > dts/Dockerfile | 39 ++ > dts/README.md | 154 ++++++++ > dts/conf.yaml | 6 + > dts/framework/__init__.py | 4 + > dts/framework/config/__init__.py | 99 +++++ > dts/framework/config/conf_yaml_schema.json | 73 ++++ > dts/framework/dts.py | 69 ++++ > dts/framework/exception.py | 71 ++++ > dts/framework/logger.py | 115 ++++++ > dts/framework/remote_session/__init__.py | 5 + > .../remote_session/remote_session.py | 100 +++++ > .../remote_session/session_factory.py | 16 + > dts/framework/remote_session/ssh_session.py | 189 ++++++++++ > dts/framework/settings.py | 108 ++++++ > dts/framework/testbed_model/__init__.py | 8 + > dts/framework/testbed_model/node.py | 83 +++++ > dts/framework/utils.py | 31 ++ > dts/main.py | 24 ++ > dts/poetry.lock | 351 ++++++++++++++++++ > dts/pyproject.toml | 55 +++ > 28 files changed, 1765 insertions(+), 4 deletions(-) > create mode 100755 devtools/python-checkpatch.sh > create mode 100755 devtools/python-format.sh > create mode 100755 devtools/python-lint.sh > create mode 100644 dts/.devcontainer/devcontainer.json > create mode 100644 dts/Dockerfile > create mode 100644 dts/README.md > create mode 100644 dts/conf.yaml > create mode 100644 dts/framework/__init__.py > create mode 100644 dts/framework/config/__init__.py > create mode 100644 dts/framework/config/conf_yaml_schema.json > create mode 100644 dts/framework/dts.py > create mode 100644 dts/framework/exception.py > create mode 100644 dts/framework/logger.py > create mode 100644 dts/framework/remote_session/__init__.py > create mode 100644 dts/framework/remote_session/remote_session.py > create mode 100644 dts/framework/remote_session/session_factory.py > create mode 100644 dts/framework/remote_session/ssh_session.py > create mode 100644 dts/framework/settings.py > create mode 100644 dts/framework/testbed_model/__init__.py > create mode 100644 dts/framework/testbed_model/node.py > create mode 100644 dts/framework/utils.py > create mode 100755 dts/main.py > create mode 100644 dts/poetry.lock > create mode 100644 dts/pyproject.toml > > -- > 2.30.2 > > Everything looks good from my perspective.