[PATCH net 0/8] selftests: mptcp: skip tests not supported by old kernels (part 1)

Matthieu Baerts posted 8 patches 10 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/20230528-upstream-net-20230528-mptcp-selftests-support-old-kernels-part-1-v1-0-a32d85577fc6@tessares.net
Maintainers: Matthieu Baerts <matthieu.baerts@tessares.net>, Mat Martineau <martineau@kernel.org>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Shuah Khan <shuah@kernel.org>, Florian Westphal <fw@strlen.de>, Davide Caratti <dcaratti@redhat.com>, Kishen Maloor <kishen.maloor@intel.com>
tools/testing/selftests/net/mptcp/Makefile         |  2 +-
tools/testing/selftests/net/mptcp/diag.sh          |  4 +++
tools/testing/selftests/net/mptcp/mptcp_connect.sh |  4 +++
tools/testing/selftests/net/mptcp/mptcp_join.sh    | 17 +++++++--
tools/testing/selftests/net/mptcp/mptcp_lib.sh     | 40 ++++++++++++++++++++++
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh |  4 +++
tools/testing/selftests/net/mptcp/pm_netlink.sh    |  4 +++
tools/testing/selftests/net/mptcp/simult_flows.sh  |  4 +++
tools/testing/selftests/net/mptcp/userspace_pm.sh  |  4 +++
9 files changed, 80 insertions(+), 3 deletions(-)
[PATCH net 0/8] selftests: mptcp: skip tests not supported by old kernels (part 1)
Posted by Matthieu Baerts 10 months, 3 weeks ago
After a few years of increasing test coverage in the MPTCP selftests, we
realised [1] the last version of the selftests is supposed to run on old
kernels without issues.

Supporting older versions is not that easy for this MPTCP case: these
selftests are often validating the internals by checking packets that
are exchanged, when some MIB counters are incremented after some
actions, how connections are getting opened and closed in some cases,
etc. In other words, it is not limited to the socket interface between
the userspace and the kernelspace. In addition, the current selftests
run a lot of different sub-tests but the TAP13 protocol used in the
selftests don't support sub-tests: in other words, one failure in
sub-tests implies that the whole selftest is seen as failed at the end
because sub-tests are not tracked. It is then important to skip
sub-tests not supported by old kernels.

To minimise the modifications and reduce the complexity to support old
versions, the idea is to look at external signs and skip the whole
selftests or just some sub-tests before starting them.

This first part focuses on marking the different selftests as skipped
if MPTCP is not even supported. That's what is done in patches 2 to 8.
Patch 2/8 introduces a new file (mptcp_lib.sh) to be able to re-use some
helpers in the different selftests. The first MPTCP selftest has been
introduced in v5.6.

Patch 1/8 is a bit different but still linked: it modifies mptcp_join.sh
selftest not to use 'cmp --bytes' which is not supported by the BusyBox
implementation. It is apparently quite common to use BusyBox in CI
environments. This tool is needed for a subtest introduced in v6.1.

Link: https://lore.kernel.org/stable/CA+G9fYtDGpgT4dckXD-y-N92nqUxuvue_7AtDdBcHrbOMsDZLg@mail.gmail.com/ [1]
Link: https://github.com/multipath-tcp/mptcp_net-next/issues/368
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
---
Matthieu Baerts (8):
      selftests: mptcp: join: avoid using 'cmp --bytes'
      selftests: mptcp: connect: skip if MPTCP is not supported
      selftests: mptcp: pm nl: skip if MPTCP is not supported
      selftests: mptcp: join: skip if MPTCP is not supported
      selftests: mptcp: diag: skip if MPTCP is not supported
      selftests: mptcp: simult flows: skip if MPTCP is not supported
      selftests: mptcp: sockopt: skip if MPTCP is not supported
      selftests: mptcp: userspace pm: skip if MPTCP is not supported

 tools/testing/selftests/net/mptcp/Makefile         |  2 +-
 tools/testing/selftests/net/mptcp/diag.sh          |  4 +++
 tools/testing/selftests/net/mptcp/mptcp_connect.sh |  4 +++
 tools/testing/selftests/net/mptcp/mptcp_join.sh    | 17 +++++++--
 tools/testing/selftests/net/mptcp/mptcp_lib.sh     | 40 ++++++++++++++++++++++
 tools/testing/selftests/net/mptcp/mptcp_sockopt.sh |  4 +++
 tools/testing/selftests/net/mptcp/pm_netlink.sh    |  4 +++
 tools/testing/selftests/net/mptcp/simult_flows.sh  |  4 +++
 tools/testing/selftests/net/mptcp/userspace_pm.sh  |  4 +++
 9 files changed, 80 insertions(+), 3 deletions(-)
---
base-commit: 9b9e46aa07273ceb96866b2e812b46f1ee0b8d2f
change-id: 20230528-upstream-net-20230528-mptcp-selftests-support-old-kernels-part-1-305638f4dbc0

Best regards,
-- 
Matthieu Baerts <matthieu.baerts@tessares.net>
Re: [PATCH net 0/8] selftests: mptcp: skip tests not supported by old kernels (part 1)
Posted by patchwork-bot+netdevbpf@kernel.org 10 months, 3 weeks ago
Hello:

This series was applied to netdev/net.git (main)
by Paolo Abeni <pabeni@redhat.com>:

On Sun, 28 May 2023 19:35:25 +0200 you wrote:
> After a few years of increasing test coverage in the MPTCP selftests, we
> realised [1] the last version of the selftests is supposed to run on old
> kernels without issues.
> 
> Supporting older versions is not that easy for this MPTCP case: these
> selftests are often validating the internals by checking packets that
> are exchanged, when some MIB counters are incremented after some
> actions, how connections are getting opened and closed in some cases,
> etc. In other words, it is not limited to the socket interface between
> the userspace and the kernelspace. In addition, the current selftests
> run a lot of different sub-tests but the TAP13 protocol used in the
> selftests don't support sub-tests: in other words, one failure in
> sub-tests implies that the whole selftest is seen as failed at the end
> because sub-tests are not tracked. It is then important to skip
> sub-tests not supported by old kernels.
> 
> [...]

Here is the summary with links:
  - [net,1/8] selftests: mptcp: join: avoid using 'cmp --bytes'
    https://git.kernel.org/netdev/net/c/d328fe870674
  - [net,2/8] selftests: mptcp: connect: skip if MPTCP is not supported
    https://git.kernel.org/netdev/net/c/d83013bdf90a
  - [net,3/8] selftests: mptcp: pm nl: skip if MPTCP is not supported
    https://git.kernel.org/netdev/net/c/0f4955a40daf
  - [net,4/8] selftests: mptcp: join: skip if MPTCP is not supported
    https://git.kernel.org/netdev/net/c/715c78a82e00
  - [net,5/8] selftests: mptcp: diag: skip if MPTCP is not supported
    https://git.kernel.org/netdev/net/c/46565acdd29f
  - [net,6/8] selftests: mptcp: simult flows: skip if MPTCP is not supported
    https://git.kernel.org/netdev/net/c/9161f21c74a1
  - [net,7/8] selftests: mptcp: sockopt: skip if MPTCP is not supported
    https://git.kernel.org/netdev/net/c/cf6f0fda7af7
  - [net,8/8] selftests: mptcp: userspace pm: skip if MPTCP is not supported
    https://git.kernel.org/netdev/net/c/63212608a92a

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