diff mbox series

[v5,1/2] selftests: net: Create veth pair for testing in networkless kernel

Message ID 20240808122452.25683-2-jain.abhinav177@gmail.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series Enhance network interface feature testing | expand

Checks

Context Check Description
netdev/series_format warning Target tree name not specified in the subject
netdev/tree_selection success Guessed tree name to be net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -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: 9 this patch: 9
netdev/cc_maintainers success CCed 6 of 6 maintainers
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 No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 7 this patch: 7
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 32 lines checked
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 warning net-next-2024-08-08--15-00 (tests: 705)

Commit Message

Abhinav Jain Aug. 8, 2024, 12:24 p.m. UTC
Check if the netdev list is empty and create veth pair to be used for
feature on/off testing.
Remove the veth pair after testing is complete.

Signed-off-by: Abhinav Jain <jain.abhinav177@gmail.com>
---
 tools/testing/selftests/net/netdevice.sh | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Jakub Kicinski Aug. 8, 2024, 4:23 p.m. UTC | #1
On Thu,  8 Aug 2024 12:24:51 +0000 Abhinav Jain wrote:
> Check if the netdev list is empty and create veth pair to be used for
> feature on/off testing.
> Remove the veth pair after testing is complete.

A number of checks now return SKIP because veth doesn't support all
ethtool APIs.

In netdev selftests we try to make sure SKIP is only used when test
cannot be performed because of limitations of the environment.
For example some tool is not installed, kernel doesn't have a config.
Something that the person running the test is able to fix by fixing
how the test is run.

Running this test on veth will always SKIP, nothing CI system can do.
Please make the test use the keyword XFAIL instead of SKIP when
functionality is not supported by the underlying driver.
Abhinav Jain Aug. 9, 2024, 4:53 p.m. UTC | #2
On Thu, 8 Aug 2024 09:23:09 -0700, Jakub Kicinski wrote:
> A number of checks now return SKIP because veth doesn't support all
> ethtool APIs.
>
> In netdev selftests we try to make sure SKIP is only used when test
> cannot be performed because of limitations of the environment.
> For example some tool is not installed, kernel doesn't have a config.
> Something that the person running the test is able to fix by fixing
> how the test is run.
>
> Running this test on veth will always SKIP, nothing CI system can do.
> Please make the test use the keyword XFAIL instead of SKIP when
> functionality is not supported by the underlying driver.

Ack, understood. I will do that, one clarification though.
Currently, the tests are using either PASS or FAIL and no SKIP. Based on
the above suggestion, it seems that I have replace FAIL with XFAIL for all
the tests that fail due to functionality not being supported by the
underlying driver.

Please confirm if my understanding is correct and I will send a v6 of the
series in accordance with netdev patch submission guidelines.
---
Jakub Kicinski Aug. 10, 2024, 4:19 a.m. UTC | #3
On Fri,  9 Aug 2024 16:53:26 +0000 Abhinav Jain wrote:
> On Thu, 8 Aug 2024 09:23:09 -0700, Jakub Kicinski wrote:
> > A number of checks now return SKIP because veth doesn't support all
> > ethtool APIs.
> >
> > In netdev selftests we try to make sure SKIP is only used when test
> > cannot be performed because of limitations of the environment.
> > For example some tool is not installed, kernel doesn't have a config.
> > Something that the person running the test is able to fix by fixing
> > how the test is run.
> >
> > Running this test on veth will always SKIP, nothing CI system can do.
> > Please make the test use the keyword XFAIL instead of SKIP when
> > functionality is not supported by the underlying driver.  
> 
> Ack, understood. I will do that, one clarification though.
> Currently, the tests are using either PASS or FAIL and no SKIP. Based on
> the above suggestion, it seems that I have replace FAIL with XFAIL for all
> the tests that fail due to functionality not being supported by the
> underlying driver.

Right, sorry for lack of clarity.

