Commit 32a4ca13 authored by Jakub Kicinski's avatar Jakub Kicinski

selftests: net: py: extract tool logic

The main use of the ip() wrapper over cmd() is that it can parse JSON.
cmd("ip -j link show") will return stdout as a string, and test has
to call json.loads(). With ip("link show", json=True) the return value
will be already parsed.

More tools (ethtool, bpftool etc.) support the --json switch.
To avoid having to wrap all of them individually create a tool()
helper.

Switch from -j to --json (for ethtool).
While at it consume the netns attribute at the ip() level.
Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20240429144426.743476-4-kuba@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ff4b2bfa
...@@ -56,10 +56,10 @@ class bkg(cmd): ...@@ -56,10 +56,10 @@ class bkg(cmd):
return self.process(terminate=self.terminate) return self.process(terminate=self.terminate)
def ip(args, json=None, ns=None, host=None): def tool(name, args, json=None, ns=None, host=None):
cmd_str = "ip " cmd_str = name + ' '
if json: if json:
cmd_str += '-j ' cmd_str += '--json '
cmd_str += args cmd_str += args
cmd_obj = cmd(cmd_str, ns=ns, host=host) cmd_obj = cmd(cmd_str, ns=ns, host=host)
if json: if json:
...@@ -67,6 +67,12 @@ def ip(args, json=None, ns=None, host=None): ...@@ -67,6 +67,12 @@ def ip(args, json=None, ns=None, host=None):
return cmd_obj return cmd_obj
def ip(args, json=None, ns=None, host=None):
if ns:
args = f'-netns {ns} ' + args
return tool('ip', args, json=json, host=host)
def rand_port(): def rand_port():
""" """
Get unprivileged port, for now just random, one day we may decide to check if used. Get unprivileged port, for now just random, one day we may decide to check if used.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment