Skip to content

Commit d60527b

Browse files
committed
selftests: drv-net: add require_XYZ() helpers for validating env
JIRA: https://issues.redhat.com/browse/RHEL-57764 commit f1e68a1 Author: Jakub Kicinski <kuba@kernel.org> Date: Fri Apr 19 19:52:37 2024 -0700 selftests: drv-net: add require_XYZ() helpers for validating env Wrap typical checks like whether given command used by the test is available in helpers. Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://lore.kernel.org/r/20240420025237.3309296-8-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Ivan Vecera <ivecera@redhat.com>
1 parent f585948 commit d60527b

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

tools/testing/selftests/drivers/net/lib/py/env.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import os
44
import shlex
55
from pathlib import Path
6-
from lib.py import ip
6+
from lib.py import KsftSkipEx
7+
from lib.py import cmd, ip
78
from lib.py import NetNS, NetdevSimDev
89
from .remote import Remote
910

@@ -118,6 +119,8 @@ def __init__(self, src_path):
118119
self.ifname = self.dev['ifname']
119120
self.ifindex = self.dev['ifindex']
120121

122+
self._required_cmd = {}
123+
121124
def create_local(self):
122125
self._netns = NetNS()
123126
self._ns = NetdevSimDev()
@@ -160,3 +163,27 @@ def __del__(self):
160163
if self.remote:
161164
del self.remote
162165
self.remote = None
166+
167+
def require_v4(self):
168+
if not self.v4 or not self.remote_v4:
169+
raise KsftSkipEx("Test requires IPv4 connectivity")
170+
171+
def require_v6(self):
172+
if not self.v6 or not self.remote_v6:
173+
raise KsftSkipEx("Test requires IPv6 connectivity")
174+
175+
def _require_cmd(self, comm, key, host=None):
176+
cached = self._required_cmd.get(comm, {})
177+
if cached.get(key) is None:
178+
cached[key] = cmd("command -v -- " + comm, fail=False,
179+
shell=True, host=host).ret == 0
180+
self._required_cmd[comm] = cached
181+
return cached[key]
182+
183+
def require_cmd(self, comm, local=True, remote=False):
184+
if local:
185+
if not self._require_cmd(comm, "local"):
186+
raise KsftSkipEx("Test requires command: " + comm)
187+
if remote:
188+
if not self._require_cmd(comm, "remote"):
189+
raise KsftSkipEx("Test requires (remote) command: " + comm)

tools/testing/selftests/drivers/net/ping.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,22 @@
88

99

1010
def test_v4(cfg) -> None:
11+
cfg.require_v4()
12+
1113
cmd(f"ping -c 1 -W0.5 {cfg.remote_v4}")
1214
cmd(f"ping -c 1 -W0.5 {cfg.v4}", host=cfg.remote)
1315

1416

1517
def test_v6(cfg) -> None:
18+
cfg.require_v6()
19+
1620
cmd(f"ping -c 1 -W0.5 {cfg.remote_v6}")
1721
cmd(f"ping -c 1 -W0.5 {cfg.v6}", host=cfg.remote)
1822

1923

2024
def test_tcp(cfg) -> None:
25+
cfg.require_cmd("socat", remote=True)
26+
2127
port = rand_port()
2228
listen_cmd = f"socat -{cfg.addr_ipver} -t 2 -u TCP-LISTEN:{port},reuseport STDOUT"
2329

0 commit comments

Comments
 (0)