Skip to content

Commit

Permalink
selftests: ncdevmem: Add automated test
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Stanislav Fomichev <[email protected]>
Reviewed-by: Joe Damato <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
Stanislav Fomichev authored and kuba-moo committed Nov 12, 2024
1 parent be43a6b commit 8023086
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
1 change: 1 addition & 0 deletions tools/testing/selftests/drivers/net/hw/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
TEST_PROGS = \
csum.py \
devlink_port_split.py \
devmem.py \
ethtool.sh \
ethtool_extended_state.sh \
ethtool_mm.sh \
Expand Down
45 changes: 45 additions & 0 deletions tools/testing/selftests/drivers/net/hw/devmem.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0

from lib.py import ksft_run, ksft_exit
from lib.py import ksft_eq, KsftSkipEx
from lib.py import NetDrvEpEnv
from lib.py import bkg, cmd, rand_port, wait_port_listen
from lib.py import ksft_disruptive


def require_devmem(cfg):
if not hasattr(cfg, "_devmem_probed"):
port = rand_port()
probe_command = f"./ncdevmem -f {cfg.ifname}"
cfg._devmem_supported = cmd(probe_command, fail=False, shell=True).ret == 0
cfg._devmem_probed = True

if not cfg._devmem_supported:
raise KsftSkipEx("Test requires devmem support")


@ksft_disruptive
def check_rx(cfg) -> None:
cfg.require_v6()
require_devmem(cfg)

port = rand_port()
listen_cmd = f"./ncdevmem -l -f {cfg.ifname} -s {cfg.v6} -p {port}"

with bkg(listen_cmd) as socat:
wait_port_listen(port)
cmd(f"echo -e \"hello\\nworld\"| socat -u - TCP6:[{cfg.v6}]:{port}", host=cfg.remote, shell=True)

ksft_eq(socat.stdout.strip(), "hello\nworld")


def main() -> None:
with NetDrvEpEnv(__file__) as cfg:
ksft_run([check_rx],
args=(cfg, ))
ksft_exit()


if __name__ == "__main__":
main()

0 comments on commit 8023086

Please sign in to comment.