Commit 3047957c authored by Hangbin Liu's avatar Hangbin Liu Committed by Jakub Kicinski
Browse files

selftests: rtnetlink: fix addrlft test flakiness on power-saving systems



Jakub reported that the rtnetlink test for the preferred lifetime of an
address has become quite flaky. The issue started appearing around the 6.16
merge window in May, and the test fails with:

    FAIL: preferred_lft addresses remaining

The flakiness might be related to power-saving behavior, as address
expiration is handled by a "power-efficient" workqueue.

To address this, use slowwait to check more frequently whether the address
still exists. This reduces the likelihood of the system entering a low-power
state during the test, improving reliability.

Reported-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Link: https://patch.msgid.link/20250715043459.110523-1-liuhangbin@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c3886cca
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -291,6 +291,17 @@ kci_test_route_get()
	end_test "PASS: route get"
}

check_addr_not_exist()
{
	dev=$1
	addr=$2
	if ip addr show dev $dev | grep -q $addr; then
		return 1
	else
		return 0
	fi
}

kci_test_addrlft()
{
	for i in $(seq 10 100) ;do
@@ -298,9 +309,8 @@ kci_test_addrlft()
		run_cmd ip addr add 10.23.11.$i/32 dev "$devdummy" preferred_lft $lft valid_lft $((lft+1))
	done

	sleep 5
	run_cmd_grep_fail "10.23.11." ip addr show dev "$devdummy"
	if [ $? -eq 0 ]; then
	slowwait 5 check_addr_not_exist "$devdummy" "10.23.11."
	if [ $? -eq 1 ]; then
		check_err 1
		end_test "FAIL: preferred_lft addresses remaining"
		return