On Thu, Dec 12, 2024 at 5:40 PM Paolo Abeni pabeni@redhat.com 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@gmail.com
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