On Thu, Dec 12, 2024 at 5:40 PM Paolo Abeni <pabeni@xxxxxxxxxx> wrote: > > On 12/9/24 15:01, Xiao Liang wrote: > > - Add test for creating link in another netns when a link of the same > > name and ifindex exists in current netns. > > - Add test for link netns atomicity - create link directly in target > > netns, and no notifications should be generated in current netns. > > > > Signed-off-by: Xiao Liang <shaw.leon@xxxxxxxxx> > > --- > > tools/testing/selftests/net/Makefile | 1 + > > tools/testing/selftests/net/netns-name.sh | 10 ++++++ > > tools/testing/selftests/net/netns_atomic.py | 39 +++++++++++++++++++++ > > 3 files changed, 50 insertions(+) > > create mode 100755 tools/testing/selftests/net/netns_atomic.py > > > > diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile > > index cb2fc601de66..f9f7a765d645 100644 > > --- a/tools/testing/selftests/net/Makefile > > +++ b/tools/testing/selftests/net/Makefile > > @@ -34,6 +34,7 @@ TEST_PROGS += gre_gso.sh > > TEST_PROGS += cmsg_so_mark.sh > > TEST_PROGS += cmsg_time.sh cmsg_ipv6.sh > > TEST_PROGS += netns-name.sh > > +TEST_PROGS += netns_atomic.py > > TEST_PROGS += nl_netdev.py > > TEST_PROGS += srv6_end_dt46_l3vpn_test.sh > > TEST_PROGS += srv6_end_dt4_l3vpn_test.sh > > diff --git a/tools/testing/selftests/net/netns-name.sh b/tools/testing/selftests/net/netns-name.sh > > index 6974474c26f3..0be1905d1f2f 100755 > > --- a/tools/testing/selftests/net/netns-name.sh > > +++ b/tools/testing/selftests/net/netns-name.sh > > @@ -78,6 +78,16 @@ ip -netns $NS link show dev $ALT_NAME 2> /dev/null && > > fail "Can still find alt-name after move" > > ip -netns $test_ns link del $DEV || fail > > > > +# > > +# Test no conflict of the same name/ifindex in different netns > > +# > > +ip -netns $NS link add name $DEV index 100 type dummy || fail > > +ip -netns $NS link add netns $test_ns name $DEV index 100 type dummy || > > + fail "Can create in netns without moving" > > +ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found" > > +ip -netns $NS link del $DEV || fail > > +ip -netns $test_ns link del $DEV || fail > > + > > echo -ne "$(basename $0) \t\t\t\t" > > if [ $RET_CODE -eq 0 ]; then > > echo "[ OK ]" > > diff --git a/tools/testing/selftests/net/netns_atomic.py b/tools/testing/selftests/net/netns_atomic.py > > new file mode 100755 > > index 000000000000..d350a3fc0a91 > > --- /dev/null > > +++ b/tools/testing/selftests/net/netns_atomic.py > > @@ -0,0 +1,39 @@ > > +#!/usr/bin/env python3 > > +# SPDX-License-Identifier: GPL-2.0 > > + > > +import time > > + > > +from lib.py import ksft_run, ksft_exit, ksft_true > > +from lib.py import ip > > +from lib.py import NetNS, NetNSEnter > > +from lib.py import RtnlFamily > > + > > + > > +def test_event(ns1, ns2) -> None: > > + with NetNSEnter(str(ns1)): > > + rtnl = RtnlFamily() > > + > > + rtnl.ntf_subscribe("rtnlgrp-link") > > + > > + ip(f"netns set {ns1} 0", ns=str(ns2)) > > + > > + ip(f"link add netns {ns2} link-netnsid 0 dummy1 type dummy") > > + ip(f"link add netns {ns2} dummy2 type dummy", ns=str(ns1)) > > + > > + ip("link del dummy1", ns=str(ns2)) > > + ip("link del dummy2", ns=str(ns2)) > > + > > + time.sleep(1) > > + rtnl.check_ntf() > > + ksft_true(rtnl.async_msg_queue.empty(), > > + "Received unexpected link notification") > > I think we need a much larger coverage here, possibly testing all the > update drivers and more 'netns', 'link-netnsid', 'peer netns' > permutations for the devices that allow them. OK, I will add more cases. But I'm afraid I don't know how to build valid parameters for all of them, and some seem to require hardware. > > Thanks, > > Paolo >