* [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False @ 2025-08-30 18:43 Jakub Kicinski 2025-08-30 18:43 ` [PATCH net-next 2/2] selftests: net: py: don't default to shell=True Jakub Kicinski ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Jakub Kicinski @ 2025-08-30 18:43 UTC (permalink / raw) To: davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, joe, leitao, sdf, linux-kselftest, Jakub Kicinski Clean up tests which expect shell=True without explicitly passing that param to cmd(). There seems to be only one such case, and in fact it's better converted to a direct write. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- tools/testing/selftests/drivers/net/napi_threaded.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/napi_threaded.py b/tools/testing/selftests/drivers/net/napi_threaded.py index ed66efa481b0..f4be72b2145a 100755 --- a/tools/testing/selftests/drivers/net/napi_threaded.py +++ b/tools/testing/selftests/drivers/net/napi_threaded.py @@ -24,7 +24,8 @@ from lib.py import cmd, defer, ethtool def _set_threaded_state(cfg, threaded) -> None: - cmd(f"echo {threaded} > /sys/class/net/{cfg.ifname}/threaded") + with open(f"/sys/class/net/{cfg.ifname}/threaded", "wb") as fp: + fp.write(str(threaded).encode('utf-8')) def _setup_deferred_cleanup(cfg) -> None: -- 2.51.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH net-next 2/2] selftests: net: py: don't default to shell=True 2025-08-30 18:43 [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False Jakub Kicinski @ 2025-08-30 18:43 ` Jakub Kicinski 2025-09-01 9:34 ` Breno Leitao 2025-09-02 8:16 ` Breno Leitao 2025-09-01 9:04 ` [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False Breno Leitao 2025-09-02 23:20 ` patchwork-bot+netdevbpf 2 siblings, 2 replies; 7+ messages in thread From: Jakub Kicinski @ 2025-08-30 18:43 UTC (permalink / raw) To: davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, joe, leitao, sdf, linux-kselftest, Jakub Kicinski Overhead of using shell=True is quite significant. Micro-benchmark of running ethtool --help shows that non-shell run is 2x faster. Runtime of the XDP tests also shows improvement: this patch: 2m34s 2m21s 2m18s 2m18s before: 2m54s 2m36s 2m34s Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- tools/testing/selftests/net/lib/py/utils.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/lib/py/utils.py b/tools/testing/selftests/net/lib/py/utils.py index b188cac49738..e7155b6db9a3 100644 --- a/tools/testing/selftests/net/lib/py/utils.py +++ b/tools/testing/selftests/net/lib/py/utils.py @@ -29,9 +29,12 @@ import time """ Execute a command on local or remote host. + @shell defaults to false, and class will try to split @comm into a list + if it's a string with spaces. + Use bkg() instead to run a command in the background. """ - def __init__(self, comm, shell=True, fail=True, ns=None, background=False, + def __init__(self, comm, shell=None, fail=True, ns=None, background=False, host=None, timeout=5, ksft_wait=None): if ns: comm = f'ip netns exec {ns} ' + comm @@ -45,6 +48,10 @@ import time if host: self.proc = host.cmd(comm) else: + # If user doesn't explicitly request shell try to avoid it. + if shell is None and isinstance(comm, str) and ' ' in comm: + comm = comm.split() + # ksft_wait lets us wait for the background process to fully start, # we pass an FD to the child process, and wait for it to write back. # Similarly term_fd tells child it's time to exit. @@ -111,7 +118,7 @@ import time with bkg("my_binary", ksft_wait=5): """ - def __init__(self, comm, shell=True, fail=None, ns=None, host=None, + def __init__(self, comm, shell=None, fail=None, ns=None, host=None, exit_wait=False, ksft_wait=None): super().__init__(comm, background=True, shell=shell, fail=fail, ns=ns, host=host, -- 2.51.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH net-next 2/2] selftests: net: py: don't default to shell=True 2025-08-30 18:43 ` [PATCH net-next 2/2] selftests: net: py: don't default to shell=True Jakub Kicinski @ 2025-09-01 9:34 ` Breno Leitao 2025-09-01 17:38 ` Jakub Kicinski 2025-09-02 8:16 ` Breno Leitao 1 sibling, 1 reply; 7+ messages in thread From: Breno Leitao @ 2025-09-01 9:34 UTC (permalink / raw) To: Jakub Kicinski Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, joe, sdf, linux-kselftest On Sat, Aug 30, 2025 at 11:43:17AM -0700, Jakub Kicinski wrote: > @@ -45,6 +48,10 @@ import time > if host: > self.proc = host.cmd(comm) > else: > + # If user doesn't explicitly request shell try to avoid it. > + if shell is None and isinstance(comm, str) and ' ' in comm: > + comm = comm.split() I am wondering if you can always split the string, independently if shell is True or now. Passing comm as a list is usually recommend, even when shell is enabled. Also, if there is no space, split() will return the same string. What about something as? if isinstance(comm, str): comm = comm.split() ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next 2/2] selftests: net: py: don't default to shell=True 2025-09-01 9:34 ` Breno Leitao @ 2025-09-01 17:38 ` Jakub Kicinski 0 siblings, 0 replies; 7+ messages in thread From: Jakub Kicinski @ 2025-09-01 17:38 UTC (permalink / raw) To: Breno Leitao Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, joe, sdf, linux-kselftest On Mon, 1 Sep 2025 02:34:05 -0700 Breno Leitao wrote: > On Sat, Aug 30, 2025 at 11:43:17AM -0700, Jakub Kicinski wrote: > > @@ -45,6 +48,10 @@ import time > > if host: > > self.proc = host.cmd(comm) > > else: > > + # If user doesn't explicitly request shell try to avoid it. > > + if shell is None and isinstance(comm, str) and ' ' in comm: > > + comm = comm.split() > > I am wondering if you can always split the string, independently if > shell is True or now. Passing comm as a list is usually recommend, even > when shell is enabled. Also, if there is no space, split() will return > the same string. Not sure how that'll interact with various shells.. I'd rather play it safe. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next 2/2] selftests: net: py: don't default to shell=True 2025-08-30 18:43 ` [PATCH net-next 2/2] selftests: net: py: don't default to shell=True Jakub Kicinski 2025-09-01 9:34 ` Breno Leitao @ 2025-09-02 8:16 ` Breno Leitao 1 sibling, 0 replies; 7+ messages in thread From: Breno Leitao @ 2025-09-02 8:16 UTC (permalink / raw) To: Jakub Kicinski Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, joe, sdf, linux-kselftest On Sat, Aug 30, 2025 at 11:43:17AM -0700, Jakub Kicinski wrote: > Overhead of using shell=True is quite significant. > Micro-benchmark of running ethtool --help shows that > non-shell run is 2x faster. > > Runtime of the XDP tests also shows improvement: > this patch: 2m34s 2m21s 2m18s 2m18s > before: 2m54s 2m36s 2m34s > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Breno Leitao <leitao@debian.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False 2025-08-30 18:43 [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False Jakub Kicinski 2025-08-30 18:43 ` [PATCH net-next 2/2] selftests: net: py: don't default to shell=True Jakub Kicinski @ 2025-09-01 9:04 ` Breno Leitao 2025-09-02 23:20 ` patchwork-bot+netdevbpf 2 siblings, 0 replies; 7+ messages in thread From: Breno Leitao @ 2025-09-01 9:04 UTC (permalink / raw) To: Jakub Kicinski Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, joe, sdf, linux-kselftest On Sat, Aug 30, 2025 at 11:43:16AM -0700, Jakub Kicinski wrote: > Clean up tests which expect shell=True without explicitly passing > that param to cmd(). There seems to be only one such case, and > in fact it's better converted to a direct write. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Breno Leitao <leitao@debian.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False 2025-08-30 18:43 [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False Jakub Kicinski 2025-08-30 18:43 ` [PATCH net-next 2/2] selftests: net: py: don't default to shell=True Jakub Kicinski 2025-09-01 9:04 ` [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False Breno Leitao @ 2025-09-02 23:20 ` patchwork-bot+netdevbpf 2 siblings, 0 replies; 7+ messages in thread From: patchwork-bot+netdevbpf @ 2025-09-02 23:20 UTC (permalink / raw) To: Jakub Kicinski Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, joe, leitao, sdf, linux-kselftest Hello: This series was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Sat, 30 Aug 2025 11:43:16 -0700 you wrote: > Clean up tests which expect shell=True without explicitly passing > that param to cmd(). There seems to be only one such case, and > in fact it's better converted to a direct write. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > --- > tools/testing/selftests/drivers/net/napi_threaded.py | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) Here is the summary with links: - [net-next,1/2] selftests: drv-net: adjust tests before defaulting to shell=False https://git.kernel.org/netdev/net-next/c/c2e5108649ab - [net-next,2/2] selftests: net: py: don't default to shell=True https://git.kernel.org/netdev/net-next/c/bc1a767f695d You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-09-02 23:20 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-08-30 18:43 [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False Jakub Kicinski 2025-08-30 18:43 ` [PATCH net-next 2/2] selftests: net: py: don't default to shell=True Jakub Kicinski 2025-09-01 9:34 ` Breno Leitao 2025-09-01 17:38 ` Jakub Kicinski 2025-09-02 8:16 ` Breno Leitao 2025-09-01 9:04 ` [PATCH net-next 1/2] selftests: drv-net: adjust tests before defaulting to shell=False Breno Leitao 2025-09-02 23:20 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).