Skip to content

Commit

Permalink
selftests: bonding: use slowwait instead of hard code sleep
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Hangbin Liu authored and Jakub Kicinski committed Feb 8, 2024
1 parent 45bf79b commit e1f0da9
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 10 deletions.
21 changes: 18 additions & 3 deletions tools/testing/selftests/drivers/net/bonding/bond-lladdr-target.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
# +----------------+
#
# We use veths instead of physical interfaces
REQUIRE_MZ=no
NUM_NETIFS=0
lib_dir=$(dirname "$0")
source "$lib_dir"/../../../net/forwarding/lib.sh

sw="sw-$(mktemp -u XXXXXX)"
host="ns-$(mktemp -u XXXXXX)"

Expand All @@ -26,6 +31,16 @@ cleanup()
ip netns del $host
}

wait_lladdr_dad()
{
$@ | grep fe80 | grep -qv tentative
}

wait_bond_up()
{
$@ | grep -q 'state UP'
}

trap cleanup 0 1 2

ip netns add $sw
Expand All @@ -37,8 +52,8 @@ ip -n $host link add veth1 type veth peer name veth1 netns $sw
ip -n $sw link add br0 type bridge
ip -n $sw link set br0 up
sw_lladdr=$(ip -n $sw addr show br0 | awk '/fe80/{print $2}' | cut -d'/' -f1)
# sleep some time to make sure bridge lladdr pass DAD
sleep 2
# wait some time to make sure bridge lladdr pass DAD
slowwait 2 wait_lladdr_dad ip -n $sw addr show br0

ip -n $host link add bond0 type bond mode 1 ns_ip6_target ${sw_lladdr} \
arp_validate 3 arp_interval 1000
Expand All @@ -53,7 +68,7 @@ ip -n $sw link set veth1 master br0
ip -n $sw link set veth0 up
ip -n $sw link set veth1 up

sleep 5
slowwait 5 wait_bond_up ip -n $host link show bond0

rc=0
if ip -n $host link show bond0 | grep -q LOWER_UP; then
Expand Down
6 changes: 3 additions & 3 deletions tools/testing/selftests/drivers/net/bonding/bond_topo_2d1c.sh
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ server_create()
ip -n ${s_ns} link set bond0 up
ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0
ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0
sleep 2
}

# Reset bond with new mode and options
Expand All @@ -96,7 +95,8 @@ bond_reset()
ip -n ${s_ns} link set bond0 up
ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0
ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0
sleep 2
# Wait for IPv6 address ready as it needs DAD
slowwait 2 ip netns exec ${s_ns} ping6 ${c_ip6} -c 1 -W 0.1 &> /dev/null
}

server_destroy()
Expand Down Expand Up @@ -150,7 +150,7 @@ bond_check_connection()
{
local msg=${1:-"check connection"}

sleep 2
slowwait 2 ip netns exec ${s_ns} ping ${c_ip4} -c 1 -W 0.1 &> /dev/null
ip netns exec ${s_ns} ping ${c_ip4} -c5 -i 0.1 &>/dev/null
check_err $? "${msg}: ping failed"
ip netns exec ${s_ns} ping6 ${c_ip6} -c5 -i 0.1 &>/dev/null
Expand Down
7 changes: 3 additions & 4 deletions tools/testing/selftests/drivers/net/bonding/lag_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,12 @@ lag_setup2x2()
NAMESPACES="${namespaces}"
}

# cleanup all lag related namespaces and remove the bonding module
# cleanup all lag related namespaces
lag_cleanup()
{
for n in ${NAMESPACES}; do
ip netns delete ${n} >/dev/null 2>&1 || true
done
modprobe -r bonding
}

SWITCH="lag_node1"
Expand Down Expand Up @@ -159,7 +158,7 @@ test_bond_recovery()
create_bond $@

# verify connectivity
ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 >/dev/null 2>&1
slowwait 2 ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 -W 0.1 &> /dev/null
check_err $? "No connectivity"

# force the links of the bond down
Expand All @@ -169,7 +168,7 @@ test_bond_recovery()
ip netns exec ${SWITCH} ip link set eth1 down

# re-verify connectivity
ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 >/dev/null 2>&1
slowwait 2 ip netns exec ${CLIENT} ping ${SWITCHIP} -c 2 -W 0.1 &> /dev/null

local rc=$?
check_err $rc "Bond failed to recover"
Expand Down

0 comments on commit e1f0da9

Please sign in to comment.