diff mbox series

[net,v2] selftests: rtnetlink: add 'ethtool' as a dependency

Message ID 20240909083410.60121-1-anezbeda@redhat.com (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series [net,v2] selftests: rtnetlink: add 'ethtool' as a dependency | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag present in non-next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 7 this patch: 7
netdev/build_tools success Errors and warnings before: 0 this patch: 0
netdev/cc_maintainers warning 5 maintainers not CCed: pabeni@redhat.com kuba@kernel.org edumazet@google.com shuah@kernel.org linux-kselftest@vger.kernel.org
netdev/build_clang success Errors and warnings before: 7 this patch: 7
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success net selftest script(s) already in Makefile
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 7 this patch: 7
netdev/checkpatch warning WARNING: adding a line without newline at end of file
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-09-09--12-00 (tests: 722)

Commit Message

Ales Nezbeda Sept. 9, 2024, 8:34 a.m. UTC
Introduction of `kci_test_macsec_offload()` in `rtnetlink.sh` created
a new dependency `ethtool` for the test suite. This dependency is not
reflected in checks that run before all the tests, so if the `ethtool`
is not present, all tests will start, but `macsec_offload` test will
fail with a misleading message. Message would say that MACsec offload is
not supported, yet it never actually managed to check this, since it
needs the `ethtool` to do so.

Use `require_command` in `rtnetlink.sh` to allow single check command
for all the dependencies. This also requires adding the `require_command`
to the `lib.sh` used by the test.

Fixes: 3b5222e2ac57 ("selftests: rtnetlink: add MACsec offload tests")
Signed-off-by: Ales Nezbeda <anezbeda@redhat.com>
---
v2
  - Add `require_command` to the `lib.sh` and use that instead
  - v1 ref: https://lore.kernel.org/netdev/20240903151524.586614-1-anezbeda@redhat.com
---
 tools/testing/selftests/net/lib.sh       | 13 +++++++++++++
 tools/testing/selftests/net/rtnetlink.sh |  9 +++------
 2 files changed, 16 insertions(+), 6 deletions(-)

Comments

Jakub Kicinski Sept. 10, 2024, 12:07 a.m. UTC | #1
On Mon,  9 Sep 2024 10:34:10 +0200 Ales Nezbeda wrote:
> Fixes: 3b5222e2ac57 ("selftests: rtnetlink: add MACsec offload tests")

Don't think it qualifies as a fix, it's an improvement.

> +require_command()
> +{
> +	local cmd=$1; shift
> +
> +	if [[ ! -x "$(command -v "$cmd")" ]]; then
> +		echo "SKIP: $cmd not installed"
> +		exit $ksft_skip
> +	fi
> +}

You can use net/forwarding's lib.sh in net/, altnames.sh already 
uses it.
Ales Nezbeda Sept. 16, 2024, 9:18 a.m. UTC | #2
On Tue, Sep 10, 2024 at 2:17 AM Jakub Kicinski <kuba@kernel.org> wrote:
> Don't think it qualifies as a fix, it's an improvement.

Well, if the `ethtool` is not present the test will fail with dubious
results that would indicate that the test failed due to the system not
supporting MACsec offload, which is not true. The error message
doesn't reflect what went wrong, so I thought about it as an issue
that is being fixed. If this is not the case please let me know,
because based on the docs 'Fixes: tag indicates that the patch fixes
an issue', which I would think that wrong error message is an issue. I
might be wrong here though, so if the definition of 'issue' is more
restrictive I can remove the 'Fixes:' tag.

> You can use net/forwarding's lib.sh in net/, altnames.sh already
> uses it.

I see, the problem (and probably should have mentioned it in the patch
itself) is that `rtnetlink.sh` is using one of the variables defined
in the `net/lib.sh` - specifically `ksft_skip`. Furthermore, I felt
like a more clean approach would be to add the `require_command()` to
the `net/lib.sh` so that other tests down the road could potentially
use it as well. Picking a different `lib.sh` would mean either
modifying the `rtnetlink.sh` around it (removing the `ksft_skip` - lot
of changes in unrelated parts and harder for review) or adding it to
the new `lib.sh` and at that point we are adding stuff to the lib
anyway.
diff mbox series

Patch

diff --git a/tools/testing/selftests/net/lib.sh b/tools/testing/selftests/net/lib.sh
index 8ee4489238ca..890c579674be 100644
--- a/tools/testing/selftests/net/lib.sh
+++ b/tools/testing/selftests/net/lib.sh
@@ -218,3 +218,16 @@  tc_rule_handle_stats_get()
 	    | jq ".[] | select(.options.handle == $handle) | \
 		  .options.actions[0].stats$selector"
 }
+
+##############################################################################
+# Sanity checks
+
+require_command()
+{
+	local cmd=$1; shift
+
+	if [[ ! -x "$(command -v "$cmd")" ]]; then
+		echo "SKIP: $cmd not installed"
+		exit $ksft_skip
+	fi
+}
\ No newline at end of file
diff --git a/tools/testing/selftests/net/rtnetlink.sh b/tools/testing/selftests/net/rtnetlink.sh
index bdf6f10d0558..4a9ffd06990b 100755
--- a/tools/testing/selftests/net/rtnetlink.sh
+++ b/tools/testing/selftests/net/rtnetlink.sh
@@ -1306,12 +1306,9 @@  if [ "$(id -u)" -ne 0 ];then
 	exit $ksft_skip
 fi
 
-for x in ip tc;do
-	$x -Version 2>/dev/null >/dev/null
-	if [ $? -ne 0 ];then
-		end_test "SKIP: Could not run test without the $x tool"
-		exit $ksft_skip
-	fi
+#check for dependencies
+for x in ip tc ethtool;do
+	require_command $x
 done
 
 while getopts t:hvpP o; do