|
@@ -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:
|