diff mbox

[v3,26B/26] tests: remote add test_ap_open.py

Message ID 1455711871-13289-1-git-send-email-janusz.dziedzic@tieto.com
State Superseded
Headers show

Commit Message

Janusz.Dziedzic@tieto.com Feb. 17, 2016, 12:24 p.m. UTC
Add TP tests for AP open.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
---
 tests/remote/run-tests.py    |   5 +-
 tests/remote/test_ap_open.py | 663 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 666 insertions(+), 2 deletions(-)
 create mode 100644 tests/remote/test_ap_open.py
diff mbox

Patch

diff --git a/tests/remote/run-tests.py b/tests/remote/run-tests.py
index 2a3649b..41beacb 100755
--- a/tests/remote/run-tests.py
+++ b/tests/remote/run-tests.py
@@ -24,9 +24,10 @@  import wpaspy
 setup_params = {"setup_hw" : "./tests/setup_hw.sh",
                 "hostapd" : "./tests/hostapd",
                 "wpa_supplicant" : "./tests/wpa_supplicant",
-                "iperf" : "iperf3",
+                "iperf" : "iperf",
                 "country" : "PL",
-                "log_dir" : "/tmp/"}
+                "log_dir" : "/tmp/",
+                "ipv4_test_net" : "192.168.12.0"}
 
 devices = [{"hostname": "192.168.254.58", "ifname" : "wlan0", "port": "9877", "name" : "t2-ath9k", "flags" : "AP_HT40 STA_HT40"},
            {"hostname": "192.168.254.58", "ifname" : "wlan1", "port": "9877", "name" : "t2-ath10k", "flags" : "AP_VHT80"},
diff --git a/tests/remote/test_ap_open.py b/tests/remote/test_ap_open.py
new file mode 100644
index 0000000..551cd4f
--- /dev/null
+++ b/tests/remote/test_ap_open.py
@@ -0,0 +1,663 @@ 
+import wpaspy
+from wpasupplicant import WpaSupplicant
+import hostapd
+import utils
+import time
+import traceback
+
+import logging
+logger = logging.getLogger()
+
+def run_ap_sta(devices, duts, setup_params, ref, dut):
+    ref_dev = utils.get_device(devices, name=ref, flags="STA_VHT80")
+    dut_dev = utils.get_dut(duts, dut)
+
+    if ref_dev is None:
+        raise Exception("Could not get reference device")
+
+    if dut_dev is None:
+        raise Exception("Could not get DUT device")
+
+    ap, ap_log = utils.run_hostapd(dut_dev, setup_params)
+    sta, sta_log = utils.run_wpasupplicant(ref_dev, setup_params)
+    return sta, ap, sta_log, ap_log
+
+def run_tp_test(server, client, l3="ipv4", iperf="iperf", l4="tcp", test_time="10", parallel="5",
+                qos="be", bw="30M", ifname=None, port="5001"):
+    client_res = []
+    server_res = []
+
+    server_ip = utils.get_ip(server, l3)
+    time.sleep(1)
+    server_thread, client_thread = utils.iperf_run(server, client, server_ip, client_res, server_res,
+                                                   l3=l3, iperf=iperf, l4=l4, test_time=test_time,
+                                                   parallel=parallel, qos=qos, bw=bw, ifname=ifname,
+                                                   port=port)
+    utils.iperf_wait(server, client, server_thread, client_thread, iperf=iperf, timeout=int(test_time) + 10)
+
+    if client_res[0] != 0:
+        raise Exception(iperf + " client: " + client_res[1])
+    if server_res[0] != 0:
+        raise Exception(iperf + " server: " + server_res[1])
+    if client_res[1] is None:
+        raise Exception(iperf + " client result issue")
+    if server_res[1] is None:
+        raise Exception(iperf + " server result issue")
+
+    if iperf == "iperf":
+          result = server_res[1]
+    if iperf == "iperf3":
+          result = client_res[1]
+
+    speed = utils.get_iperf_speed(result)
+    return speed
+
+def get_ap_params(channel="1", bw="HT20", country="US"):
+    ssid = "test_" + channel + "_" + bw
+
+    if int(channel) > 14:
+        hw_mode = "a"
+    else:
+        hw_mode = "g"
+
+    ieee80211n = "0"
+    ieee80211ac = "0"
+    ht_capab = "[]"
+    wmm_enabled = "1"
+    vht_oper_chwidth ="0"
+    vht_oper_centr_freq_seg0_idx = "0"
+
+    if bw == "b_only":
+        hw_mode = "b"
+        wmm_enabled = "0"
+    elif bw == "g_only":
+        hw_mode = "g"
+        wmm_enabled = "0"
+    elif bw == "g_only_wmm":
+        hw_mode = "g"
+    elif bw == "a_only":
+        hw_mode = "a"
+        wmm_enabled = "0"
+    elif bw == "a_only_wmm":
+        hw_mode = "a"
+    elif bw == "HT20":
+        ieee80211n = "1"
+    elif bw == "HT40+":
+        ieee80211n = "1"
+        ht_capab = "[HT40+]"
+    elif bw == "HT40-":
+        ieee80211n = "1"
+        ht_capab = "[HT40-]"
+    elif bw == "VHT80":
+        ieee80211n = "1"
+        ieee80211ac = "1"
+        ht_capab = "[HT40+]"
+        vht_oper_chwidth = "1"
+        vht_oper_centr_freq_seg0_idx = str(int(channel) + 6)
+
+    params = {"ssid" : ssid,
+              "hw_mode" : hw_mode,
+              "channel" : channel,
+              "ht_capab" : ht_capab,
+              "ieee80211n" : ieee80211n,
+              "ieee80211ac" : ieee80211ac,
+              "country_code": country,
+              "wmm_enabled" : wmm_enabled,
+              "vht_oper_chwidth": vht_oper_chwidth,
+              "vht_oper_centr_freq_seg0_idx": vht_oper_centr_freq_seg0_idx}
+
+    return params
+
+def get_iperf_bw(bw, parallel, spacial_streams=2):
+    if bw == "b_only":
+        max_tp = 11
+    elif bw == "g_only" or bw == "g_only_wmm" or bw == "a_only" or bw == "a_only_wmm":
+        max_tp = 54
+    elif bw == "HT20":
+        max_tp = 72 * spacial_streams
+    elif bw == "HT40+" or bw == "HT40-":
+        max_tp = 150 * spacial_streams
+    elif bw == "VHT80":
+        max_tp = 433 * spacial_streams
+    else:
+        max_tp = 150
+
+    max_tp = 1.1 * max_tp
+
+    return str(int(max_tp/int(parallel))) + "M"
+
+def ap_open(devices, duts, setup_params, ref=None, dut=None, test_type="ping_ipv4",
+            channel="1", bw="HT20", country=None, test_time="30", parallel="5", qos="be"):
+    try:
+        sta = None
+        ap = None
+        hapd = None
+        wpas = None
+        sta_log = None
+        ap_log = None
+
+        local_log_dir = setup_params['local_log_dir']
+
+        # setup country code
+        if country is None:
+            try:
+                country = setup_params['country']
+            except:
+                country = "00"
+
+        # run hostapd/wpa_supplicant
+        sta, ap, sta_log, ap_log = run_ap_sta(devices, duts, setup_params, ref, dut)
+        ap_params = get_ap_params(channel, bw, country)
+        iperf_bw = get_iperf_bw(bw, parallel)
+
+        # setup AP/STA
+        hapd = hostapd.add_ap(ap.ifname, ap_params, hostname = ap.host, port = ap.port)
+        freq = hapd.get_status_field("freq")
+        wpas = WpaSupplicant(hostname = sta.host, global_iface="udp", global_port = sta.port)
+        wpas.interface_add(sta.ifname)
+        wpas.connect(ap_params['ssid'], key_mgmt="NONE", scan_freq=freq)
+        ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+        if ev is None:
+            raise Exception("No connection event received from hostapd")
+
+        # setup ip network
+        ap.execute("ifconfig " + ap.ifname + " " + utils.get_ipv4_addr(setup_params, 1))
+        sta.execute("ifconfig " + sta.ifname + " " + utils.get_ipv4_addr(setup_params, 2))
+
+        # dispatch test_type
+        if test_type == "ipv4_tcp_download":
+            speed = run_tp_test(ap, sta, "ipv4", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_tcp_upload":
+            speed = run_tp_test(sta, ap, "ipv4", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_tcp_download":
+            speed = run_tp_test(ap, sta, "ipv6", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_tcp_upload":
+            speed = run_tp_test(sta, ap, "ipv6", setup_params['iperf'], l4="tcp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_udp_download":
+            speed = run_tp_test(ap, sta, "ipv4", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_udp_upload":
+            speed = run_tp_test(sta, ap, "ipv4", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_udp_download":
+            speed = run_tp_test(ap, sta, "ipv6", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv6_udp_upload":
+            speed = run_tp_test(sta, ap, "ipv6", setup_params['iperf'], l4="udp",
+                                test_time=test_time, parallel=parallel, qos=qos, bw=iperf_bw)
+            append = speed
+        elif test_type == "ipv4_ping":
+            ap_sta, sta_ap = utils.check_connectivity(ap, sta, "ipv4")
+            append = "packet_loss: " + ap_sta + ", " + sta_ap
+        elif test_type == "ipv6_ping":
+            ap_sta, sta_ap = utils.check_connectivity(ap, sta, "ipv6")
+            append = "packet_loss: " + ap_sta + ", " + sta_ap
+        else:
+            raise Exception("Unknown ap_open test_type:", test_type)
+
+        wpas.request("DISCONNECT")
+        ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=5)
+        if ev is None:
+            raise Exception("No disconnection event received from hostapd")
+
+        sta.execute("ifconfig " + sta.ifname + " 0.0.0.0")
+        ap.execute("ifconfig " + ap.ifname + " 0.0.0.0")
+
+        wpas.interface_remove(sta.ifname)
+        wpas.terminate()
+
+        hapd.close_ctrl()
+        hostapd.remove_bss(ap.ifname, ap.host, ap.port)
+        hostapd.terminate(ap.host, ap.port)
+
+        if sta_log is not None:
+#            sta.local_execute("scp root@[" + sta.host + "]:" + sta_log + " " + local_log_dir)
+            sta.execute("rm " + sta_log)
+        if ap_log is not None:
+#            ap.local_execute("scp root@[" + ap.host + "]:" + ap_log + " " + local_log_dir)
+            ap.execute("rm " + ap_log)
+
+        return 0, append
+    except:
+        logger.info(traceback.format_exc())
+        if wpas is not None:
+            try:
+                wpas.interface_remove(sta.ifname)
+                wpas.terminate()
+            except:
+                pass
+        if hapd is not None:
+            try:
+                hapd.close_ctrl()
+                hostapd.remove_bss(ap.ifname, ap.host, ap.port)
+                hostapd.terminate(ap.host, ap.port)
+            except:
+                pass
+        if sta is not None:
+            sta.execute("ifconfig " + sta.ifname + " 0.0.0.0")
+            sta.execute("killall wpa_supplicant")
+            sta.execute("killall iperf")
+            if sta_log is not None:
+                sta.local_execute("scp root@[" + sta.host + "]:" + sta_log + " " + local_log_dir)
+                sta.execute("rm " + sta_log)
+        if ap is not None:
+            ap.execute("ifconfig " + ap.ifname + " 0.0.0.0")
+            ap.execute("killall hostapd")
+            ap.execute("killall iperf")
+            if ap_log is not None:
+                ap.local_execute("scp root@[" + ap.host + "]:" + ap_log + " " + local_log_dir)
+                ap.execute("rm " + ap_log)
+        raise
+
+# basic ping
+def test_ap_open_ipv4_ping(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration IPv4 ping"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_ping")
+
+def test_ap_open_ipv6_ping(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration IPv6"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_ping")
+
+
+# B-only
+def test_ap_open_2412_b_only_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="1", bw="b_only")
+
+def test_ap_open_2412_b_only_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 B-only IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="1", bw="b_only")
+def test_ap_open_all_chan_b_only_ipv4_ping(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration all channels B-only IPv4 ping"""
+    try:
+        country = setup_params['country']
+    except:
+        country = "US"
+
+    chan = 1
+    append = country + " "
+    while chan < 15:
+        try:
+            status, buf = ap_open(devices, duts, setup_params, ref, dut, "ipv4_ping", channel=str(chan),
+                                  bw="b_only", country = country)
+            if status is 0:
+                append = append + str(chan) + ": OK "
+            else:
+                append = append + str(chan) + ": FAILED <" + buf + ">"
+        except:
+            append = append + str(chan) + ": FAILED "
+        chan = chan + 1
+
+    return 0, append
+
+
+# G-only
+def test_ap_open_2462_g_only_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="11", bw="g_only")
+
+def test_ap_open_2462_g_only_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="11", bw="g_only")
+
+# G-only + WMM
+def test_ap_open_2412_g_only_wmm_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="1", bw="g_only_wmm")
+
+def test_ap_open_2412_g_only_wmm_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 G-only WMM IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="1", bw="g_only_wmm")
+
+
+# A-only
+def test_ap_open_5180_a_only_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="a_only")
+
+def test_ap_open_5180_a_only_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="36", bw="a_only")
+
+
+# A-only + WMM
+def test_ap_open_5180_a_only_wmm_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="a_only_wmm")
+
+def test_ap_open_5180_a_only_wmm_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 A-only WMM IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="36", bw="a_only_wmm")
+
+
+# HT20 - 2G
+def test_ap_open_2437_HT20_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv4 dup upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="6", bw="HT20")
+
+def test_ap_open_2437_HT20_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2437 HT20 IPv6 dup upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="6", bw="HT20")
+
+
+# HT40- 2G
+def test_ap_open_2462_HT40_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="11", bw="HT40-")
+
+def test_ap_open_2462_HT40_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2462 HT40- IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="11", bw="HT40-")
+
+
+# HT40+ 2G
+def test_ap_open_2412_HT40_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="1", bw="HT40+")
+
+def test_ap_open_2412_HT40_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 2412 HT40+ IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="1", bw="HT40+")
+
+
+# HT20 - 5G
+def test_ap_open_5180_HT20_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="40", bw="HT20")
+
+def test_ap_open_5180_HT20_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT20 IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="40", bw="HT20")
+
+# HT40+ 5G
+def test_ap_open_5180_HT40_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="HT40+")
+
+def test_ap_open_5180_HT40_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 HT40 IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="HT40+")
+
+# VHT80
+def test_ap_open_5180_VHT80_ipv4_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv4_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_tcp_upload", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv4_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv4_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv4 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv4_udp_upload", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_tcp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 tcp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_tcp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 tcp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_tcp_upload", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_udp_download(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 udp download"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_download", channel="36", bw="VHT80")
+
+def test_ap_open_5180_VHT80_ipv6_udp_upload(devices, duts, setup_params, ref=None, dut=None):
+    """AP with open mode (no security) configuration 5180 VHT80 IPv6 udp upload"""
+    return ap_open(devices, duts, setup_params, ref, dut, "ipv6_udp_upload", channel="36", bw="VHT80")