hwsim_utils.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # hwsim testing utilities
  2. # Copyright (c) 2013-2014, Jouni Malinen <j@w1.fi>
  3. #
  4. # This software may be distributed under the terms of the BSD license.
  5. # See README for more details.
  6. import os
  7. import subprocess
  8. import time
  9. import logging
  10. logger = logging.getLogger()
  11. def test_connectivity(ifname1, ifname2, dscp=None, tos=None, max_tries=1):
  12. if os.path.isfile("../../mac80211_hwsim/tools/hwsim_test"):
  13. hwsim_test = "../../mac80211_hwsim/tools/hwsim_test"
  14. else:
  15. hwsim_test = "hwsim_test"
  16. cmd = ["sudo",
  17. hwsim_test,
  18. ifname1,
  19. ifname2]
  20. if dscp:
  21. cmd.append('-D')
  22. cmd.append(str(dscp))
  23. elif tos:
  24. cmd.append('-t')
  25. cmd.append(str(tos))
  26. success = False
  27. for i in range(0, max_tries):
  28. try:
  29. s = subprocess.check_output(cmd)
  30. logger.debug(s)
  31. success = True
  32. break
  33. except subprocess.CalledProcessError, e:
  34. logger.info("hwsim failed: " + str(e.returncode))
  35. logger.info(e.output)
  36. if i + 1 < max_tries:
  37. time.sleep(1)
  38. if not success:
  39. raise Exception("hwsim_test failed")
  40. def test_connectivity_p2p(dev1, dev2, dscp=None, tos=None):
  41. ifname1 = dev1.group_ifname if dev1.group_ifname else dev1.ifname
  42. ifname2 = dev2.group_ifname if dev2.group_ifname else dev2.ifname
  43. test_connectivity(ifname1, ifname2, dscp, tos)
  44. def test_connectivity_p2p_sta(dev1, dev2, dscp=None, tos=None):
  45. ifname1 = dev1.group_ifname if dev1.group_ifname else dev1.ifname
  46. ifname2 = dev2.ifname
  47. test_connectivity(ifname1, ifname2, dscp, tos)
  48. def test_connectivity_sta(dev1, dev2, dscp=None, tos=None):
  49. ifname1 = dev1.ifname
  50. ifname2 = dev2.ifname
  51. test_connectivity(ifname1, ifname2, dscp, tos)