mbox series

[net-next,v8,00/12] selftests: ncdevmem: Add ncdevmem to ksft

Message ID 20241107181211.3934153-1-sdf@fomichev.me
Headers show
Series selftests: ncdevmem: Add ncdevmem to ksft | expand

Message

Stanislav Fomichev Nov. 7, 2024, 6:11 p.m. UTC
The goal of the series is to simplify and make it possible to use
ncdevmem in an automated way from the ksft python wrapper.

ncdevmem is slowly mutated into a state where it uses stdout
to print the payload and the python wrapper is added to
make sure the arrived payload matches the expected one.

v8:
- move error() calls into enable_reuseaddr() (Joe)
- bail out when number of queues is 1 (Joe)
- use socat instead of nc (Joe)
- fix warning about string truncation buf[256]->buf[40] (Jakub)

v7:
- fix validation (Mina)
- add support for working with non ::ffff-prefixed addresses (Mina)

v6:
- fix compilation issue in 'Unify error handling' patch (Jakub)

v5:
- properly handle errors from inet_pton() and socket() (Paolo)
- remove unneeded import from python selftest (Paolo)

v4:
- keep usage example with validation (Mina)
- fix compilation issue in one patch (s/start_queues/start_queue/)

v3:
- keep and refine the comment about ncdevmem invocation (Mina)
- add the comment about not enforcing exit status for ntuple reset (Mina)
- make configure_headersplit more robust (Mina)
- use num_queues/2 in selftest and let the users override it (Mina)
- remove memory_provider.memcpy_to_device (Mina)
- keep ksft as is (don't use -v validate flags): we are gonna
  need a --debug-disable flag to make it less chatty; otherwise
  it times out when sending too much data; so leaving it as
  a separate follow up

v2:
- don't remove validation (Mina)
- keep 5-tuple flow steering but use it only when -c is provided (Mina)
- remove separate flag for probing (Mina)
- move ncdevmem under drivers/net/hw, not drivers/net (Jakub)

Cc: Mina Almasry <almasrymina@google.com>

Stanislav Fomichev (12):
  selftests: ncdevmem: Redirect all non-payload output to stderr
  selftests: ncdevmem: Separate out dmabuf provider
  selftests: ncdevmem: Unify error handling
  selftests: ncdevmem: Make client_ip optional
  selftests: ncdevmem: Remove default arguments
  selftests: ncdevmem: Switch to AF_INET6
  selftests: ncdevmem: Properly reset flow steering
  selftests: ncdevmem: Use YNL to enable TCP header split
  selftests: ncdevmem: Remove hard-coded queue numbers
  selftests: ncdevmem: Run selftest when none of the -s or -c has been
    provided
  selftests: ncdevmem: Move ncdevmem under drivers/net/hw
  selftests: ncdevmem: Add automated test

 .../selftests/drivers/net/hw/.gitignore       |   1 +
 .../testing/selftests/drivers/net/hw/Makefile |   9 +
 .../selftests/drivers/net/hw/devmem.py        |  45 +
 .../selftests/drivers/net/hw/ncdevmem.c       | 789 ++++++++++++++++++
 tools/testing/selftests/net/.gitignore        |   1 -
 tools/testing/selftests/net/Makefile          |   8 -
 tools/testing/selftests/net/ncdevmem.c        | 570 -------------
 7 files changed, 844 insertions(+), 579 deletions(-)
 create mode 100644 tools/testing/selftests/drivers/net/hw/.gitignore
 create mode 100755 tools/testing/selftests/drivers/net/hw/devmem.py
 create mode 100644 tools/testing/selftests/drivers/net/hw/ncdevmem.c
 delete mode 100644 tools/testing/selftests/net/ncdevmem.c

Comments

Joe Damato Nov. 7, 2024, 6:37 p.m. UTC | #1
On Thu, Nov 07, 2024 at 10:12:11AM -0800, Stanislav Fomichev wrote:
> Only RX side for now and small message to test the setup.
> In the future, we can extend it to TX side and to testing
> both sides with a couple of megs of data.
> 
>   make \
>   	-C tools/testing/selftests \
>   	TARGETS="drivers/hw/net" \
>   	install INSTALL_PATH=~/tmp/ksft
> 
>   scp ~/tmp/ksft ${HOST}:
>   scp ~/tmp/ksft ${PEER}:
> 
>   cfg+="NETIF=${DEV}\n"
>   cfg+="LOCAL_V6=${HOST_IP}\n"
>   cfg+="REMOTE_V6=${PEER_IP}\n"
>   cfg+="REMOTE_TYPE=ssh\n"
>   cfg+="REMOTE_ARGS=root@${PEER}\n"
> 
>   echo -e "$cfg" | ssh root@${HOST} "cat > ksft/drivers/net/net.config"
>   ssh root@${HOST} "cd ksft && ./run_kselftest.sh -t drivers/net:devmem.py"
> 
> Reviewed-by: Mina Almasry <almasrymina@google.com>
> Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
> ---
>  .../testing/selftests/drivers/net/hw/Makefile |  1 +
>  .../selftests/drivers/net/hw/devmem.py        | 45 +++++++++++++++++++
>  2 files changed, 46 insertions(+)
>  create mode 100755 tools/testing/selftests/drivers/net/hw/devmem.py

I'm not a python expert, but the changes make sense to me.

Reviewed-by: Joe Damato <jdamato@fastly.com>
Stanislav Fomichev Nov. 8, 2024, 1:18 a.m. UTC | #2
On 11/07, Joe Damato wrote:
> On Thu, Nov 07, 2024 at 10:11:59AM -0800, Stanislav Fomichev wrote:
> > The goal of the series is to simplify and make it possible to use
> > ncdevmem in an automated way from the ksft python wrapper.
> > 
> > ncdevmem is slowly mutated into a state where it uses stdout
> > to print the payload and the python wrapper is added to
> > make sure the arrived payload matches the expected one.
> > 
> > v8:
> > - move error() calls into enable_reuseaddr() (Joe)
> > - bail out when number of queues is 1 (Joe)
> 
> Thanks for all the work on the refactor; sorry for the nit-picking
> on the queue counts. I just thought of it because in my test for
> busy poll stuff, netdevsim uses 1 queue.
> 
> Having tests like this factored nicely really helps when people
> (like me) go to try to write a test for the first time and have a
> good example like this to follow :)

