run-p2p-tests.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/usr/bin/python
  2. #
  3. # P2P 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. dev2 = WpaSupplicant('wlan2')
  31. dev = [ dev0, dev1, dev2 ]
  32. for d in dev:
  33. if not d.ping():
  34. print d.ifname + ": No response from wpa_supplicant"
  35. return
  36. d.reset()
  37. print "DEV: " + d.ifname + ": " + d.p2p_dev_addr()
  38. tests = []
  39. for t in os.listdir("."):
  40. m = re.match(r'(test_p2p_.*)\.py$', t)
  41. if m:
  42. print "Import test cases from " + t
  43. mod = __import__(m.group(1))
  44. mod.add_tests(tests)
  45. passed = []
  46. failed = []
  47. for t in tests:
  48. if test_filter:
  49. if test_filter not in t.__name__:
  50. continue
  51. for d in dev:
  52. d.reset()
  53. print "START " + t.__name__
  54. for d in dev:
  55. d.request("NOTE TEST-START " + t.__name__)
  56. try:
  57. t(dev)
  58. passed.append(t.__name__)
  59. print "PASS " + t.__name__
  60. except Exception, e:
  61. print e
  62. failed.append(t.__name__)
  63. print "FAIL " + t.__name__
  64. for d in dev:
  65. d.request("NOTE TEST-STOP " + t.__name__)
  66. if not test_filter:
  67. for d in dev:
  68. d.reset()
  69. print "passed tests: " + str(passed)
  70. print "failed tests: " + str(failed)
  71. if len(failed):
  72. sys.exit(1)
  73. if __name__ == "__main__":
  74. main()