[PATCH v2] hwsim: Use pgrep instead of ps

benjamin at sipsolutions.net benjamin at sipsolutions.net
Wed Jan 17 10:02:31 PST 2024


From: Benjamin Berg <benjamin.berg at intel.com>

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.

Signed-off-by: Benjamin Berg <benjamin.berg at intel.com>
---

v2:
* Add sleep 1 into inside.sh
* Remove duplicate strip()
* Raise an exception if PID was not found
---
 tests/hwsim/test_ap_eap.py | 17 ++++++-----------
 tests/hwsim/vm/inside.sh   |  3 +++
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/tests/hwsim/test_ap_eap.py b/tests/hwsim/test_ap_eap.py
index bfc1bb417..beb02f965 100644
--- 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):
     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'])
diff --git a/tests/hwsim/vm/inside.sh b/tests/hwsim/vm/inside.sh
index 38c5284d9..31dfb9d57 100755
--- a/tests/hwsim/vm/inside.sh
+++ b/tests/hwsim/vm/inside.sh
@@ -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
-- 
2.43.0




More information about the Hostap mailing list