2023-02-20 11:04:19

by Roxana Nicolescu

[permalink] [raw]
Subject: [PATCH 0/1] selftest: fib_tests: Always cleanup before exit

Usually when a subtest is executed, setup and cleanup functions
are linearly called at the beginning and end of it.
In some of them, `set -e` is used before executing commands.
If one of the commands returns a non zero code, the whole script exists
without cleaning up the resources allocated at setup.
This can affect the next tests that use the same resources,
leading to a chain of failures.

To be consistent with other tests, calling cleanup function when the
script exists fixes the issue.

Steps to reproduce it:
1. Build with CONFIG_IP_ROUTE_MULTIPATH disabled.
2. Run net kselftest suite
3. fib_tests:fib_unreg_multipath_test fails when executing
`ip -netns ns1 route add 203.0.113.0/24 nexthop via 198.51.100.2 dev
dummy0 nexthop via 192.0.2.2 dev dummy1` because
CONFIG_IP_ROUTE_MULTIPATH is disabled.
This results in resources allocated during setup (e.g namespace ns1)
not being cleaned up.
4. When icmp.sh tries to create namespace ns1 during its setup, it fails
with the following error:
Cannot create namespace file "/run/netns/ns1": File exists

Roxana Nicolescu (1):
selftest: fib_tests: Always cleanup before exit

tools/testing/selftests/net/fib_tests.sh | 2 ++
1 file changed, 2 insertions(+)

--
2.34.1



2023-02-20 11:04:50

by Roxana Nicolescu

[permalink] [raw]
Subject: [PATCH 1/1] selftest: fib_tests: Always cleanup before exit

Usage of `set -e` before executing a command causes immediate exit
on failure, without cleanup up the resources allocated at setup.
This can affect the next tests that use the same resources,
leading to a chain of failures.

A simple fix is to always call cleanup function when the script exists.
This approach is already used by other existing tests.

Fixes: 1056691b2680 ("selftests: fib_tests: Make test results more verbose")
Signed-off-by: Roxana Nicolescu <[email protected]>
---
tools/testing/selftests/net/fib_tests.sh | 2 ++
1 file changed, 2 insertions(+)

diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh
index 5637b5dadabd..70ea8798b1f6 100755
--- a/tools/testing/selftests/net/fib_tests.sh
+++ b/tools/testing/selftests/net/fib_tests.sh
@@ -2065,6 +2065,8 @@ EOF
################################################################################
# main

+trap cleanup EXIT
+
while getopts :t:pPhv o
do
case $o in
--
2.34.1


2023-02-21 11:20:26

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH 0/1] selftest: fib_tests: Always cleanup before exit

Hello:

This patch was applied to netdev/net.git (master)
by Paolo Abeni <[email protected]>:

On Mon, 20 Feb 2023 12:03:59 +0100 you wrote:
> Usually when a subtest is executed, setup and cleanup functions
> are linearly called at the beginning and end of it.
> In some of them, `set -e` is used before executing commands.
> If one of the commands returns a non zero code, the whole script exists
> without cleaning up the resources allocated at setup.
> This can affect the next tests that use the same resources,
> leading to a chain of failures.
>
> [...]

Here is the summary with links:
- [1/1] selftest: fib_tests: Always cleanup before exit
https://git.kernel.org/netdev/net/c/b60417a9f2b8

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html