tests: Make FST kill_pid() more robust
It looks like the attempt to read the process id from a PID file can return empty data. This resulted in kill_pid() failing to kill the process and all the following FST test cases using the extra interface failing. While the PID file is really supposed to have a valid PID value when we get this far, it is better to try multiple times to avoid failing large number of test cases. The current os_daemonize() implementation ends up calling daemon() first and then writing the PID file from the remaining process that is running in the background. This leaves a short race condition where an external process that started hostapd/wpa_supplicant could end up trying to read the PID file before it has been written. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
7509b550f6
commit
d952f02136
1 changed files with 11 additions and 3 deletions
|
@ -234,9 +234,17 @@ class FstLauncher:
|
||||||
return
|
return
|
||||||
pid = -1
|
pid = -1
|
||||||
try:
|
try:
|
||||||
pf = file(pidfile, 'r')
|
for i in range(3):
|
||||||
pid = int(pf.read().strip())
|
pf = file(pidfile, 'r')
|
||||||
pf.close()
|
pidtxt = pf.read().strip()
|
||||||
|
self.logger.debug("kill_pid: %s: '%s'" % (pidfile, pidtxt))
|
||||||
|
pf.close()
|
||||||
|
try:
|
||||||
|
pid = int(pidtxt)
|
||||||
|
break
|
||||||
|
except Exception, e:
|
||||||
|
self.logger.debug("kill_pid: No valid PID found: %s" % str(e))
|
||||||
|
time.sleep(1)
|
||||||
self.logger.debug("kill_pid %s --> pid %d" % (pidfile, pid))
|
self.logger.debug("kill_pid %s --> pid %d" % (pidfile, pid))
|
||||||
os.kill(pid, signal.SIGTERM)
|
os.kill(pid, signal.SIGTERM)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
|
|
Loading…
Reference in a new issue