X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.git;a=blobdiff_plain;f=libeap%2Ftests%2Fhwsim%2Ftest_fst_config.py;fp=libeap%2Ftests%2Fhwsim%2Ftest_fst_config.py;h=03287b23869187040a45c0d00cac5e0a0af1c0e5;hp=938cf9ac028e6a7777a49677b47c8c3556aa161b;hb=d1dd9aae6741e74f20bfc35e1db598652680279d;hpb=bd3bd69af16ab99706ba70ed11a3e291e968e5c6 diff --git a/libeap/tests/hwsim/test_fst_config.py b/libeap/tests/hwsim/test_fst_config.py index 938cf9a..03287b2 100644 --- a/libeap/tests/hwsim/test_fst_config.py +++ b/libeap/tests/hwsim/test_fst_config.py @@ -147,7 +147,7 @@ class FstLauncher: self.nof_aps -= 1 else: self.nof_stas -= 1 - config_file = self.get_cfg_pathname(cfg); + config_file = self.get_cfg_pathname(cfg) if os.path.exists(config_file): os.remove(config_file) @@ -162,7 +162,7 @@ class FstLauncher: 'alt-hostapd/hostapd/hostapd') if not os.path.exists(prg): prg = '../../hostapd/hostapd' - cmd = [ prg, '-B', '-ddd', + cmd = [ prg, '-B', '-dddt', '-P', pidfile, '-f', mylogfile, '-g', self.hapd_fst_global] for i in range(0, len(self.cfgs_to_run)): cfg = self.cfgs_to_run[i] @@ -189,7 +189,7 @@ class FstLauncher: 'alt-wpa_supplicant/wpa_supplicant/wpa_supplicant') if not os.path.exists(prg): prg = '../../wpa_supplicant/wpa_supplicant' - cmd = [ prg, '-B', '-ddd', + cmd = [ prg, '-B', '-dddt', '-P' + pidfile, '-f', mylogfile, '-g', self.wsup_fst_global ] sta_no = 0 for i in range(0, len(self.cfgs_to_run)): @@ -212,23 +212,39 @@ class FstLauncher: """Terminates hostapd/wpa_supplicant processes previously launched with run_hostapd/run_wpa_supplicant""" pidfile = self.fst_logpath + '/' + 'myhostapd.pid' - self.kill_pid(pidfile) + self.kill_pid(pidfile, self.nof_aps > 0) pidfile = self.fst_logpath + '/' + 'mywpa_supplicant.pid' - self.kill_pid(pidfile) + self.kill_pid(pidfile, self.nof_stas > 0) self.reg_ctrl.stop() while len(self.cfgs_to_run) != 0: cfg = self.cfgs_to_run[0] self.remove_cfg(cfg) - def kill_pid(self, pidfile): + def kill_pid(self, pidfile, try_again=False): """Kills process by PID file""" if not os.path.exists(pidfile): - return + if not try_again: + return + # It might take some time for the process to write the PID file, + # so wait a bit longer before giving up. + self.logger.info("kill_pid: pidfile %s does not exist - try again after a second" % pidfile) + time.sleep(1) + if not os.path.exists(pidfile): + self.logger.info("kill_pid: pidfile %s does not exist - could not kill the process" % pidfile) + return pid = -1 try: - pf = file(pidfile, 'r') - pid = int(pf.read().strip()) - pf.close() + for i in range(3): + pf = file(pidfile, 'r') + 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)) os.kill(pid, signal.SIGTERM) for i in range(10):