test_p2p_discovery.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/usr/bin/python
  2. #
  3. # P2P device discovery test cases
  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 logging
  9. logger = logging.getLogger(__name__)
  10. def test_discovery(dev):
  11. addr0 = dev[0].p2p_dev_addr()
  12. addr1 = dev[1].p2p_dev_addr()
  13. logger.info("Start device discovery")
  14. dev[0].p2p_find()
  15. dev[1].p2p_find()
  16. ev0 = dev[0].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
  17. if ev0 is None:
  18. raise Exception("Device discovery timed out")
  19. ev1 = dev[1].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
  20. if ev1 is None:
  21. raise Exception("Device discovery timed out")
  22. dev[0].dump_monitor()
  23. dev[1].dump_monitor()
  24. if addr1 not in ev0:
  25. raise Exception("Dev1 not found properly")
  26. if addr0 not in ev1:
  27. raise Exception("Dev0 not found properly")
  28. logger.info("Test provision discovery for display")
  29. dev[0].request("P2P_PROV_DISC " + addr1 + " display")
  30. ev1 = dev[1].wait_event(["P2P-PROV-DISC-SHOW-PIN"], timeout=15)
  31. if ev1 is None:
  32. raise Exception("Provision discovery timed out")
  33. if addr0 not in ev1:
  34. raise Exception("Dev0 not in provision discovery event")
  35. ev0 = dev[0].wait_event(["P2P-PROV-DISC-ENTER-PIN"], timeout=15)
  36. if ev0 is None:
  37. raise Exception("Provision discovery timed out")
  38. if addr1 not in ev0:
  39. raise Exception("Dev1 not in provision discovery event")
  40. logger.info("Test provision discovery for keypad")
  41. dev[0].request("P2P_PROV_DISC " + addr1 + " keypad")
  42. ev1 = dev[1].wait_event(["P2P-PROV-DISC-ENTER-PIN"], timeout=15)
  43. if ev1 is None:
  44. raise Exception("Provision discovery timed out")
  45. if addr0 not in ev1:
  46. raise Exception("Dev0 not in provision discovery event")
  47. ev0 = dev[0].wait_event(["P2P-PROV-DISC-SHOW-PIN"], timeout=15)
  48. if ev0 is None:
  49. raise Exception("Provision discovery timed out")
  50. if addr1 not in ev0:
  51. raise Exception("Dev1 not in provision discovery event")
  52. logger.info("Test provision discovery for push button")
  53. dev[0].request("P2P_PROV_DISC " + addr1 + " pbc")
  54. ev1 = dev[1].wait_event(["P2P-PROV-DISC-PBC-REQ"], timeout=15)
  55. if ev1 is None:
  56. raise Exception("Provision discovery timed out")
  57. if addr0 not in ev1:
  58. raise Exception("Dev0 not in provision discovery event")
  59. ev0 = dev[0].wait_event(["P2P-PROV-DISC-PBC-RESP"], timeout=15)
  60. if ev0 is None:
  61. raise Exception("Provision discovery timed out")
  62. if addr1 not in ev0:
  63. raise Exception("Dev1 not in provision discovery event")
  64. dev[0].p2p_stop_find
  65. dev[1].p2p_stop_find
  66. def add_tests(tests):
  67. tests.append(test_discovery)