test_hostapd_oom.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # hostapd and out-of-memory error paths
  2. # Copyright (c) 2015, Jouni Malinen
  3. #
  4. # This software may be distributed under the terms of the BSD license.
  5. # See README for more details.
  6. import logging
  7. logger = logging.getLogger()
  8. import hostapd
  9. from utils import HwsimSkip
  10. def hostapd_oom_loop(apdev, params, start_func="main"):
  11. hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "ctrl" })
  12. hapd_global = hostapd.HostapdGlobal()
  13. count = 0
  14. for i in range(1, 1000):
  15. if "OK" not in hapd.request("TEST_ALLOC_FAIL %d:%s" % (i, start_func)):
  16. raise HwsimSkip("TEST_ALLOC_FAIL not supported")
  17. try:
  18. hostapd.add_ap(apdev[1]['ifname'], params)
  19. logger.info("Iteration %d - success" % i)
  20. hapd_global.remove(apdev[1]['ifname'])
  21. state = hapd.request('GET_ALLOC_FAIL')
  22. logger.info("GET_ALLOC_FAIL: " + state)
  23. hapd.request("TEST_ALLOC_FAIL 0:")
  24. if i < 3:
  25. raise Exception("AP setup succeeded during out-of-memory")
  26. if not state.startswith('0:'):
  27. count += 1
  28. if count == 5:
  29. break
  30. except Exception, e:
  31. logger.info("Iteration %d - %s" % (i, str(e)))
  32. def test_hostapd_oom_open(dev, apdev):
  33. """hostapd failing to setup open mode due to OOM"""
  34. params = { "ssid": "open" }
  35. hostapd_oom_loop(apdev, params)
  36. def test_hostapd_oom_wpa2_psk(dev, apdev):
  37. """hostapd failing to setup WPA2-PSK mode due to OOM"""
  38. params = hostapd.wpa2_params(ssid="test", passphrase="12345678")
  39. params['wpa_psk_file'] = 'hostapd.wpa_psk'
  40. hostapd_oom_loop(apdev, params)
  41. def test_hostapd_oom_wpa2_eap(dev, apdev):
  42. """hostapd failing to setup WPA2-EAP mode due to OOM"""
  43. params = hostapd.wpa2_eap_params(ssid="test")
  44. params['acct_server_addr'] = "127.0.0.1"
  45. params['acct_server_port'] = "1813"
  46. params['acct_server_shared_secret'] = "radius"
  47. hostapd_oom_loop(apdev, params)
  48. def test_hostapd_oom_wpa2_eap_radius(dev, apdev):
  49. """hostapd failing to setup WPA2-EAP mode due to OOM in RADIUS"""
  50. params = hostapd.wpa2_eap_params(ssid="test")
  51. params['acct_server_addr'] = "127.0.0.1"
  52. params['acct_server_port'] = "1813"
  53. params['acct_server_shared_secret'] = "radius"
  54. hostapd_oom_loop(apdev, params, start_func="accounting_init")