Jakub Kicinski wrote:
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.
Signed-off-by: Jakub Kicinski kuba@kernel.org
tools/testing/selftests/net/lib/py/utils.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/net/lib/py/utils.py b/tools/testing/selftests/net/lib/py/utils.py index d3715e6c21f2..11b588a2bb9d 100644 --- a/tools/testing/selftests/net/lib/py/utils.py +++ b/tools/testing/selftests/net/lib/py/utils.py @@ -56,10 +56,10 @@ import time return self.process(terminate=self.terminate) -def ip(args, json=None, ns=None, host=None):
- cmd_str = "ip "
+def tool(name, args, json=None, ns=None, host=None):
- cmd_str = name + " " if json:
cmd_str += '-j '
cmd_str += args cmd_obj = cmd(cmd_str, ns=ns, host=host) if json:cmd_str += '--json '
@@ -67,6 +67,12 @@ import time return cmd_obj +def ip(args, json=None, ns=None, host=None):
- if ns:
args = '-netns ' + ns + " " + args
Minor: inconsistent use of single and double comma strings. Maybe there's a reasoning that I'm just missing.
- return tool("ip", args, json=json, host=host)
def rand_port(): """ Get unprivileged port, for now just random, one day we may decide to check if used. -- 2.44.0