import time
import hostapd
-from utils import HwsimSkip
+from utils import HwsimSkip, fail_test
import hwsim_utils
from wpasupplicant import WpaSupplicant
dev[0].request("DISCONNECT")
finally:
dev[0].request("VENDOR_ELEM_REMOVE 13 *")
+
+def test_ap_wpa2_psk_no_random(dev, apdev):
+ """WPA2-PSK AP and no random numbers available"""
+ ssid = "test-wpa2-psk"
+ passphrase = 'qwertyuiop'
+ psk = '602e323e077bc63bd80307ef4745b754b0ae0a925c2638ecd13a794b9527b9e6'
+ params = hostapd.wpa2_params(ssid=ssid)
+ params['wpa_psk'] = psk
+ hapd = hostapd.add_ap(apdev[0]['ifname'], params)
+ with fail_test(hapd, 1, "wpa_gmk_to_gtk"):
+ id = dev[0].connect(ssid, raw_psk=psk, scan_freq="2412",
+ wait_connect=False)
+ ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=15)
+ if ev is None:
+ raise Exception("Disconnection event not reported")
+ dev[0].request("DISCONNECT")
+ dev[0].select_network(id, freq=2412)
+ dev[0].wait_connected()
if self._dev.request("GET_ALLOC_FAIL") != "0:%s" % self._funcs:
raise Exception("Allocation failure did not trigger")
+class fail_test(object):
+ def __init__(self, dev, count, funcs):
+ self._dev = dev
+ self._count = count
+ self._funcs = funcs
+ def __enter__(self):
+ cmd = "TEST_FAIL %d:%s" % (self._count, self._funcs)
+ if "OK" not in self._dev.request(cmd):
+ raise HwsimSkip("TEST_FAIL not supported")
+ def __exit__(self, type, value, traceback):
+ if type is None:
+ if self._dev.request("GET_FAIL") != "0:%s" % self._funcs:
+ raise Exception("Test failure did not trigger")
+
def require_under_vm():
with open('/proc/1/cmdline', 'r') as f:
cmd = f.read()