[PATCH 04/12] hwsim: Use pgrep instead of ps
Jouni Malinen
j at w1.fi
Sat Jan 13 10:04:48 PST 2024
On Mon, Dec 25, 2023 at 12:21:01PM +0200, Andrei Otcheretianski wrote:
> The ps command as shipped by busybox does not support the "command"
> column. Change the code to use pgrep instead which will work fine in all
> environments.
Something strange happens with this in my test setup..
> diff --git a/tests/hwsim/test_ap_eap.py b/tests/hwsim/test_ap_eap.py
> @@ -7607,20 +7607,15 @@ def test_ap_wpa2_eap_psk_mac_addr_change(dev, apdev):
> - cmd = subprocess.Popen(['ps', '-eo', 'pid,command'], stdout=subprocess.PIPE)
> - res = cmd.stdout.read().decode()
> + cmd = subprocess.Popen(['pgrep', '-nf', 'wpa_supplicant.*' + dev[0].ifname], stdout=subprocess.PIPE)
This call ends up printing "pgrep: uptime" in stderr and there is no
stdout response.
> + res = cmd.stdout.read().decode().strip()
> cmd.stdout.close()
> pid = 0
> - for p in res.splitlines():
> - if "wpa_supplicant" not in p:
> - continue
> - if dev[0].ifname not in p:
> - continue
> - pid = int(p.strip().split(' ')[0])
> - if pid == 0:
> - logger.info("Could not find wpa_supplicant PID")
> - else:
> + if res:
> + pid = int(res.strip())
That strip() part here seems unnecessary.
> logger.info("wpa_supplicant PID %d" % pid)
> + else:
> + logger.info("Could not find wpa_supplicant PID")
That else case would leave pid == 0 and that is not going to go well in
the end of this test case with os.kill(pi, signal.SIGSTOP).. I
understand that this is mostly unrelated to the changes here, but since
these change broke determination of the PID, I noticed this as the VM
just getting completely stuck.
--
Jouni Malinen PGP id EFC895FA
More information about the Hostap
mailing list