tests: More wpa_supplicant AP mode coverage

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2016-06-19 22:00:20 +03:00
parent 94e8fe90c2
commit 1f7cd73ca6

View file

@ -9,7 +9,8 @@ import logging
logger = logging.getLogger() logger = logging.getLogger()
import hwsim_utils import hwsim_utils
from utils import HwsimSkip from utils import HwsimSkip, alloc_fail
from wpasupplicant import WpaSupplicant
from test_p2p_channel import set_country from test_p2p_channel import set_country
def wait_ap_ready(dev): def wait_ap_ready(dev):
@ -415,3 +416,133 @@ def test_wpas_ap_open_ht_disabled(dev):
dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412") dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
hwsim_utils.test_connectivity(dev[0], dev[1]) hwsim_utils.test_connectivity(dev[0], dev[1])
def test_wpas_ap_failures(dev):
"""wpa_supplicant AP mode - failures"""
# No SSID configured for AP mode
id = dev[0].add_network()
dev[0].set_network(id, "mode", "2")
dev[0].set_network(id, "key_mgmt", "NONE")
dev[0].set_network(id, "frequency", "2412")
dev[0].set_network(id, "scan_freq", "2412")
dev[0].select_network(id)
ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED" ], timeout=0.1)
if ev is not None:
raise Exception("Unexpected connection event")
dev[0].request("REMOVE_NETWORK all")
# Invalid pbss value(2) for AP mode
dev[0].dump_monitor()
id = dev[0].add_network()
dev[0].set_network(id, "mode", "2")
dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
dev[0].set_network(id, "key_mgmt", "NONE")
dev[0].set_network(id, "frequency", "2412")
dev[0].set_network(id, "scan_freq", "2412")
dev[0].set_network(id, "pbss", "2")
dev[0].select_network(id)
ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
"CTRL-EVENT-DISCONNECTED" ], timeout=0.1)
if ev is not None and "CTRL-EVENT-CONNECTED" in ev:
raise Exception("Unexpected connection event(2)")
dev[0].request("REMOVE_NETWORK all")
def test_wpas_ap_oom(dev):
"""wpa_supplicant AP mode - OOM"""
id = dev[0].add_network()
dev[0].set_network(id, "mode", "2")
dev[0].set_network_quoted(id, "ssid", "wpas-ap")
dev[0].set_network_quoted(id, "psk", "1234567890")
dev[0].set_network(id, "frequency", "2412")
dev[0].set_network(id, "scan_freq", "2412")
with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
dev[0].select_network(id)
dev[0].wait_disconnected()
dev[0].request("REMOVE_NETWORK all")
id = dev[0].add_network()
dev[0].set_network(id, "mode", "2")
dev[0].set_network_quoted(id, "ssid", "wpas-ap")
dev[0].set_network(id, "psk", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef")
dev[0].set_network(id, "frequency", "2412")
dev[0].set_network(id, "scan_freq", "2412")
with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
dev[0].select_network(id)
dev[0].wait_disconnected()
dev[0].request("REMOVE_NETWORK all")
id = dev[0].add_network()
dev[0].set_network(id, "mode", "2")
dev[0].set_network_quoted(id, "ssid", "wpas-ap")
dev[0].set_network(id, "key_mgmt", "NONE")
dev[0].set_network_quoted(id, "wep_key0", "hello")
dev[0].set_network(id, "frequency", "2412")
dev[0].set_network(id, "scan_freq", "2412")
with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
dev[0].select_network(id)
dev[0].wait_disconnected()
dev[0].request("REMOVE_NETWORK all")
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5")
wpas.request("SET manufacturer test")
wpas.request("SET model_name test")
wpas.request("SET model_number test")
wpas.request("SET serial_number test")
wpas.request("SET serial_number test")
wpas.request("SET serial_number test")
wpas.request("SET ap_vendor_elements dd0411223301")
id = wpas.add_network()
wpas.set_network(id, "mode", "2")
wpas.set_network_quoted(id, "ssid", "wpas-ap")
wpas.set_network(id, "key_mgmt", "NONE")
wpas.set_network(id, "frequency", "2412")
wpas.set_network(id, "scan_freq", "2412")
for i in range(5):
with alloc_fail(wpas, i, "=wpa_supplicant_conf_ap"):
wpas.select_network(id)
ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
"CTRL-EVENT-DISCONNECTED" ], timeout=1)
wpas.request("DISCONNECT")
wpas.wait_disconnected()
def test_wpas_ap_params(dev):
"""wpa_supplicant AP mode - parameters"""
wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
wpas.interface_add("wlan5")
wpas.request("SET manufacturer test")
wpas.request("SET model_name test")
wpas.request("SET model_number test")
wpas.request("SET serial_number test")
wpas.request("SET serial_number test")
wpas.request("SET serial_number test")
wpas.request("SET ap_vendor_elements dd0411223301")
id = wpas.add_network()
wpas.set_network(id, "mode", "2")
wpas.set_network_quoted(id, "ssid", "wpas-ap")
wpas.set_network(id, "key_mgmt", "NONE")
wpas.set_network(id, "frequency", "2412")
wpas.set_network(id, "scan_freq", "2412")
wpas.select_network(id)
wpas.wait_connected()
wpas.request("DISCONNECT")
wpas.wait_disconnected()
wpas.request("SET beacon_int 200 3")
wpas.request("SET dtim_period 3")
wpas.select_network(id)
wpas.wait_connected()
wpas.request("DISCONNECT")
wpas.wait_disconnected()
wpas.set_network(id, "beacon_int", "300")
wpas.set_network(id, "dtim_period", "2")
wpas.select_network(id)
wpas.wait_connected()
if "---- AP ----" not in wpas.request("PMKSA"):
raise Exception("AP section missing from PMKSA output")
if "OK" not in wpas.request("PMKSA_FLUSH"):
raise Exception("PMKSA_FLUSH failed")
wpas.request("DISCONNECT")
wpas.wait_disconnected()