test_p2p_discovery.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. """P2P device discovery and provision discovery"""
  12. addr0 = dev[0].p2p_dev_addr()
  13. addr1 = dev[1].p2p_dev_addr()
  14. logger.info("Start device discovery")
  15. dev[0].p2p_find(social=True)
  16. dev[1].p2p_find(social=True)
  17. ev0 = dev[0].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
  18. if ev0 is None:
  19. raise Exception("Device discovery timed out")
  20. ev1 = dev[1].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
  21. if ev1 is None:
  22. raise Exception("Device discovery timed out")
  23. dev[0].dump_monitor()
  24. dev[1].dump_monitor()
  25. if addr1 not in ev0:
  26. raise Exception("Dev1 not found properly")
  27. if addr0 not in ev1:
  28. raise Exception("Dev0 not found properly")
  29. logger.info("Test provision discovery for display")
  30. dev[0].request("P2P_PROV_DISC " + addr1 + " display")
  31. ev1 = dev[1].wait_event(["P2P-PROV-DISC-SHOW-PIN"], timeout=15)
  32. if ev1 is None:
  33. raise Exception("Provision discovery timed out (display/dev1)")
  34. if addr0 not in ev1:
  35. raise Exception("Dev0 not in provision discovery event")
  36. ev0 = dev[0].wait_event(["P2P-PROV-DISC-ENTER-PIN",
  37. "P2P-PROV-DISC-FAILURE"], timeout=15)
  38. if ev0 is None:
  39. raise Exception("Provision discovery timed out (display/dev0)")
  40. if "P2P-PROV-DISC-FAILURE" in ev0:
  41. raise Exception("Provision discovery failed (display/dev0)")
  42. if addr1 not in ev0:
  43. raise Exception("Dev1 not in provision discovery event")
  44. logger.info("Test provision discovery for keypad")
  45. dev[0].request("P2P_PROV_DISC " + addr1 + " keypad")
  46. ev1 = dev[1].wait_event(["P2P-PROV-DISC-ENTER-PIN"], timeout=15)
  47. if ev1 is None:
  48. raise Exception("Provision discovery timed out (keypad/dev1)")
  49. if addr0 not in ev1:
  50. raise Exception("Dev0 not in provision discovery event")
  51. ev0 = dev[0].wait_event(["P2P-PROV-DISC-SHOW-PIN", "P2P-PROV-DISC-FAILURE"],
  52. timeout=15)
  53. if ev0 is None:
  54. raise Exception("Provision discovery timed out (keypad/dev0)")
  55. if "P2P-PROV-DISC-FAILURE" in ev0:
  56. raise Exception("Provision discovery failed (keypad/dev0)")
  57. if addr1 not in ev0:
  58. raise Exception("Dev1 not in provision discovery event")
  59. logger.info("Test provision discovery for push button")
  60. dev[0].request("P2P_PROV_DISC " + addr1 + " pbc")
  61. ev1 = dev[1].wait_event(["P2P-PROV-DISC-PBC-REQ"], timeout=15)
  62. if ev1 is None:
  63. raise Exception("Provision discovery timed out (pbc/dev1)")
  64. if addr0 not in ev1:
  65. raise Exception("Dev0 not in provision discovery event")
  66. ev0 = dev[0].wait_event(["P2P-PROV-DISC-PBC-RESP", "P2P-PROV-DISC-FAILURE"],
  67. timeout=15)
  68. if ev0 is None:
  69. raise Exception("Provision discovery timed out (pbc/dev0)")
  70. if "P2P-PROV-DISC-FAILURE" in ev0:
  71. raise Exception("Provision discovery failed (pbc/dev0)")
  72. if addr1 not in ev0:
  73. raise Exception("Dev1 not in provision discovery event")
  74. dev[0].p2p_stop_find
  75. dev[1].p2p_stop_find