From: Dean Marx <dmarx@iol.unh.edu>
To: probb@iol.unh.edu, luca.vizzarro@arm.com,
yoan.picchi@foss.arm.com, Honnappa.Nagarahalli@arm.com,
paul.szczepanek@arm.com
Cc: dev@dpdk.org, Dean Marx <dmarx@iol.unh.edu>
Subject: [PATCH v1 1/3] dts: rewrite README
Date: Tue, 27 May 2025 11:37:32 -0400 [thread overview]
Message-ID: <20250527153734.368235-1-dmarx@iol.unh.edu> (raw)
Remove unnecessary information from README.md, and add new sections to clarify
the purpose/use of DTS along with clear setup instructions.
Signed-off-by: Dean Marx <dmarx@iol.unh.edu>
---
dts/README.md | 104 +++++++++++++++++++-------------------------------
1 file changed, 39 insertions(+), 65 deletions(-)
diff --git a/dts/README.md b/dts/README.md
index 2b3a7f89c5..879cf65abc 100644
--- a/dts/README.md
+++ b/dts/README.md
@@ -1,81 +1,55 @@
-# DTS Environment
+# Description
-The execution and development environments for DTS are the same,
-a [Docker](https://docs.docker.com/) container defined by our [Dockerfile](./Dockerfile).
-Using a container for the development environment helps with a few things.
+DTS is a testing framework and set of testsuites for end to end testing of DPDK and DPDK
+enabled hardware. Unlike the DPDK unit test application, DTS is intended to be used to
+evaluate real DPDK workloads run over supported hardware. For instance, DTS will control
+a traffic generator node which will send packets to a system under test node which is
+running a DPDK application, and evaluate those results.
-1. It helps enforce the boundary between the DTS environment and the TG/SUT,
- something which caused issues in the past.
-2. It makes creating containers to run DTS inside automated tooling much easier, since
- they can be based off of a known-working environment that will be updated as DTS is.
-3. It abstracts DTS from the server it is running on. This means that the bare-metal OS
- can be whatever corporate policy or your personal preferences dictate,
- and DTS does not have to try to support all distros that are supported by DPDK CI.
-4. It makes automated testing for DTS easier,
- since new dependencies can be sent in with the patches.
-5. It fixes the issue of undocumented dependencies,
- where some test suites require Python libraries that are not installed.
-6. Allows everyone to use the same Python version easily,
- even if they are using a distribution or Windows with out-of-date packages.
-7. Allows you to run the tester on Windows while developing via Docker for Windows.
+# Supported Test Node Topologies
-## Tips for setting up a development environment
+DTS is a python application which will control a traffic generator node (TG) and system
+under test node (SUT). The nodes represent a DPDK device (usually a NIC) located on a
+host. The devices/NICs can be located on two separate servers, or on the same server. If you use
+the same server for both NICs, install them on separate NUMA domains if possible (this is ideal
+for performance testing.)
-### Getting a docker shell
+1. 2 link: Represents a topology in which the TG node and SUT node both have two network interfaces
+which form the TG <-> SUT connection. An example of this would be a dual interface NIC which is the
+TG node connected to a dual interface NIC which is the SUT node. Interface 0 on TG <-> interface 0
+on SUT, interface 1 on TG <-> interface 1 on SUT.
+2. 1 link: Works, but may result in skips for testsuites which are explicitly decorated with a
+2 link requirement. Represents a topology in which the TG node and SUT node are both located on one
+network interface. An example of this would be a dual interface NIC with a connection between
+its own ports.
-These commands will give you a bash shell inside the container
-with all the Python dependencies installed.
-This will place you inside a Python virtual environment.
-DTS is mounted via a volume, which is essentially a symlink from the host to the container.
-This enables you to edit and run inside the container
-and then delete the container when you are done, keeping your work.
-It is also strongly recommended that you mount your SSH keys into the container
-to allow you to connect to hosts without specifying a password.
+# Simple linux setup
-#### Start docker container with SSH keys
+1. On your TG and SUT nodes, add a dedicated user. In this example I will name the user "dts."
+2. Grant passwordless sudo to the dts user, like so:
+ 2a: enter 'visudo' in your terminal
+ 2b: In the visudo text editor, add:
+ dts ALL=(ALL:ALL) NOPASSWD:ALL
+3. DTS uses ssh key auth to control the nodes. Copy your ssh keys to the TG and SUT:
+ ssh-copy-id dts@{your host}.
-```shell
-docker build --target dev -t dpdk-dts .
-docker run -v $(pwd)/..:/dpdk -v /home/dtsuser/.ssh:/root/.ssh:ro -it dpdk-dts bash
-$ poetry install
-$ poetry shell
-```
+For additional detail, please refer to [dts.rst](doc/guides/tools/dts.rst)
+
+# DTS Configuration
-#### Start docker container without SSH keys
+DTS requires two yaml files to be filled out with information about your environment,
+test_run.yaml and nodes.yaml, which follow the format illustrated in the example files.
```shell
docker build --target dev -t dpdk-dts .
-docker run -v $(pwd)/..:/dpdk -it dpdk-dts bash
+docker run -v $(pwd)/..:/dpdk -v /home/dtsuser/.ssh:/root/.ssh:ro -it dpdk-dts bash
$ poetry install
-$ poetry shell
+$ poetry run ./main.py
```
-### Vim/Emacs
-
-Any editor in the Ubuntu repos should be easy to use,
-with Vim and Emacs already installed.
-You can add your normal config files as a volume,
-enabling you to use your preferred settings.
-
-```shell
-docker run -v ${HOME}/.vimrc:/root/.vimrc -v $(pwd)/..:/dpdk -it dpdk-dts bash
-```
-
-### Visual Studio Code
-
-VSCode has first-class support for developing with containers.
-You may need to run the non-Docker setup commands in the integrated terminal.
-DTS contains a .devcontainer config,
-so if you open the folder in VSCode it should prompt you to use the dev container
-assuming you have the plugin installed.
-Please refer to
-[VS Development Containers Docs](https://code.visualstudio.com/docs/remote/containers)
-to set it all up.
-Additionally, there is a line in `.devcontainer/devcontainer.json` that, when included,
-will mount the SSH keys of the user currently running VSCode into the container for you.
-The `source` on this line can be altered to mount any SSH keys
-on the local machine into the container at the correct location.
+These commands will give you a bash shell inside a docker container
+with all DTS Python dependencies installed.
-### Other
+## Other
-Searching for '$IDE dev containers' will probably lead you in the right direction.
+Searching for '$IDE dev containers' will probably lead you in the right direction.
\ No newline at end of file
--
2.49.0
next reply other threads:[~2025-05-27 15:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-27 15:37 Dean Marx [this message]
2025-05-27 15:37 ` [PATCH v1 2/3] dts: rewrite dts rst Dean Marx
2025-05-28 21:25 ` Patrick Robb
2025-05-29 12:27 ` Paul Szczepanek
2025-05-27 15:37 ` [PATCH v1 3/3] dts: fix doc generation bug Dean Marx
2025-05-28 20:28 ` Patrick Robb
2025-05-29 12:28 ` Paul Szczepanek
2025-05-28 20:40 ` [PATCH v1 1/3] dts: rewrite README Patrick Robb
2025-05-29 12:27 ` Paul Szczepanek
2025-05-29 12:40 ` Paul Szczepanek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250527153734.368235-1-dmarx@iol.unh.edu \
--to=dmarx@iol.unh.edu \
--cc=Honnappa.Nagarahalli@arm.com \
--cc=dev@dpdk.org \
--cc=luca.vizzarro@arm.com \
--cc=paul.szczepanek@arm.com \
--cc=probb@iol.unh.edu \
--cc=yoan.picchi@foss.arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).