diff --git a/tests/hwsim/run-tests.py b/tests/hwsim/run-tests.py index 6f62deacb..80981ba06 100755 --- a/tests/hwsim/run-tests.py +++ b/tests/hwsim/run-tests.py @@ -516,6 +516,8 @@ def main(): rename_log(args.logdir, 'fst-wpa_supplicant', name, None) if os.path.exists(os.path.join(args.logdir, 'fst-hostapd')): rename_log(args.logdir, 'fst-hostapd', name, None) + if os.path.exists(os.path.join(args.logdir, 'wmediumd.log')): + rename_log(args.logdir, 'wmediumd.log', name, None) end = datetime.now() diff = end - start diff --git a/tests/hwsim/test_wmediumd.py b/tests/hwsim/test_wmediumd.py index 331967343..8d287e40a 100644 --- a/tests/hwsim/test_wmediumd.py +++ b/tests/hwsim/test_wmediumd.py @@ -18,26 +18,51 @@ ifaces : }; """ -def test_wmediumd_simple(dev, apdev): +def output_wmediumd_log(p, params, data): + log_file = open(os.path.abspath(os.path.join(params['logdir'], + 'wmediumd.log')), 'a') + log_file.write(data) + log_file.close() + +def start_wmediumd(fn, params): + try: + p = subprocess.Popen(['wmediumd', '-c', fn], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + except OSError, e: + if e.errno == errno.ENOENT: + raise HwsimSkip('wmediumd not available') + raise + + logs = '' + while True: + line = p.stdout.readline() + if not line: + output_wmediumd_log(p, params, logs) + raise Exception('wmediumd was terminated unexpectedly') + if line.find('REGISTER SENT!') > -1: + break + logs += line + return p + +def stop_wmediumd(p, params): + p.terminate() + p.wait() + stdoutdata, stderrdata = p.communicate() + output_wmediumd_log(p, params, stdoutdata) + +def test_wmediumd_simple(dev, apdev, params): """test a simple wmediumd configuration""" fd, fn = tempfile.mkstemp() try: f = os.fdopen(fd, 'w') f.write(CFG % (apdev[0]['bssid'], dev[0].own_addr())) f.close() - try: - p = subprocess.Popen(['wmediumd', '-c', fn], - stdout=open('/dev/null', 'a'), - stderr=subprocess.STDOUT) - except OSError, e: - if e.errno == errno.ENOENT: - raise HwsimSkip("wmediumd not available") - raise + p = start_wmediumd(fn, params) try: _test_ap_open(dev, apdev) finally: - p.terminate() - p.wait() + stop_wmediumd(p, params) # test that releasing hwsim works correctly _test_ap_open(dev, apdev) finally: