run-ap-tests.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/python
  2. #
  3. # AP WPA2-PSK tests
  4. # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
  5. #
  6. # This software may be distributed under the terms of the BSD license.
  7. # See README for more details.
  8. import os
  9. import re
  10. import sys
  11. import time
  12. import logging
  13. from wpasupplicant import WpaSupplicant
  14. def main():
  15. idx = 1
  16. if len(sys.argv) > 1 and sys.argv[1] == '-d':
  17. logging.basicConfig(level=logging.DEBUG)
  18. idx = idx + 1
  19. elif len(sys.argv) > 1 and sys.argv[1] == '-q':
  20. logging.basicConfig(level=logging.WARNING)
  21. idx = idx + 1
  22. else:
  23. logging.basicConfig(level=logging.INFO)
  24. if len(sys.argv) > idx:
  25. test_filter = sys.argv[idx]
  26. else:
  27. test_filter = None
  28. dev0 = WpaSupplicant('wlan0')
  29. dev1 = WpaSupplicant('wlan1')
  30. dev = [ dev0, dev1 ]
  31. for d in dev:
  32. if not d.ping():
  33. print d.ifname + ": No response from wpa_supplicant"
  34. return
  35. d.reset()
  36. print "DEV: " + d.ifname + ": " + d.p2p_dev_addr()
  37. tests = []
  38. for t in os.listdir("."):
  39. m = re.match(r'(test_ap_.*)\.py$', t)
  40. if m:
  41. print "Import test cases from " + t
  42. mod = __import__(m.group(1))
  43. mod.add_tests(tests)
  44. passed = []
  45. failed = []
  46. for t in tests:
  47. if test_filter:
  48. #if test_filter not in t.__name__:
  49. if test_filter != t.__name__:
  50. continue
  51. for d in dev:
  52. d.reset()
  53. print "START " + t.__name__
  54. if t.__doc__:
  55. print "Test: " + t.__doc__
  56. for d in dev:
  57. d.request("NOTE TEST-START " + t.__name__)
  58. try:
  59. t(dev)
  60. passed.append(t.__name__)
  61. print "PASS " + t.__name__
  62. except Exception, e:
  63. print e
  64. failed.append(t.__name__)
  65. print "FAIL " + t.__name__
  66. for d in dev:
  67. d.request("NOTE TEST-STOP " + t.__name__)
  68. if not test_filter:
  69. for d in dev:
  70. d.reset()
  71. print "passed tests: " + str(passed)
  72. print "failed tests: " + str(failed)
  73. if len(failed):
  74. sys.exit(1)
  75. if __name__ == "__main__":
  76. main()