| RDS self-tests |
| ============== |
| |
| These scripts provide a coverage test for RDS-TCP and RDS-RDMA (over |
| RoCE/RXE) by setting up two endpoints and running RDS packets between |
| them. The TCP path creates two network namespaces; the RDMA path uses |
| an RXE (soft RoCE) device backed by a veth pair. A workload of 50000 |
| hashes, each 64 characters in size, is passed over an RDS socket on |
| this test network with an optional probability of packet loss or |
| corruption. A passing test means the RDS stack was able to recover |
| properly. The provided config.sh can be used to compile the kernel |
| with the necessary gcov options; pass -r to also enable the kernel |
| configs required for the RDMA transport. The kernel may optionally be |
| configured to omit the coverage report as well. |
| |
| USAGE: |
| rds_run.sh [-d logdir] [-l packet_loss] [-c packet_corruption] |
| [-u packet_duplicate] [-t timeout] |
| [-T tcp|rdma|tcp,rdma] |
| |
| OPTIONS: |
| -d Log directory. If set, logs will be stored in the |
| given dir, or skipped if unset. Log dir can also be |
| set through the RDS_LOG_DIR env variable |
| |
| -l Simulates a percentage of packet loss |
| |
| -c Simulates a percentage of packet corruption |
| |
| -u Simulates a percentage of packet duplication. |
| |
| -t Test timeout. Defaults to tools/testing/selftests/net/rds/settings |
| |
| -T Comma-separated list of transports to test. Accepts |
| "tcp", "rdma", or "tcp,rdma". Defaults to "tcp". Use |
| config.sh -r to enable required RDMA configs |
| |
| ENV VARIABLES: |
| RDS_LOG_DIR Log directory. If set, logs will be stored in |
| the given dir, or skipped if unset. Log dir |
| can also be set with the -d flag. |
| |
| Use with --rwdir on the CI path to retain logs after |
| test compleation. Log dir end point must be within |
| the specified --rwdir path for logs to persist on |
| the host. |
| |
| SUDO_USER The user name that should be used for tcpdump |
| --relinquish-privileges. Set this to a user |
| belonging to the sudoers group to avoid drop |
| privilege errors with the vng 9p filesystem |
| which may result in empty pcaps |
| |
| EXAMPLE: |
| |
| # Create a suitable gcov enabled .config |
| tools/testing/selftests/net/rds/config.sh -g |
| |
| # Optionally add RDMA configs (CONFIG_RDS_RDMA, CONFIG_RDMA_RXE) |
| tools/testing/selftests/net/rds/config.sh -r |
| |
| # Alternatly create a gcov disabled .config |
| tools/testing/selftests/net/rds/config.sh |
| |
| # Config paths may also be specified with the -c flag |
| tools/testing/selftests/net/rds/config.sh -c .config.local |
| |
| # build the kernel |
| vng --build --config .config |
| |
| # launch the tests in a VM |
| vng -v --rwdir ./ --run . --user root --cpus 4 -- \ |
| "export PYTHONPATH=tools/testing/selftests/net/; \ |
| export SUDO_USER=example_user; \ |
| export RDS_LOG_DIR=tools/testing/selftests/net/rds/rds_logs; \ |
| tools/testing/selftests/net/rds/rds_run.sh -T tcp,rdma" |
| |