# hwsim testing utilities # Copyright (c) 2013-2014, Jouni Malinen # # This software may be distributed under the terms of the BSD license. # See README for more details. import os import subprocess import time import logging logger = logging.getLogger() def test_connectivity(ifname1, ifname2, dscp=None, tos=None, max_tries=1): if os.path.isfile("../../mac80211_hwsim/tools/hwsim_test"): hwsim_test = "../../mac80211_hwsim/tools/hwsim_test" else: hwsim_test = "hwsim_test" cmd = ["sudo", hwsim_test, ifname1, ifname2] if dscp: cmd.append('-D') cmd.append(str(dscp)) elif tos: cmd.append('-t') cmd.append(str(tos)) success = False for i in range(0, max_tries): try: s = subprocess.check_output(cmd) logger.debug(s) success = True break except subprocess.CalledProcessError, e: logger.info("hwsim failed: " + str(e.returncode)) logger.info(e.output) if i + 1 < max_tries: time.sleep(1) if not success: raise Exception("hwsim_test failed") def test_connectivity_p2p(dev1, dev2, dscp=None, tos=None): ifname1 = dev1.group_ifname if dev1.group_ifname else dev1.ifname ifname2 = dev2.group_ifname if dev2.group_ifname else dev2.ifname test_connectivity(ifname1, ifname2, dscp, tos) def test_connectivity_p2p_sta(dev1, dev2, dscp=None, tos=None): ifname1 = dev1.group_ifname if dev1.group_ifname else dev1.ifname ifname2 = dev2.ifname test_connectivity(ifname1, ifname2, dscp, tos) def test_connectivity_sta(dev1, dev2, dscp=None, tos=None): ifname1 = dev1.ifname ifname2 = dev2.ifname test_connectivity(ifname1, ifname2, dscp, tos)