tests: Use pgrep instead of ps

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.

In addition, raise an exception if PID was not found since the test
would just hang with pid = 0.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
This commit is contained in:
Benjamin Berg 2024-01-17 19:02:31 +01:00 committed by Jouni Malinen
parent 5ff6a2749b
commit 71bcb97b8c
2 changed files with 10 additions and 12 deletions

View file

@ -7607,20 +7607,15 @@ def test_ap_wpa2_eap_psk_mac_addr_change(dev, apdev):
params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
hapd = hostapd.add_ap(apdev[0], params)
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)
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)
logger.info("wpa_supplicant PID %d" % pid)
else:
raise Exception("Could not find wpa_supplicant PID")
addr = dev[0].get_status_field("address")
subprocess.call(['ip', 'link', 'set', 'dev', dev[0].ifname, 'down'])

View file

@ -146,6 +146,9 @@ if [ "$TELNET" = "1" ] ; then
) &
fi
# procps 3.3.17 needs an uptime of >1s (relevant for UML time-travel)
sleep 1
# check if we're rebooting due to a kernel panic ...
if grep -q 'Kernel panic' /tmp/logs/console ; then
echo "KERNEL CRASHED!" >/dev/ttyS0