Our CI doesn't fully trust the exit codes, so even though the test
exits with zero the CI parses the output and finds the "SKIP: ..."
lines. You need to replace those "SKIP"s in the output with "XFAIL".
Abhinav Jain Aug. 10, 2024, 5:55 p.m. UTC | #4
On Fri, 9 Aug 2024 21:19:11 -0700, Jakub Kicinski wrote:

> > On Thu, 8 Aug 2024 09:23:09 -0700, Jakub Kicinski wrote:
> > > A number of checks now return SKIP because veth doesn't support all
> > > ethtool APIs.
> > >
> > > In netdev selftests we try to make sure SKIP is only used when test
> > > cannot be performed because of limitations of the environment.
> > > For example some tool is not installed, kernel doesn't have a config.
> > > Something that the person running the test is able to fix by fixing
> > > how the test is run.
> > >
> > > Running this test on veth will always SKIP, nothing CI system can do.
> > > Please make the test use the keyword XFAIL instead of SKIP when
> > > functionality is not supported by the underlying driver.  
> > 
> > Ack, understood. I will do that, one clarification though.
> > Currently, the tests are using either PASS or FAIL and no SKIP. Based on
> > the above suggestion, it seems that I have replace FAIL with XFAIL for all
> > the tests that fail due to functionality not being supported by the
> > underlying driver.
>
> Right, sorry for lack of clarity.
>
> Our CI doesn't fully trust the exit codes, so even though the test
> exits with zero the CI parses the output and finds the "SKIP: ..."
> lines. You need to replace those "SKIP"s in the output with "XFAIL".

I re-tested and found that currently only two APIs are tested, "dump" and
"stats". For veth pair, the only test that fails currently with a SKIP is
the dump operation.

```
# Cannot get register dump: Operation not supported
# SKIP: veth1: ethtool dump not supported
```

This is present in kci_netdev_ethtool_test function, please confirm if this
is the one that I need to change to XFAIL. The logic to incorporate
the failure exit code for dump operation (74) is already in place.

```
kci_netdev_ethtool_test 74 'dump' "ethtool -d $netdev"
```

I just need to change the SKIP in this function to XFAIL. In case, if you
were referring to any other tests that are failing (features on/off),
please let me know. Thank you for prompt feedbacks, really appreciated.
diff mbox series

Patch

diff --git a/tools/testing/selftests/net/netdevice.sh b/tools/testing/selftests/net/netdevice.sh
index e3afcb424710..0c32950fdd17 100755
--- a/tools/testing/selftests/net/netdevice.sh
+++ b/tools/testing/selftests/net/netdevice.sh
@@ -129,6 +129,7 @@  kci_netdev_ethtool()
 
 	kci_netdev_ethtool_test 74 'dump' "ethtool -d $netdev"
 	kci_netdev_ethtool_test 94 'stats' "ethtool -S $netdev"
+
 	return 0
 }
 
@@ -196,10 +197,25 @@  if [ ! -e "$TMP_LIST_NETDEV" ];then
 fi
 
 ip link show |grep '^[0-9]' | grep -oE '[[:space:]].*eth[0-9]*:|[[:space:]].*enp[0-9]s[0-9]:' | cut -d\  -f2 | cut -d: -f1> "$TMP_LIST_NETDEV"
+
+if [ ! -s "$TMP_LIST_NETDEV" ]; then
+	echo "No valid network device found, creating veth pair"
+	ip link add veth0 type veth peer name veth1
+	echo "veth0" > "$TMP_LIST_NETDEV"
+	echo "veth1" >> "$TMP_LIST_NETDEV"
+	veth_created=1
+fi
+
 while read netdev
 do
 	kci_test_netdev "$netdev"
 done < "$TMP_LIST_NETDEV"
 
+#clean up veth interface pair if it was created
+if [ "$veth_created" ]; then
+	ip link delete veth0
+	echo "Removed veth pair"
+fi
+
 rm "$TMP_LIST_NETDEV"
 exit 0