Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: bonding: use slowwait instead of hard code sleep

Use slowwait instead of hard code sleep for bonding tests.

In function setup_prepare(), the client_create() will be called after
server_create(). So I think there is no need to sleep in server_create()
and remove it.

For lab_lib.sh, remove bonding module may affect other running bonding tests.
And some test env may buildin bond which can't be removed. The bonding
link should be removed by lag_reset_network() or netns delete.

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Link: https://lore.kernel.org/r/20240205130048.282087-5-liuhangbin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Hangbin Liu and committed by
Jakub Kicinski
e1f0da9b 45bf79bc

+24 -10
+18 -3
tools/testing/selftests/drivers/net/bonding/bond-lladdr-target.sh
··· 17 17 # +----------------+ 18 18 # 19 19 # We use veths instead of physical interfaces 20 + REQUIRE_MZ=no 21 + NUM_NETIFS=0 22 + lib_dir=$(dirname "$0") 23 + source "$lib_dir"/../../../net/forwarding/lib.sh 24 + 20 25 sw="sw-$(mktemp -u XXXXXX)" 21 26 host="ns-$(mktemp -u XXXXXX)" 22 27 ··· 29 24 { 30 25 ip netns del $sw 31 26 ip netns del $host 27 + } 28 + 29 + wait_lladdr_dad() 30 + { 31 + $@ | grep fe80 | grep -qv tentative 32 + } 33 + 34 + wait_bond_up() 35 + { 36 + $@ | grep -q 'state UP' 32 37 } 33 38 34 39 trap cleanup 0 1 2 ··· 52 37 ip -n $sw link add br0 type bridge 53 38 ip -n $sw link set br0 up 54 39 sw_lladdr=$(ip -n $sw addr show br0 | awk '/fe80/{print $2}' | cut -d'/' -f1) 55 - # sleep some time to make sure bridge lladdr pass DAD 56 - sleep 2 40 + # wait some time to make sure bridge lladdr pass DAD 41 + slowwait 2 wait_lladdr_dad ip -n $sw addr show br0 57 42 58 43 ip -n $host link add bond0 type bond mode 1 ns_ip6_target ${sw_lladdr} \ 59 44 arp_validate 3 arp_interval 1000 ··· 68 53 ip -n $sw link set veth0 up 69 54 ip -n $sw link set veth1 up 70 55 71 - sleep 5 56 + slowwait 5 wait_bond_up ip -n $host link show bond0 72 57 73 58 rc=0 74 59 if ip -n $host link show bond0 | grep -q LOWER_UP; then
+3 -3
tools/testing/selftests/drivers/net/bonding/bond_topo_2d1c.sh
··· 73 73 ip -n ${s_ns} link set bond0 up 74 74 ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0 75 75 ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0 76 - sleep 2 77 76 } 78 77 79 78 # Reset bond with new mode and options ··· 95 96 ip -n ${s_ns} link set bond0 up 96 97 ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0 97 98 ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0 98 - sleep 2 99 + # Wait for IPv6 address ready as it needs DAD 100 + slowwait 2 ip netns exec ${s_ns} ping6 ${c_ip6} -c 1 -W 0.1 &> /dev/null 99 101 } 100 102 101 103 server_destroy() ··· 150 150 { 151 151 local msg=${1:-"check connection"} 152 152 153 - sleep 2 153 + slowwait 2 ip netns exec ${s_ns} ping ${c_ip4} -c 1 -W 0.1 &> /dev/null 154 154 ip netns exec ${s_ns} ping ${c_ip4} -c5 -i 0.1 &>/dev/null 155 155 check_err $? "${msg}: ping failed" 156 156 ip netns exec ${s_ns} ping6 ${c_ip6} -c5 -i 0.1 &>/dev/null
+3 -4
tools/testing/selftests/drivers/net/bonding/lag_lib.sh
··· 107 107 NAMESPACES="${namespaces}" 108 108 } 109 109 110 - # cleanup all lag related namespaces and remove the bonding module 110 + # cleanup all lag related namespaces 111 111 lag_cleanup() 112 112 { 113 113 for n in ${NAMESPACES}; do 114 114 ip netns delete ${n} >/dev/null 2>&1 || true 115 115 done 116 - modprobe -r bonding 117 116 } 118 117 119 118 SWITCH="lag_node1" ··· 158 159 create_bond $@ 159 160 160 161 # verify connectivity 161 - ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 >/dev/null 2>&1 162 + slowwait 2 ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 -W 0.1 &> /dev/null 162 163 check_err $? "No connectivity" 163 164 164 165 # force the links of the bond down ··· 168 169 ip netns exec ${SWITCH} ip link set eth1 down 169 170 170 171 # re-verify connectivity 171 - ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 >/dev/null 2>&1 172 + slowwait 2 ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 -W 0.1 &> /dev/null 172 173 173 174 local rc=$? 174 175 check_err $rc "Bond failed to recover"