Skip to content

Commit 7c74186

Browse files
dsaherndavem330
authored andcommitted
selftests: Add torture tests to nexthop tests
Add Nik's torture tests as a new set to stress the replace and cleanup paths. Torture test created by Nikolay Aleksandrov and then I adapted to selftest and added IPv6 version. Signed-off-by: David Ahern <[email protected]> Signed-off-by: Nikolay Aleksandrov <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent ae920e8 commit 7c74186

File tree

1 file changed

+113
-2
lines changed

1 file changed

+113
-2
lines changed

tools/testing/selftests/net/fib_nexthops.sh

Lines changed: 113 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ ret=0
1919
ksft_skip=4
2020

2121
# all tests in this script. Can be overridden with -t option
22-
IPV4_TESTS="ipv4_fcnal ipv4_grp_fcnal ipv4_withv6_fcnal ipv4_fcnal_runtime ipv4_large_grp ipv4_compat_mode ipv4_fdb_grp_fcnal"
23-
IPV6_TESTS="ipv6_fcnal ipv6_grp_fcnal ipv6_fcnal_runtime ipv6_large_grp ipv6_compat_mode ipv6_fdb_grp_fcnal"
22+
IPV4_TESTS="ipv4_fcnal ipv4_grp_fcnal ipv4_withv6_fcnal ipv4_fcnal_runtime ipv4_large_grp ipv4_compat_mode ipv4_fdb_grp_fcnal ipv4_torture"
23+
IPV6_TESTS="ipv6_fcnal ipv6_grp_fcnal ipv6_fcnal_runtime ipv6_large_grp ipv6_compat_mode ipv6_fdb_grp_fcnal ipv6_torture"
2424

2525
ALL_TESTS="basic ${IPV4_TESTS} ${IPV6_TESTS}"
2626
TESTS="${ALL_TESTS}"
@@ -767,6 +767,62 @@ ipv6_large_grp()
767767
$IP nexthop flush >/dev/null 2>&1
768768
}
769769

770+
ipv6_del_add_loop1()
771+
{
772+
while :; do
773+
$IP nexthop del id 100
774+
$IP nexthop add id 100 via 2001:db8:91::2 dev veth1
775+
done >/dev/null 2>&1
776+
}
777+
778+
ipv6_grp_replace_loop()
779+
{
780+
while :; do
781+
$IP nexthop replace id 102 group 100/101
782+
done >/dev/null 2>&1
783+
}
784+
785+
ipv6_torture()
786+
{
787+
local pid1
788+
local pid2
789+
local pid3
790+
local pid4
791+
local pid5
792+
793+
echo
794+
echo "IPv6 runtime torture"
795+
echo "--------------------"
796+
if [ ! -x "$(command -v mausezahn)" ]; then
797+
echo "SKIP: Could not run test; need mausezahn tool"
798+
return
799+
fi
800+
801+
run_cmd "$IP nexthop add id 100 via 2001:db8:91::2 dev veth1"
802+
run_cmd "$IP nexthop add id 101 via 2001:db8:92::2 dev veth3"
803+
run_cmd "$IP nexthop add id 102 group 100/101"
804+
run_cmd "$IP route add 2001:db8:101::1 nhid 102"
805+
run_cmd "$IP route add 2001:db8:101::2 nhid 102"
806+
807+
ipv6_del_add_loop1 &
808+
pid1=$!
809+
ipv6_grp_replace_loop &
810+
pid2=$!
811+
ip netns exec me ping -f 2001:db8:101::1 >/dev/null 2>&1 &
812+
pid3=$!
813+
ip netns exec me ping -f 2001:db8:101::2 >/dev/null 2>&1 &
814+
pid4=$!
815+
ip netns exec me mausezahn veth1 -B 2001:db8:101::2 -A 2001:db8:91::1 -c 0 -t tcp "dp=1-1023, flags=syn" >/dev/null 2>&1 &
816+
pid5=$!
817+
818+
sleep 300
819+
kill -9 $pid1 $pid2 $pid3 $pid4 $pid5
820+
821+
# if we did not crash, success
822+
log_test 0 0 "IPv6 torture test"
823+
}
824+
825+
770826
ipv4_fcnal()
771827
{
772828
local rc
@@ -1313,6 +1369,61 @@ ipv4_compat_mode()
13131369
sysctl_nexthop_compat_mode_set 1 "IPv4"
13141370
}
13151371

1372+
ipv4_del_add_loop1()
1373+
{
1374+
while :; do
1375+
$IP nexthop del id 100
1376+
$IP nexthop add id 100 via 172.16.1.2 dev veth1
1377+
done >/dev/null 2>&1
1378+
}
1379+
1380+
ipv4_grp_replace_loop()
1381+
{
1382+
while :; do
1383+
$IP nexthop replace id 102 group 100/101
1384+
done >/dev/null 2>&1
1385+
}
1386+
1387+
ipv4_torture()
1388+
{
1389+
local pid1
1390+
local pid2
1391+
local pid3
1392+
local pid4
1393+
local pid5
1394+
1395+
echo
1396+
echo "IPv4 runtime torture"
1397+
echo "--------------------"
1398+
if [ ! -x "$(command -v mausezahn)" ]; then
1399+
echo "SKIP: Could not run test; need mausezahn tool"
1400+
return
1401+
fi
1402+
1403+
run_cmd "$IP nexthop add id 100 via 172.16.1.2 dev veth1"
1404+
run_cmd "$IP nexthop add id 101 via 172.16.2.2 dev veth3"
1405+
run_cmd "$IP nexthop add id 102 group 100/101"
1406+
run_cmd "$IP route add 172.16.101.1 nhid 102"
1407+
run_cmd "$IP route add 172.16.101.2 nhid 102"
1408+
1409+
ipv4_del_add_loop1 &
1410+
pid1=$!
1411+
ipv4_grp_replace_loop &
1412+
pid2=$!
1413+
ip netns exec me ping -f 172.16.101.1 >/dev/null 2>&1 &
1414+
pid3=$!
1415+
ip netns exec me ping -f 172.16.101.2 >/dev/null 2>&1 &
1416+
pid4=$!
1417+
ip netns exec me mausezahn veth1 -B 172.16.101.2 -A 172.16.1.1 -c 0 -t tcp "dp=1-1023, flags=syn" >/dev/null 2>&1 &
1418+
pid5=$!
1419+
1420+
sleep 300
1421+
kill -9 $pid1 $pid2 $pid3 $pid4 $pid5
1422+
1423+
# if we did not crash, success
1424+
log_test 0 0 "IPv4 torture test"
1425+
}
1426+
13161427
basic()
13171428
{
13181429
echo

0 commit comments

Comments
 (0)