[PATCH v5 1/2] tests: Save the log of wmediumd

Masashi Honma masashi.honma at gmail.com
Mon Feb 27 16:50:51 PST 2017


Signed-off-by: Masashi Honma <masashi.honma at gmail.com>
---
 tests/hwsim/run-tests.py     |  2 ++
 tests/hwsim/test_wmediumd.py | 46 +++++++++++++++++++++++++++++++++-----------
 2 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/tests/hwsim/run-tests.py b/tests/hwsim/run-tests.py
index 6f62dea..80981ba 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 3319673..5c23658 100644
--- a/tests/hwsim/test_wmediumd.py
+++ b/tests/hwsim/test_wmediumd.py
@@ -18,26 +18,50 @@ 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:
-- 
2.7.4




More information about the Hostap mailing list