tests: Scan result parsing
Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
e4a3e1d076
commit
e437a5aba1
1 changed files with 97 additions and 0 deletions
|
@ -1316,3 +1316,100 @@ def test_scan_ies(dev, apdev):
|
||||||
logger.info("beacon_ie: " + str(ie.keys()))
|
logger.info("beacon_ie: " + str(ie.keys()))
|
||||||
if bss['ie'] == bss['beacon_ie']:
|
if bss['ie'] == bss['beacon_ie']:
|
||||||
raise Exception("Both ie and beacon_ie show same data")
|
raise Exception("Both ie and beacon_ie show same data")
|
||||||
|
|
||||||
|
def test_scan_parsing(dev, apdev):
|
||||||
|
"""Scan result parsing"""
|
||||||
|
if "OK" not in dev[0].request("DRIVER_EVENT SCAN_RES START"):
|
||||||
|
raise Exception("DRIVER_EVENT SCAN_RES START failed")
|
||||||
|
|
||||||
|
if "FAIL" not in dev[0].request("DRIVER_EVENT SCAN_RES foo "):
|
||||||
|
raise Exception("Invalid DRIVER_EVENT SCAN_RES accepted")
|
||||||
|
|
||||||
|
tests = [ "",
|
||||||
|
"flags=ffffffff",
|
||||||
|
"bssid=02:03:04:05:06:07",
|
||||||
|
"freq=1234",
|
||||||
|
"beacon_int=102",
|
||||||
|
"caps=1234",
|
||||||
|
"qual=10",
|
||||||
|
"noise=10",
|
||||||
|
"level=10",
|
||||||
|
"tsf=1122334455667788",
|
||||||
|
"age=123",
|
||||||
|
"est_throughput=100",
|
||||||
|
"snr=10",
|
||||||
|
"parent_tsf=1122334455667788",
|
||||||
|
"tsf_bssid=02:03:04:05:06:07",
|
||||||
|
"ie=00",
|
||||||
|
"beacon_ie=00",
|
||||||
|
# Too long SSID
|
||||||
|
"bssid=02:ff:00:00:00:01 ie=0033" + 33*'FF',
|
||||||
|
# All parameters
|
||||||
|
"flags=ffffffff bssid=02:ff:00:00:00:02 freq=1234 beacon_int=102 caps=1234 qual=10 noise=10 level=10 tsf=1122334455667788 age=123456 est_throughput=100 snr=10 parent_tsf=1122334455667788 tsf_bssid=02:03:04:05:06:07 ie=000474657374 beacon_ie=000474657374",
|
||||||
|
# Beacon IEs truncated
|
||||||
|
"bssid=02:ff:00:00:00:03 ie=0000 beacon_ie=0003ffff",
|
||||||
|
# Probe Response IEs truncated
|
||||||
|
"bssid=02:ff:00:00:00:04 ie=00000101 beacon_ie=0000",
|
||||||
|
# DMG (invalid caps)
|
||||||
|
"bssid=02:ff:00:00:00:05 freq=58320 ie=0003646d67",
|
||||||
|
# DMG (IBSS)
|
||||||
|
"bssid=02:ff:00:00:00:06 freq=60480 caps=0001 ie=0003646d67",
|
||||||
|
# DMG (PBSS)
|
||||||
|
"bssid=02:ff:00:00:00:07 freq=62640 caps=0002 ie=0003646d67",
|
||||||
|
# DMG (AP)
|
||||||
|
"bssid=02:ff:00:00:00:08 freq=64800 caps=0003 ie=0003646d67",
|
||||||
|
# Test BSS for updates
|
||||||
|
"bssid=02:ff:00:00:00:09 freq=2412 caps=0011 level=1 ie=0003757064010182",
|
||||||
|
# Minimal BSS data
|
||||||
|
"bssid=02:ff:00:00:00:00 ie=0000" ]
|
||||||
|
for t in tests:
|
||||||
|
if "OK" not in dev[0].request("DRIVER_EVENT SCAN_RES BSS " + t):
|
||||||
|
raise Exception("DRIVER_EVENT SCAN_RES BSS failed")
|
||||||
|
|
||||||
|
if "OK" not in dev[0].request("DRIVER_EVENT SCAN_RES END"):
|
||||||
|
raise Exception("DRIVER_EVENT SCAN_RES END failed")
|
||||||
|
|
||||||
|
res = dev[0].request("SCAN_RESULTS")
|
||||||
|
logger.info("SCAN_RESULTS:\n" + res)
|
||||||
|
|
||||||
|
bss = []
|
||||||
|
res = dev[0].request("BSS FIRST")
|
||||||
|
if "FAIL" in res:
|
||||||
|
raise Exception("BSS FIRST failed")
|
||||||
|
while "\nbssid=" in res:
|
||||||
|
logger.info("BSS output:\n" + res)
|
||||||
|
bssid = None
|
||||||
|
id = None
|
||||||
|
for val in res.splitlines():
|
||||||
|
if val.startswith("id="):
|
||||||
|
id = val.split('=')[1]
|
||||||
|
if val.startswith("bssid="):
|
||||||
|
bssid = val.split('=')[1]
|
||||||
|
if bssid is None or id is None:
|
||||||
|
raise Exception("Missing id or bssid line")
|
||||||
|
bss.append(bssid)
|
||||||
|
res = dev[0].request("BSS NEXT-" + id)
|
||||||
|
|
||||||
|
logger.info("Discovered BSSs: " + str(bss))
|
||||||
|
invalid_bss = [ "02:03:04:05:06:07", "02:ff:00:00:00:01" ]
|
||||||
|
valid_bss = [ "02:ff:00:00:00:00", "02:ff:00:00:00:02",
|
||||||
|
"02:ff:00:00:00:03", "02:ff:00:00:00:04",
|
||||||
|
"02:ff:00:00:00:05", "02:ff:00:00:00:06",
|
||||||
|
"02:ff:00:00:00:07", "02:ff:00:00:00:08",
|
||||||
|
"02:ff:00:00:00:09" ]
|
||||||
|
for bssid in invalid_bss:
|
||||||
|
if bssid in bss:
|
||||||
|
raise Exception("Invalid BSS included: " + bssid)
|
||||||
|
for bssid in valid_bss:
|
||||||
|
if bssid not in bss:
|
||||||
|
raise Exception("Valid BSS missing: " + bssid)
|
||||||
|
|
||||||
|
logger.info("Update BSS parameters")
|
||||||
|
if "OK" not in dev[0].request("DRIVER_EVENT SCAN_RES START"):
|
||||||
|
raise Exception("DRIVER_EVENT SCAN_RES START failed")
|
||||||
|
if "OK" not in dev[0].request("DRIVER_EVENT SCAN_RES BSS bssid=02:ff:00:00:00:09 freq=2412 caps=0002 level=2 ie=000375706401028204"):
|
||||||
|
raise Exception("DRIVER_EVENT SCAN_RES BSS failed")
|
||||||
|
if "OK" not in dev[0].request("DRIVER_EVENT SCAN_RES END"):
|
||||||
|
raise Exception("DRIVER_EVENT SCAN_RES END failed")
|
||||||
|
res = dev[0].request("BSS 02:ff:00:00:00:09")
|
||||||
|
logger.info("Updated BSS:\n" + res)
|
||||||
|
|
Loading…
Reference in a new issue