]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/run-tests.py
4 # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
6 # This software may be distributed under the terms of the BSD license.
7 # See README for more details.
13 from datetime
import datetime
16 logger
= logging
.getLogger(__name__
)
18 from wpasupplicant
import WpaSupplicant
19 from hostapd
import HostapdGlobal
21 def reset_devs(dev
, apdev
):
22 hapd
= HostapdGlobal()
27 logger
.info("Failed to reset device " + d
.ifname
)
30 hapd
.remove(ap
['ifname'])
38 if len(sys
.argv
) > 1 and sys
.argv
[1] == '-d':
39 logging
.basicConfig(level
=logging
.DEBUG
)
41 elif len(sys
.argv
) > 1 and sys
.argv
[1] == '-q':
42 logging
.basicConfig(level
=logging
.WARNING
)
44 elif len(sys
.argv
) > 2 and sys
.argv
[1] == '-l':
45 log_file
= sys
.argv
[2]
46 logging
.basicConfig(filename
=log_file
,level
=logging
.DEBUG
)
49 logging
.basicConfig(level
=logging
.INFO
)
51 if len(sys
.argv
) > idx
+ 1 and sys
.argv
[idx
] == '-e':
52 error_file
= sys
.argv
[idx
+ 1]
55 if len(sys
.argv
) > idx
+ 1 and sys
.argv
[idx
] == '-r':
56 results_file
= sys
.argv
[idx
+ 1]
59 if len(sys
.argv
) > idx
+ 1 and sys
.argv
[idx
] == '-f':
60 test_file
= sys
.argv
[idx
+ 1]
63 if len(sys
.argv
) > idx
:
64 test_filter
= sys
.argv
[idx
]
68 dev0
= WpaSupplicant('wlan0', '/tmp/wpas-wlan0')
69 dev1
= WpaSupplicant('wlan1', '/tmp/wpas-wlan1')
70 dev2
= WpaSupplicant('wlan2', '/tmp/wpas-wlan2')
71 dev
= [ dev0
, dev1
, dev2
]
73 apdev
.append({"ifname": 'wlan3', "bssid": "02:00:00:00:03:00"})
74 apdev
.append({"ifname": 'wlan4', "bssid": "02:00:00:00:04:00"})
78 logger
.info(d
.ifname
+ ": No response from wpa_supplicant")
80 logger
.info("DEV: " + d
.ifname
+ ": " + d
.p2p_dev_addr())
82 logger
.info("APDEV: " + ap
['ifname'])
85 for t
in os
.listdir("."):
86 m
= re
.match(r
'(test_.*)\.py$', t
)
88 if test_file
and test_file
not in t
:
90 logger
.info("Import test cases from " + t
)
91 mod
= __import__(m
.group(1))
93 if s
.startswith("test_"):
94 func
= mod
.__dict
__.get(s
)
102 if test_filter
!= t
.__name
__:
104 reset_devs(dev
, apdev
)
105 logger
.info("START " + t
.__name
__)
107 print "START " + t
.__name
__
109 logger
.info("Test: " + t
.__doc
__)
110 start
= datetime
.now()
113 d
.request("NOTE TEST-START " + t
.__name
__)
115 logger
.info("Failed to issue TEST-START before " + t
.__name
__ + " for " + d
.ifname
)
118 if t
.func_code
.co_argcount
> 1:
122 passed
.append(t
.__name
__)
125 result
= "PASS " + t
.__name
__ + " " + str(diff
.total_seconds()) + " " + str(end
)
130 f
= open(results_file
, 'a')
131 f
.write(result
+ "\n")
137 failed
.append(t
.__name
__)
138 result
= "FAIL " + t
.__name
__ + " " + str(diff
.total_seconds()) + " " + str(end
)
143 f
= open(results_file
, 'a')
144 f
.write(result
+ "\n")
148 d
.request("NOTE TEST-STOP " + t
.__name
__)
150 logger
.info("Failed to issue TEST-STOP after " + t
.__name
__ + " for " + d
.ifname
)
154 reset_devs(dev
, apdev
)
157 logger
.info("passed " + str(len(passed
)) + " test case(s)")
158 logger
.info("failed tests: " + str(failed
))
160 f
= open(error_file
, 'w')
161 f
.write(str(failed
) + '\n')
164 logger
.info("passed all " + str(len(passed
)) + " test case(s)")
166 print "passed all " + str(len(passed
)) + " test case(s)"
168 if __name__
== "__main__":