No worries, thanks for taking the time to review! nit-picks are fine
as wells since they are usually the easiest ones to address :-D
patchwork-bot+netdevbpf@kernel.org Nov. 12, 2024, 1:10 a.m. UTC | #3
Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Thu,  7 Nov 2024 10:11:59 -0800 you wrote:
> The goal of the series is to simplify and make it possible to use
> ncdevmem in an automated way from the ksft python wrapper.
> 
> ncdevmem is slowly mutated into a state where it uses stdout
> to print the payload and the python wrapper is added to
> make sure the arrived payload matches the expected one.
> 
> [...]

Here is the summary with links:
  - [net-next,v8,01/12] selftests: ncdevmem: Redirect all non-payload output to stderr
    https://git.kernel.org/netdev/net-next/c/6891f0b523e1
  - [net-next,v8,02/12] selftests: ncdevmem: Separate out dmabuf provider
    https://git.kernel.org/netdev/net-next/c/8b9049af8066
  - [net-next,v8,03/12] selftests: ncdevmem: Unify error handling
    https://git.kernel.org/netdev/net-next/c/bfccbaac1b45
  - [net-next,v8,04/12] selftests: ncdevmem: Make client_ip optional
    https://git.kernel.org/netdev/net-next/c/0ebd75f5f239
  - [net-next,v8,05/12] selftests: ncdevmem: Remove default arguments
    https://git.kernel.org/netdev/net-next/c/d3ca35c64d48
  - [net-next,v8,06/12] selftests: ncdevmem: Switch to AF_INET6
    https://git.kernel.org/netdev/net-next/c/933056357a8c
  - [net-next,v8,07/12] selftests: ncdevmem: Properly reset flow steering
    https://git.kernel.org/netdev/net-next/c/e3c09623a53b
  - [net-next,v8,08/12] selftests: ncdevmem: Use YNL to enable TCP header split
    https://git.kernel.org/netdev/net-next/c/798d822e5d34
  - [net-next,v8,09/12] selftests: ncdevmem: Remove hard-coded queue numbers
    https://git.kernel.org/netdev/net-next/c/d4ef05d21131
  - [net-next,v8,10/12] selftests: ncdevmem: Run selftest when none of the -s or -c has been provided
    https://git.kernel.org/netdev/net-next/c/77f870a00016
  - [net-next,v8,11/12] selftests: ncdevmem: Move ncdevmem under drivers/net/hw
    (no matching commit)
  - [net-next,v8,12/12] selftests: ncdevmem: Add automated test
    https://git.kernel.org/netdev/net-next/c/80230864b7b0

You are awesome, thank you!