X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.git;a=blobdiff_plain;f=libeap%2Ftests%2Fhwsim%2Ftest_ap_track.py;h=75664a4ce6dc4410cddd4e486d2c750667ab076b;hp=5ca2b60e8eb1efabe91d0e00213f4279a31fafdc;hb=d1dd9aae6741e74f20bfc35e1db598652680279d;hpb=bd3bd69af16ab99706ba70ed11a3e291e968e5c6 diff --git a/libeap/tests/hwsim/test_ap_track.py b/libeap/tests/hwsim/test_ap_track.py index 5ca2b60..75664a4 100644 --- a/libeap/tests/hwsim/test_ap_track.py +++ b/libeap/tests/hwsim/test_ap_track.py @@ -25,7 +25,7 @@ def _test_ap_track_sta(dev, apdev): "hw_mode": "g", "channel": "6", "track_sta_max_num": "2" } - hapd = hostapd.add_ap(apdev[0]['ifname'], params) + hapd = hostapd.add_ap(apdev[0], params) bssid = apdev[0]['bssid'] params = { "ssid": "track", @@ -34,7 +34,7 @@ def _test_ap_track_sta(dev, apdev): "channel": "40", "track_sta_max_num": "100", "track_sta_max_age": "1" } - hapd2 = hostapd.add_ap(apdev[1]['ifname'], params) + hapd2 = hostapd.add_ap(apdev[1], params) bssid2 = apdev[1]['bssid'] for i in range(2): @@ -94,7 +94,7 @@ def _test_ap_track_sta_no_probe_resp(dev, apdev): "channel": "6", "beacon_int": "10000", "no_probe_resp_if_seen_on": apdev[1]['ifname'] } - hapd = hostapd.add_ap(apdev[0]['ifname'], params) + hapd = hostapd.add_ap(apdev[0], params) bssid = apdev[0]['bssid'] params = { "ssid": "track", @@ -102,7 +102,7 @@ def _test_ap_track_sta_no_probe_resp(dev, apdev): "hw_mode": "a", "channel": "40", "track_sta_max_num": "100" } - hapd2 = hostapd.add_ap(apdev[1]['ifname'], params) + hapd2 = hostapd.add_ap(apdev[1], params) bssid2 = apdev[1]['bssid'] dev[0].scan_for_bss(bssid2, freq=5200, force_scan=True) @@ -127,7 +127,7 @@ def _test_ap_track_sta_no_auth(dev, apdev): "channel": "6", "track_sta_max_num": "100", "no_auth_if_seen_on": apdev[1]['ifname'] } - hapd = hostapd.add_ap(apdev[0]['ifname'], params) + hapd = hostapd.add_ap(apdev[0], params) bssid = apdev[0]['bssid'] params = { "ssid": "track", @@ -135,7 +135,7 @@ def _test_ap_track_sta_no_auth(dev, apdev): "hw_mode": "a", "channel": "40", "track_sta_max_num": "100" } - hapd2 = hostapd.add_ap(apdev[1]['ifname'], params) + hapd2 = hostapd.add_ap(apdev[1], params) bssid2 = apdev[1]['bssid'] dev[0].scan_for_bss(bssid, freq=2437, force_scan=True) @@ -174,7 +174,7 @@ def _test_ap_track_sta_no_auth_passive(dev, apdev): "hw_mode": "g", "channel": "6", "no_auth_if_seen_on": apdev[1]['ifname'] } - hapd = hostapd.add_ap(apdev[0]['ifname'], params) + hapd = hostapd.add_ap(apdev[0], params) bssid = apdev[0]['bssid'] params = { "ssid": "track", @@ -184,7 +184,7 @@ def _test_ap_track_sta_no_auth_passive(dev, apdev): "interworking": "1", "venue_name": "eng:Venue", "track_sta_max_num": "100" } - hapd2 = hostapd.add_ap(apdev[1]['ifname'], params) + hapd2 = hostapd.add_ap(apdev[1], params) bssid2 = apdev[1]['bssid'] dev[0].scan_for_bss(bssid, freq=2437, force_scan=True) @@ -230,7 +230,7 @@ def _test_ap_track_sta_force_5ghz(dev, apdev): "channel": "6", "no_probe_resp_if_seen_on": apdev[1]['ifname'], "no_auth_if_seen_on": apdev[1]['ifname'] } - hapd = hostapd.add_ap(apdev[0]['ifname'], params) + hapd = hostapd.add_ap(apdev[0], params) bssid = apdev[0]['bssid'] params = { "ssid": "track", @@ -238,7 +238,7 @@ def _test_ap_track_sta_force_5ghz(dev, apdev): "hw_mode": "a", "channel": "40", "track_sta_max_num": "100" } - hapd2 = hostapd.add_ap(apdev[1]['ifname'], params) + hapd2 = hostapd.add_ap(apdev[1], params) bssid2 = apdev[1]['bssid'] dev[0].scan_for_bss(bssid, freq=2437, force_scan=True) @@ -263,7 +263,7 @@ def _test_ap_track_sta_force_2ghz(dev, apdev): "hw_mode": "g", "channel": "6", "track_sta_max_num": "100" } - hapd = hostapd.add_ap(apdev[0]['ifname'], params) + hapd = hostapd.add_ap(apdev[0], params) bssid = apdev[0]['bssid'] params = { "ssid": "track", @@ -272,7 +272,7 @@ def _test_ap_track_sta_force_2ghz(dev, apdev): "channel": "40", "no_probe_resp_if_seen_on": apdev[0]['ifname'], "no_auth_if_seen_on": apdev[0]['ifname'] } - hapd2 = hostapd.add_ap(apdev[1]['ifname'], params) + hapd2 = hostapd.add_ap(apdev[1], params) bssid2 = apdev[1]['bssid'] dev[0].scan_for_bss(bssid2, freq=5200, force_scan=True) @@ -283,3 +283,111 @@ def _test_ap_track_sta_force_2ghz(dev, apdev): if freq != '2437': raise Exception("Unexpected operating channel") dev[0].request("DISCONNECT") + +def test_ap_track_taxonomy(dev, apdev): + """AP tracking STA taxonomy""" + try: + _test_ap_track_taxonomy(dev, apdev) + finally: + dev[1].request("SET p2p_disabled 0") + subprocess.call(['iw', 'reg', 'set', '00']) + dev[0].flush_scan_cache() + dev[1].flush_scan_cache() + dev[2].flush_scan_cache() + +def _test_ap_track_taxonomy(dev, apdev): + params = { "ssid": "track", + "country_code": "US", + "hw_mode": "g", + "channel": "6", + "track_sta_max_num": "2" } + hapd = hostapd.add_ap(apdev[0], params) + bssid = apdev[0]['bssid'] + + dev[0].scan_for_bss(bssid, freq=2437, force_scan=True) + addr0 = dev[0].own_addr() + dev[0].connect("track", key_mgmt="NONE", scan_freq="2437") + + dev[1].request("SET p2p_disabled 1") + dev[1].scan_for_bss(bssid, freq=2437, force_scan=True) + addr1 = dev[1].own_addr() + dev[1].connect("track", key_mgmt="NONE", scan_freq="2437") + + wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5') + wpas.interface_add("wlan5") + wpas.request("SET model_name track test") + wpas.scan_for_bss(bssid, freq=2437, force_scan=True) + addr = wpas.own_addr() + wpas.connect("track", key_mgmt="NONE", scan_freq="2437") + + if "FAIL" not in hapd.request("SIGNATURE abc"): + raise Exception("SIGNATURE failure not reported (1)") + if "FAIL" not in hapd.request("SIGNATURE 22:33:44:55:66:77"): + raise Exception("SIGNATURE failure not reported (2)") + + res = hapd.request("SIGNATURE " + addr0) + logger.info("sta0: " + res) + if not res.startswith("wifi4|probe:"): + raise Exception("Unexpected SIGNATURE prefix") + if "|assoc:" not in res: + raise Exception("Missing assoc info in SIGNATURE") + if "wps:track_test" in res: + raise Exception("Unexpected WPS model name") + + res = hapd.request("SIGNATURE " + addr1) + logger.info("sta1: " + res) + if not res.startswith("wifi4|probe:"): + raise Exception("Unexpected SIGNATURE prefix") + if "|assoc:" not in res: + raise Exception("Missing assoc info in SIGNATURE") + if "wps:" in res: + raise Exception("Unexpected WPS info"); + if ",221(0050f2,4)," in res: + raise Exception("Unexpected WPS IE info"); + if ",221(506f9a,9)," in res: + raise Exception("Unexpected P2P IE info"); + + res = hapd.request("SIGNATURE " + addr) + logger.info("sta: " + res) + if not res.startswith("wifi4|probe:"): + raise Exception("Unexpected SIGNATURE prefix") + if "|assoc:" not in res: + raise Exception("Missing assoc info in SIGNATURE") + if "wps:track_test" not in res: + raise Exception("Missing WPS model name") + if ",221(0050f2,4)," not in res: + raise Exception("Missing WPS IE info"); + if ",221(506f9a,9)," not in res: + raise Exception("Missing P2P IE info"); + + addr2 = dev[2].own_addr() + res = hapd.request("SIGNATURE " + addr2) + if "FAIL" not in res: + raise Exception("Unexpected SIGNATURE success for sta2 (1)") + + for i in range(10): + dev[2].request("SCAN freq=2437 passive=1") + ev = dev[2].wait_event(["CTRL-EVENT-SCAN-RESULTS"], timeout=10) + if ev is None: + raise Exception("Scan did not complete") + if dev[2].get_bss(bssid): + break + + res = hapd.request("SIGNATURE " + addr2) + if "FAIL" not in res: + raise Exception("Unexpected SIGNATURE success for sta2 (2)") + + dev[2].connect("track", key_mgmt="NONE", scan_freq="2437") + + res = hapd.request("SIGNATURE " + addr2) + if "FAIL" not in res and len(res) > 0: + raise Exception("Unexpected SIGNATURE success for sta2 (3)") + + dev[2].scan_for_bss(bssid, freq=2437, force_scan=True) + + res = hapd.request("SIGNATURE " + addr2) + logger.info("sta2: " + res) + if not res.startswith("wifi4|probe:"): + raise Exception("Unexpected SIGNATURE prefix") + if "|assoc:" not in res: + raise Exception("Missing assoc info in SIGNATURE")