74 lines
3.1 KiB
Python
74 lines
3.1 KiB
Python
|
# Test cases for Multi-AP
|
||
|
# Copyright (c) 2018, The Linux Foundation
|
||
|
#
|
||
|
# This software may be distributed under the terms of the BSD license.
|
||
|
# See README for more details.
|
||
|
|
||
|
import hostapd
|
||
|
|
||
|
def test_multi_ap_association(dev, apdev):
|
||
|
"""Multi-AP association in backhaul BSS"""
|
||
|
run_multi_ap_association(dev, apdev, 1)
|
||
|
dev[1].connect("multi-ap", psk="12345678", scan_freq="2412",
|
||
|
wait_connect=False)
|
||
|
ev = dev[1].wait_event([ "CTRL-EVENT-DISCONNECTED",
|
||
|
"CTRL-EVENT-CONNECTED",
|
||
|
"CTRL-EVENT-ASSOC-REJECT" ],
|
||
|
timeout=5)
|
||
|
dev[1].request("DISCONNECT")
|
||
|
if ev is None:
|
||
|
raise Exception("Connection result not reported")
|
||
|
if "CTRL-EVENT-ASSOC-REJECT" not in ev:
|
||
|
raise Exception("Association rejection not reported")
|
||
|
if "status_code=12" not in ev:
|
||
|
raise Exception("Unexpected association status code: " + ev)
|
||
|
|
||
|
def test_multi_ap_association_shared_bss(dev, apdev):
|
||
|
"""Multi-AP association in backhaul BSS (with fronthaul BSS enabled)"""
|
||
|
run_multi_ap_association(dev, apdev, 3)
|
||
|
dev[1].connect("multi-ap", psk="12345678", scan_freq="2412")
|
||
|
|
||
|
def run_multi_ap_association(dev, apdev, multi_ap):
|
||
|
params = hostapd.wpa2_params(ssid="multi-ap", passphrase="12345678")
|
||
|
params["multi_ap"] = str(multi_ap)
|
||
|
hapd = hostapd.add_ap(apdev[0], params)
|
||
|
|
||
|
dev[0].connect("multi-ap", psk="12345678", multi_ap_backhaul_sta="1",
|
||
|
scan_freq="2412")
|
||
|
|
||
|
def test_multi_ap_disabled_on_ap(dev, apdev):
|
||
|
"""Multi-AP association attempt when disabled on AP"""
|
||
|
params = hostapd.wpa2_params(ssid="multi-ap", passphrase="12345678")
|
||
|
hapd = hostapd.add_ap(apdev[0], params)
|
||
|
|
||
|
dev[0].connect("multi-ap", psk="12345678", multi_ap_backhaul_sta="1",
|
||
|
scan_freq="2412", wait_connect=False)
|
||
|
ev = dev[0].wait_event([ "CTRL-EVENT-DISCONNECTED",
|
||
|
"CTRL-EVENT-CONNECTED" ],
|
||
|
timeout=5)
|
||
|
dev[0].request("DISCONNECT")
|
||
|
if ev is None:
|
||
|
raise Exception("Connection result not reported")
|
||
|
if "CTRL-EVENT-DISCONNECTED" not in ev:
|
||
|
raise Exception("Unexpected connection result")
|
||
|
|
||
|
def test_multi_ap_fronthaul_on_ap(dev, apdev):
|
||
|
"""Multi-AP association attempt when only fronthaul BSS on AP"""
|
||
|
params = hostapd.wpa2_params(ssid="multi-ap", passphrase="12345678")
|
||
|
params["multi_ap"] = "2"
|
||
|
hapd = hostapd.add_ap(apdev[0], params)
|
||
|
|
||
|
dev[0].connect("multi-ap", psk="12345678", multi_ap_backhaul_sta="1",
|
||
|
scan_freq="2412", wait_connect=False)
|
||
|
ev = dev[0].wait_event([ "CTRL-EVENT-DISCONNECTED",
|
||
|
"CTRL-EVENT-CONNECTED",
|
||
|
"CTRL-EVENT-ASSOC-REJECT" ],
|
||
|
timeout=5)
|
||
|
dev[0].request("DISCONNECT")
|
||
|
if ev is None:
|
||
|
raise Exception("Connection result not reported")
|
||
|
if "CTRL-EVENT-ASSOC-REJECT" not in ev:
|
||
|
raise Exception("Association rejection not reported")
|
||
|
if "status_code=12" not in ev:
|
||
|
raise Exception("Unexpected association status code: " + ev)
|