selftests: ncdevmem: Add automated test
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>
Reviewed-by: Joe Damato <jdamato@fastly.com>
Link: https://patch.msgid.link/20241107181211.3934153-13-sdf@fomichev.me
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
be43a6b238
commit
80230864b7
@@ -3,6 +3,7 @@
|
||||
TEST_PROGS = \
|
||||
csum.py \
|
||||
devlink_port_split.py \
|
||||
devmem.py \
|
||||
ethtool.sh \
|
||||
ethtool_extended_state.sh \
|
||||
ethtool_mm.sh \
|
||||
|
||||
+45
@@ -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()
|
||||
Reference in New Issue
Block a user