Commit 7762876f authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'selftests-ncdevmem-add-ncdevmem-to-ksft'

Stanislav Fomichev says:

====================
selftests: ncdevmem: Add ncdevmem to ksft

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.
====================

Link: https://patch.msgid.link/20241107181211.3934153-1-sdf@fomichev.me


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents af9a5891 80230864
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
ncdevmem
+9 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
TEST_PROGS = \
	csum.py \
	devlink_port_split.py \
	devmem.py \
	ethtool.sh \
	ethtool_extended_state.sh \
	ethtool_mm.sh \
@@ -26,4 +27,12 @@ TEST_INCLUDES := \
	../../../net/forwarding/tc_common.sh \
	#

# YNL files, must be before "include ..lib.mk"
YNL_GEN_FILES := ncdevmem
TEST_GEN_FILES += $(YNL_GEN_FILES)

include ../../../lib.mk

# YNL build
YNL_GENS := ethtool netdev
include ../../../net/ynl.mk
+45 −0
Original line number Diff line number Diff line
#!/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 −1
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ ipv6_flowlabel_mgr
log.txt
msg_oob
msg_zerocopy
ncdevmem
nettest
psock_fanout
psock_snd
Loading