|
@@ -0,0 +1,76 @@
|
|
|
+# Test cases for wpa_supplicant WMM-AC operations
|
|
|
+# Copyright (c) 2014, Intel Corporation
|
|
|
+#
|
|
|
+# This software may be distributed under the terms of the BSD license.
|
|
|
+# See README for more details.
|
|
|
+
|
|
|
+import logging
|
|
|
+logger = logging.getLogger()
|
|
|
+
|
|
|
+import hwsim_utils
|
|
|
+import hostapd
|
|
|
+
|
|
|
+def add_wmm_ap(apdev, acm_list):
|
|
|
+ params = { "ssid": "wmm_ac",
|
|
|
+ "hw_mode": "g",
|
|
|
+ "channel": "11",
|
|
|
+ "wmm_enabled" : "1"}
|
|
|
+
|
|
|
+ for ac in acm_list:
|
|
|
+ params["wmm_ac_%s_acm" % (ac.lower())] = "1"
|
|
|
+
|
|
|
+ return hostapd.add_ap(apdev[0]['ifname'], params)
|
|
|
+
|
|
|
+def test_tspec(dev, apdev):
|
|
|
+ """Basic addts/delts tests"""
|
|
|
+ # configure ap with VO and VI requiring admission-control
|
|
|
+ hapd = add_wmm_ap(apdev, ["VO", "VI"])
|
|
|
+ dev[0].connect("wmm_ac", key_mgmt="NONE", scan_freq="2462")
|
|
|
+ hwsim_utils.test_connectivity(dev[0], hapd)
|
|
|
+ status = dev[0].request("WMM_AC_STATUS")
|
|
|
+ if "WMM AC is Enabled" not in status:
|
|
|
+ raise Exception("WMM-AC not enabled")
|
|
|
+ if "TSID" in status:
|
|
|
+ raise Exception("Unexpected TSID info")
|
|
|
+ if "BK: acm=0 uapsd=0" not in status:
|
|
|
+ raise Exception("Unexpected BK info" + status)
|
|
|
+ if "BE: acm=0 uapsd=0" not in status:
|
|
|
+ raise Exception("Unexpected BE info" + status)
|
|
|
+ if "VI: acm=1 uapsd=0" not in status:
|
|
|
+ raise Exception("Unexpected VI info" + status)
|
|
|
+ if "VO: acm=1 uapsd=0" not in status:
|
|
|
+ raise Exception("Unexpected VO info" + status)
|
|
|
+
|
|
|
+ tsid = 5
|
|
|
+
|
|
|
+ # make sure we fail when the ac is not configured for acm
|
|
|
+ try:
|
|
|
+ dev[0].add_ts(tsid, 3)
|
|
|
+ raise Exception("ADDTS succeeded although it should have failed")
|
|
|
+ except Exception, e:
|
|
|
+ if not str(e).startswith("ADDTS failed"):
|
|
|
+ raise
|
|
|
+ status = dev[0].request("WMM_AC_STATUS")
|
|
|
+ if "TSID" in status:
|
|
|
+ raise Exception("Unexpected TSID info")
|
|
|
+
|
|
|
+ # add tspec for UP=6
|
|
|
+ dev[0].add_ts(tsid, 6)
|
|
|
+ status = dev[0].request("WMM_AC_STATUS")
|
|
|
+ if "TSID" not in status:
|
|
|
+ raise Exception("Missing TSID info")
|
|
|
+
|
|
|
+ # using the same tsid for a different ac is invalid
|
|
|
+ try:
|
|
|
+ dev[0].add_ts(tsid, 5)
|
|
|
+ raise Exception("ADDTS succeeded although it should have failed")
|
|
|
+ except Exception, e:
|
|
|
+ if not str(e).startswith("ADDTS failed"):
|
|
|
+ raise
|
|
|
+
|
|
|
+ # update the tspec for a different UP of the same ac
|
|
|
+ dev[0].add_ts(tsid, 7)
|
|
|
+ dev[0].del_ts(tsid)
|
|
|
+ status = dev[0].request("WMM_AC_STATUS")
|
|
|
+ if "TSID" in status:
|
|
|
+ raise Exception("Unexpected TSID info")
|