diff --git a/libs/lanforge/lf_tests.py b/libs/lanforge/lf_tests.py index 0e5df2190..153e7fcf7 100644 --- a/libs/lanforge/lf_tests.py +++ b/libs/lanforge/lf_tests.py @@ -2,8 +2,10 @@ # Used by Nightly_Sanity # This has different types of old_pytest like Single client connectivity, Single_Client_EAP, testrail_retest ######################################################################################################### +import datetime import sys import os +import threading import allure import pytest @@ -33,7 +35,6 @@ import csv from pull_report import Report from scp_util import SCP_File - S = 12 # from eap_connect import EAPConnect from test_ipv4_ttls import TTLSTest @@ -52,10 +53,13 @@ from attenuator_serial import AttenuatorSerial from lf_atten_mod_test import CreateAttenuator from lf_mesh_test import MeshTest from LANforge.lfcli_base import LFCliBase +from lf_tr398_test import TR398Test +from lf_pcap import LfPcap from sta_scan_test import StaScan realm = importlib.import_module("py-json.realm") Realm = realm.Realm + class RunTest: def __init__(self, configuration_data=None, local_report_path="../reports/", influx_params=None, run_lf=False, debug=False): @@ -106,6 +110,8 @@ class RunTest: self.rx_sensitivity_obj = None self.dualbandptest_obj = None self.msthpt_obj = None + self.cvtest_obj = None + self.pcap_obj = None self.influx_params = influx_params # self.influxdb = RecordInflux(_influx_host=influx_params["influx_host"], # _influx_port=influx_params["influx_port"], @@ -220,7 +226,7 @@ class RunTest: station_name=[], key_mgmt="WPA-EAP", pairwise="NA", group="NA", wpa_psk="DEFAULT", ttls_passwd="nolastart", ieee80211w=1, - wep_key="NA", ca_cert="NA", eap="TTLS", identity="nolaradius",d_vlan=False,cleanup=True): + wep_key="NA", ca_cert="NA", eap="TTLS", identity="nolaradius", d_vlan=False, cleanup=True): self.eap_connect = TTLSTest(host=self.lanforge_ip, port=self.lanforge_port, sta_list=station_name, vap=False, _debug_on=self.debug) @@ -283,7 +289,7 @@ class RunTest: self.eap_connect.build(extra_securities=extra_securities) self.eap_connect.start(station_name, True, True) if d_vlan: - self.station_ip = {} + self.station_ip = {} for sta_name in station_name: # try: station_data_str = "" @@ -329,12 +335,13 @@ class RunTest: cx_data = cx_data + "\n" allure.attach(name="cx_data", body=str(cx_data)) if cleanup: - self.eap_connect.cleanup(station_name) + self.eap_connect.cleanup(station_name) return self.eap_connect.passes() def wifi_capacity(self, mode="BRIDGE", vlan_id=100, batch_size="1,5,10,20,40,64,128", instance_name="wct_instance", download_rate="1Gbps", influx_tags=[], - upload_rate="1Gbps", protocol="TCP-IPv4", duration="60000", stations="", create_stations=True, sort="interleave", raw_lines=[]): + upload_rate="1Gbps", protocol="TCP-IPv4", duration="60000", stations="", create_stations=True, + sort="interleave", raw_lines=[]): instance_name = ''.join(random.choices(string.ascii_uppercase + string.digits, k=S)) if mode == "BRIDGE": upstream_port = self.upstream_port @@ -940,22 +947,22 @@ class RunTest: def mesh_test(self, instance_name=None, raw_lines=None, duration="60s"): self.mesh_obj = MeshTest( - lf_host=self.lanforge_ip, - lf_port=self.lanforge_port, - ssh_port=self.lf_ssh_port, - local_lf_report_dir=self.local_report_path, - lf_user="lanforge", - lf_password = "lanforge", - instance_name = instance_name, - duration = duration, - config_name = "mesh_config", - upstream = "1.2.2 eth2", - upload_speed="85%", - download_speed="85%", - pull_report = True, - load_old_cfg = False, - raw_lines = raw_lines, - ) + lf_host=self.lanforge_ip, + lf_port=self.lanforge_port, + ssh_port=self.lf_ssh_port, + local_lf_report_dir=self.local_report_path, + lf_user="lanforge", + lf_password="lanforge", + instance_name=instance_name, + duration=duration, + config_name="mesh_config", + upstream="1.2.2 eth2", + upload_speed="85%", + download_speed="85%", + pull_report=True, + load_old_cfg=False, + raw_lines=raw_lines, + ) self.mesh_obj.setup() self.mesh_obj.run() return self.mesh_obj @@ -963,12 +970,12 @@ class RunTest: def attenuator_serial_2g_radio(self, ssid="[BLANK]", passkey="[BLANK]", security="wpa2", mode="BRIDGE", vlan_id=100, sta_mode=0, station_name=[], lf_tools_obj=None): radio = self.twog_radios[0] - #index 0 of atten_serial_radio will ser no of 1st 2g radio and index 1 will ser no of 2nd and 3rd 2g radio + # index 0 of atten_serial_radio will ser no of 1st 2g radio and index 1 will ser no of 2nd and 3rd 2g radio atten_serial_radio = [] atten_serial = self.attenuator_serial() self.Client_Connect_Using_Radio(ssid=ssid, passkey=passkey, security=security, mode=mode, - vlan_id=vlan_id, radio=radio, sta_mode=sta_mode, - station_name=station_name) + vlan_id=vlan_id, radio=radio, sta_mode=sta_mode, + station_name=station_name) signal1 = lf_tools_obj.station_data_query(station_name=station_name[0], query="signal") atten_sr = atten_serial[0].split(".") for i in range(4): @@ -985,12 +992,12 @@ class RunTest: def attenuator_serial_5g_radio(self, ssid="[BLANK]", passkey="[BLANK]", security="wpa2", mode="BRIDGE", vlan_id=100, sta_mode=0, station_name=[], lf_tools_obj=None): radio = self.fiveg_radios[0] - #index 0 of atten_serial_radio will ser no of 1st 5g radio and index 1 will ser no of 2nd and 3rd 5g radio + # index 0 of atten_serial_radio will ser no of 1st 5g radio and index 1 will ser no of 2nd and 3rd 5g radio atten_serial_radio = [] atten_serial = self.attenuator_serial() self.Client_Connect_Using_Radio(ssid=ssid, passkey=passkey, security=security, mode=mode, - vlan_id=vlan_id, radio=radio, sta_mode=sta_mode, - station_name=station_name) + vlan_id=vlan_id, radio=radio, sta_mode=sta_mode, + station_name=station_name) signal1 = lf_tools_obj.station_data_query(station_name=station_name[0], query="signal") atten_sr = atten_serial[0].split(".") for i in range(4): @@ -1004,7 +1011,87 @@ class RunTest: self.Client_disconnect(station_name=station_name) return atten_serial_radio + def downlink_mu_mimo(self, radios_2g=[], radios_5g=[], radios_ax=[], dut_name="TIP", dut_5g="", dut_2g="", mode="BRIDGE", vlan_id=1, skip_2g=True, skip_5g=False): + raw_line = [] + skip_twog = '1' if skip_2g else '0' + skip_fiveg = '1' if skip_5g else '0' + sniff_radio = 'wiphy6' + channel = 149 if skip_2g else 11 + upstream_port = self.upstream_port + sets = [['Calibrate Attenuators', '0'], ['Receiver Sensitivity', '0'], ['Maximum Connection', '0'], + ['Maximum Throughput', '0'], ['Airtime Fairness', '0'], ['Range Versus Rate', '0'], + ['Spatial Consistency', '0'], + ['Multiple STAs Performance', '0'], ['Multiple Assoc Stability', '0'], ['Downlink MU-MIMO', '1'], + ['AP Coexistence', '0'], ['Long Term Stability', '0'], ['Skip 2.4Ghz Tests', f'{skip_twog}'], + ['Skip 5Ghz Tests', f'{skip_fiveg}'], ['2.4Ghz Channel', 'AUTO'], ['5Ghz Channel', 'AUTO']] + for i in range(6): + if i == 0 or i == 2: + raw_line.append([f'radio-{i}: {radios_5g[0] if i == 0 else radios_5g[1]}']) + if i == 1 or i == 3: + raw_line.append([f'radio-{i}: {radios_2g[0] if i == 1 else radios_2g[1]}']) + if i == 4 or i == 5: + raw_line.append([f'radio-{i}: {radios_ax[0] if i == 4 else radios_ax[1]}']) + + if len(raw_line) != 6: + raw_line = [['radio-0: 1.1.5 wiphy1'], ['radio-1: 1.1.4 wiphy0'], ['radio-2: 1.1.7 wiphy3'], + ['radio-3: 1.1.6 wiphy2'], ['radio-4: 1.1.8 wiphy4'], ['radio-5: 1.1.9 wiphy5']] + instance_name = "tr398-instance-{}".format(str(random.randint(0, 100000))) + + if not os.path.exists("mu-mimo-config.txt"): + with open("mu-mimo-config.txt", "wt") as f: + for i in raw_line: + f.write(str(i[0]) + "\n") + f.close() + + if mode == "BRIDGE" or mode == "NAT": + upstream_port = self.upstream_port + else: + upstream_port = self.upstream_port + "." + str(vlan_id) + print("Upstream Port: ", self.upstream_port) + + self.pcap_obj = LfPcap(host=self.lanforge_ip, port=self.lanforge_port) + self.cvtest_obj = TR398Test(lf_host=self.lanforge_ip, + lf_port=self.lanforge_port, + lf_user="lanforge", + lf_password="lanforge", + instance_name=instance_name, + config_name="cv_dflt_cfg", + upstream="1.1." + upstream_port, + pull_report=True, + local_lf_report_dir=self.local_report_path, + load_old_cfg=False, + dut2=dut_2g, + dut5=dut_5g, + raw_lines_file="mu-mimo-config.txt", + enables=[], + disables=[], + raw_lines=[], + sets=sets, + test_rig=dut_name + ) + self.cvtest_obj.setup() + t1 = threading.Thread(target=self.cvtest_obj.run) + t1.start() + # t2 = threading.Thread(target=self.pcap_obj.sniff_packets, args=(sniff_radio, "mu-mimo", channel, 60)) + # if t1.is_alive(): + # time.sleep(180) + # t2.start() + while t1.is_alive(): + time.sleep(1) + if os.path.exists("mu-mimo-config.txt"): + os.remove("mu-mimo-config.txt") + + report_name = self.cvtest_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + influx = CSVtoInflux(influx_host=self.influx_params["influx_host"], + influx_port=self.influx_params["influx_port"], + influx_org=self.influx_params["influx_org"], + influx_token=self.influx_params["influx_token"], + influx_bucket=self.influx_params["influx_bucket"], + path=report_name) + influx.glob() + return self.cvtest_obj + def scan_ssid(self, radio=""): '''This method for scan ssid data''' obj_scan = StaScan(host=self.lanforge_ip, port=self.lanforge_port, ssid="fake ssid", security="open", password="[BLANK]", radio=radio, sta_list=["sta0000"], csv_output="scan_ssid.csv") @@ -1078,17 +1165,17 @@ if __name__ == '__main__': "influx_tag": ["basic-03", "ec420"], } lanforge_data = { - "ip": "192.168.200.10", + "ip": "10.28.3.6", "port": 8080, "ssh_port": 22, - "2.4G-Radio": ["wiphy0"], - "5G-Radio": ["wiphy1"], - "AX-Radio": [], - "upstream": "1.1.eth1", - "upstream_subnet": "192.168.200.1/24", - "uplink": "1.1.eth2", + "2.4G-Radio": ["1.1.wiphy4"], + "5G-Radio": ["1.1.wiphy5"], + "AX-Radio": ["1.1.wiphy0", "1.1.wiphy1", "1.1.wiphy2", "1.1.wiphy3"], + "upstream": "1.1.eth2", + "upstream_subnet": "10.28.2.1/24", + "uplink": "1.1.eth3", "2.4G-Station-Name": "wlan0", - "5G-Station-Name": "wlan0", + "5G-Station-Name": "wlan1", "AX-Station-Name": "ax" } obj = RunTest(lanforge_data=lanforge_data, debug=False, influx_params=influx_params) @@ -1109,3 +1196,7 @@ if __name__ == '__main__': # print(a) # print(obj.eap_connect.json_get("port/1/1/sta0000?fields=ap,ip")) # obj.EAP_Connect(station_name=["sta0000", "sta0001"], eap="TTLS", ssid="testing_radius") + + +# TODO: create new funtion +# --> attach details to allure (ref:client_connectivity) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 91f90d34c..e20d9b005 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ influxdb-client pandas paramiko perfecto-py37 +pyshark pytest==6.2.2 requests scp diff --git a/tests/e2e/basic/downlink_mu_mimo_test/__init__.py b/tests/e2e/basic/downlink_mu_mimo_test/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/downlink_mu_mimo_test/open/__init__.py b/tests/e2e/basic/downlink_mu_mimo_test/open/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/downlink_mu_mimo_test/open/test_bridge_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/open/test_bridge_mode.py new file mode 100644 index 000000000..d114fc025 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/open/test_bridge_mode.py @@ -0,0 +1,156 @@ +""" + + Performance Test: Downlink MU-MIMO Test: Bridge Mode + pytest -m "downlink_mu_mimo and bridge and open and fiveg" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.bridge, pytest.mark.open] + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "open": [ + {"ssid_name": "mu-mimo-open-5g", "appliedRadios": ["5G"]}, + {"ssid_name": "mu-mimo-open-2g", "appliedRadios": ["2G"]} + ] + }, + "rf": { + "5G": { + "band": '5G', + "channel": 149, + "channel-width": 80 + }, + "2G": { + "band": '2G', + "channel": 11, + "channel-width": 20 + } + }, + "radius": False +} + + +@allure.suite("performance") +@allure.feature("BRIDGE MODE open security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoBridge(object): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.open + @pytest.mark.fiveg + def test_mu_mimo_open_bridge_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and open and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.open + @pytest.mark.twog + def test_mu_mimo_open_bridge_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and open and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/downlink_mu_mimo_test/open/test_nat_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/open/test_nat_mode.py new file mode 100644 index 000000000..84acd3b15 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/open/test_nat_mode.py @@ -0,0 +1,140 @@ +""" + + Performance Test: Downlink MU-MIMO Test: NAT Mode + pytest -m "downlink_mu_mimo and nat and open and fiveg" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.nat, pytest.mark.open] + +setup_params_general = { + "mode": "NAT", + "ssid_modes": { + "open": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"]}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"]} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("NAT MODE open security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoNat(object): + """ + Downlink MU-MIMO Test: NAT MODE + pytest -m downlink_mu_mimo and nat + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.open + @pytest.mark.fiveg + def test_mu_mimo_open_nat_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: NAT Mode + pytest -m downlink_mu_mimo and nat and open and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.open + @pytest.mark.fiveg + def test_mu_mimo_open_nat_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: NAT Mode + pytest -m downlink_mu_mimo and nat and open and twog + """ + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + diff --git a/tests/e2e/basic/downlink_mu_mimo_test/open/test_vlan_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/open/test_vlan_mode.py new file mode 100644 index 000000000..d4116a025 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/open/test_vlan_mode.py @@ -0,0 +1,140 @@ +""" + + Performance Test: Downlink MU-MIMO Test: VLAN Mode + pytest -m "downlink_mu_mimo and vlan and open and fiveg" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.vlan, pytest.mark.open] + +setup_params_general = { + "mode": "VLAN", + "ssid_modes": { + "open": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"], "vlan":100}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"], "vlan":100} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("VLAN MODE open security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoVlan(object): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.open + @pytest.mark.fiveg + def test_mu_mimo_open_vlan_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan and open and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.open + @pytest.mark.twog + def test_mu_mimo_open_vlan_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan and open and twog + """ + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/__init__.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_bridge_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_bridge_mode.py new file mode 100644 index 000000000..0515feba7 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_bridge_mode.py @@ -0,0 +1,156 @@ +""" + + Performance Test: Downlink MU-MIMO Test: Bridge Mode + pytest -m "downlink_mu_mimo and bridge and wpa2_personal" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.bridge, pytest.mark.wpa2_personal] + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "mu-mimo-wpa2-5g", "appliedRadios": ["5G"], "security_key": "something"}, + {"ssid_name": "mu-mimo-wpa2-2g", "appliedRadios": ["2G"], "security_key": "something"} + ] + }, + "rf": { + "5G": { + "band": '5G', + "channel": 149, + "channel-width": 80 + }, + "2G": { + "band": '2G', + "channel": 11, + "channel-width": 20 + } + }, + "radius": False +} + + +@allure.suite("performance") +@allure.feature("BRIDGE MODE wpa2_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoBridge(object): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa2_personal_bridge_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa2_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa2_personal + @pytest.mark.twog + def test_mu_mimo_wpa2_personal_bridge_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa2_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_nat_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_nat_mode.py new file mode 100644 index 000000000..caef631d7 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_nat_mode.py @@ -0,0 +1,145 @@ +""" + + Performance Test: Downlink MU-MIMO Test: NAT Mode + pytest -m "downlink_mu_mimo and nat and wpa2_personal and fiveg" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.nat, pytest.mark.wpa2_personal] + +setup_params_general = { + "mode": "NAT", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"], "security_key": "something"}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"], "security_key": "something"} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("NAT MODE wpa2_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoNat(object): + """ + Downlink MU-MIMO Test: nat Mode + pytest -m downlink_mu_mimo and nat + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa2_personal_nat_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: nat Mode + pytest -m downlink_mu_mimo and nat and wpa2_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa2_personal + @pytest.mark.twog + def test_mu_mimo_wpa2_personal_nat_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Nat Mode + pytest -m downlink_mu_mimo and nat and wpa2_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_vlan_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_vlan_mode.py new file mode 100644 index 000000000..4945758fe --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa2_personal/test_vlan_mode.py @@ -0,0 +1,145 @@ +""" + + Performance Test: Downlink MU-MIMO Test: VLAN Mode + pytest -m "downlink_mu_mimo and vlan and wpa2_personal" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.vlan, pytest.mark.wpa2_personal] + +setup_params_general = { + "mode": "VLAN", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"], "security_key": "something", "vlan":100}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"], "security_key": "something", "vlan":100} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("VLAN MODE wpa2_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoNat(object): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa2_personal_vlan_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan and wpa2_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa2_personal + @pytest.mark.twog + def test_mu_mimo_wpa2_personal_nat_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and nat and wpa2_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/__init__.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_bridge_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_bridge_mode.py new file mode 100644 index 000000000..9da9ad2be --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_bridge_mode.py @@ -0,0 +1,156 @@ +""" + + Performance Test: Downlink MU-MIMO Test: Bridge Mode + pytest -m "downlink_mu_mimo and bridge and wpa3_personal" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.bridge, pytest.mark.wpa3_personal] + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "wpa3_personal": [ + {"ssid_name": "mu-mimo-wpa3-5g", "appliedRadios": ["5G"], "security_key": "something"}, + {"ssid_name": "mu-mimo-wpa3-2g", "appliedRadios": ["2G"], "security_key": "something"} + ] + }, + "rf": { + "5G": { + "band": '5G', + "channel": 149, + "channel-width": 80 + }, + "2G": { + "band": '2G', + "channel": 11, + "channel-width": 20 + } + }, + "radius": False +} + + +@allure.suite("performance") +@allure.feature("BRIDGE MODE wpa3_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoBridge(object): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa3_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa3_personal_bridge_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa3_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa3_personal + @pytest.mark.twog + def test_mu_mimo_wpa3_personal_bridge_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa3_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_nat_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_nat_mode.py new file mode 100644 index 000000000..325319969 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_nat_mode.py @@ -0,0 +1,145 @@ +""" + + Performance Test: Downlink MU-MIMO Test: NAT Mode + pytest -m "downlink_mu_mimo and nat and wpa3_personal and fiveg" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.nat, pytest.mark.wpa3_personal] + +setup_params_general = { + "mode": "NAT", + "ssid_modes": { + "wpa3_personal": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"], "security_key": "something"}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"], "security_key": "something"} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("NAT MODE wpa3_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoNat(object): + """ + Downlink MU-MIMO Test: NAT Mode + pytest -m downlink_mu_mimo and nat + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa3_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa3_personal_nat_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: NAT Mode + pytest -m downlink_mu_mimo and nat and wpa3_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa3_personal + @pytest.mark.twog + def test_mu_mimo_wpa3_personal_nat_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa3_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True \ No newline at end of file diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_vlan_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_vlan_mode.py new file mode 100644 index 000000000..2bc956a38 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa3_personal/test_vlan_mode.py @@ -0,0 +1,145 @@ +""" + + Performance Test: Downlink MU-MIMO Test: VLAN Mode + pytest -m "downlink_mu_mimo and vlan and wpa3_personal and fiveg" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.vlan, pytest.mark.wpa3_personal] + +setup_params_general = { + "mode": "VLAN", + "ssid_modes": { + "wpa3_personal": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"], "security_key": "something", "vlan": 100}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"], "security_key": "something", "vlan": 100} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("VLAN MODE wpa3_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoNat(object): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa3_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa3_personal_vlan_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan and wpa3_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa3_personal + @pytest.mark.twog + def test_mu_mimo_wpa3_personal_vlan_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Vlan Mode + pytest -m downlink_mu_mimo and vlan and wpa3_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/__init__.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_bridge_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_bridge_mode.py new file mode 100644 index 000000000..228124fa2 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_bridge_mode.py @@ -0,0 +1,156 @@ +""" + + Performance Test: Downlink MU-MIMO Test: Bridge Mode + pytest -m "downlink_mu_mimo and bridge and wpa_personal" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.bridge, pytest.mark.wpa_personal] + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "wpa_personal": [ + {"ssid_name": "mu-mimo-wpa-5g", "appliedRadios": ["5G"], "security_key": "something"}, + {"ssid_name": "mu-mimo-wpa-2g", "appliedRadios": ["2G"], "security_key": "something"} + ] + }, + "rf": { + "5G": { + "band": '5G', + "channel": 149, + "channel-width": 80 + }, + "2G": { + "band": '2G', + "channel": 11, + "channel-width": 20 + } + }, + "radius": False +} + + +@allure.suite("performance") +@allure.feature("BRIDGE MODE wpa_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoBridge(object): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa_personal_bridge_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa3_personal + @pytest.mark.twog + def test_mu_mimo_wpa_personal_bridge_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa3_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_nat_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_nat_mode.py new file mode 100644 index 000000000..15f206179 --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_nat_mode.py @@ -0,0 +1,145 @@ +""" + + Performance Test: Downlink MU-MIMO Test: NAT Mode + pytest -m "downlink_mu_mimo and Nat and wpa_personal" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.nat, pytest.mark.wpa_personal] + +setup_params_general = { + "mode": "NAT", + "ssid_modes": { + "wpa_personal": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"], "security_key": "something"}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"], "security_key": "something"} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("NAT MODE wpa_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoNat(object): + """ + Downlink MU-MIMO Test: NAT Mode + pytest -m downlink_mu_mimo and nat + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa_personal_nat_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: NAT Mode + pytest -m downlink_mu_mimo and nat and wpa_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa_personal + @pytest.mark.twog + def test_mu_mimo_wpa_personal_nat_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and nat and wpa_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True \ No newline at end of file diff --git a/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_vlan_mode.py b/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_vlan_mode.py new file mode 100644 index 000000000..2c058dadd --- /dev/null +++ b/tests/e2e/basic/downlink_mu_mimo_test/wpa_personal/test_vlan_mode.py @@ -0,0 +1,145 @@ +""" + + Performance Test: Downlink MU-MIMO Test: VLAN Mode + pytest -m "downlink_mu_mimo and vlan and wpa_personal" + +""" +import os +import pytest +import allure + +pytestmark = [pytest.mark.downlink_mu_mimo, pytest.mark.vlan, pytest.mark.wpa_personal] + +setup_params_general = { + "mode": "VLAN", + "ssid_modes": { + "wpa_personal": [ + {"ssid_name": "mu-mimo-5g", "appliedRadios": ["5G"], "security_key": "something", "vlan":100}, + {"ssid_name": "mu-mimo-2g", "appliedRadios": ["2G"], "security_key": "something", "vlan":100} + ] + }, + "rf": [], + "radius": False +} + + +@allure.suite("performance") +@allure.feature("VLAN MODE wpa_personal security and Downlink MU_MIMO Test") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestMuMimoNat(object): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan + """ + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa_personal + @pytest.mark.fiveg + def test_mu_mimo_wpa_personal_vlan_5g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: VLAN Mode + pytest -m downlink_mu_mimo and vlan and wpa_personal and fiveg + """ + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, skip_2g=True, + skip_5g=False) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True + + @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6849", + name="WIFI-6849") + @pytest.mark.wpa_personal + @pytest.mark.twog + def test_mu_mimo_wpa_personal_vlan_2g(self, lf_tools, lf_test, create_lanforge_chamberview_dut): + """ + Downlink MU-MIMO Test: Bridge Mode + pytest -m downlink_mu_mimo and bridge and wpa3_personal and twog + """ + print('lf tool') + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 1 + dut_5g, dut_2g = "", "" + radios_2g, radios_5g, radios_ax = [], [], [] + data = lf_tools.json_get(_req_url="/port?fields=alias,port,mode") + data = data['interfaces'] + port, port_data = "", [] + for i in data: + for j in i: + if i[j]['mode'] != '': + port_data.append(i) + + for item in range(len(port_data)): + for p in port_data[item]: + temp = port_data[item][p]['port'].split('.') + temp = list(map(int, temp)) + temp = list(map(str, temp)) + port = ".".join(temp) + print(port) + if port_data[item][p]['mode'] == '802.11bgn-AC': + radios_2g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11an-AC': + radios_5g.append(port + " " + port_data[item][p]['alias']) + if port_data[item][p]['mode'] == '802.11abgn-AX': + radios_ax.append(port + " " + port_data[item][p]['alias']) + + print(lf_tools.dut_idx_mapping) + for i in lf_tools.dut_idx_mapping: + if lf_tools.dut_idx_mapping[i][3] == "5G": + dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (1)' + print(dut_5g) + if lf_tools.dut_idx_mapping[i][3] == "2G": + dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][ + 4] + ' (2)' + print(dut_2g) + mimo_obj = lf_test.downlink_mu_mimo(radios_2g=radios_2g, radios_5g=radios_5g, radios_ax=radios_ax, + mode=mode, + vlan_id=vlan, dut_name=dut_name, dut_5g=dut_5g, dut_2g=dut_2g, + skip_2g=False, + skip_5g=True) + report_name = mimo_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Downlink MU-MIMO Test") + assert True diff --git a/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/fiveg_band/test_CA_20Mhz_5g.py b/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/fiveg_band/test_CA_20Mhz_5g.py index 1f494700e..49dd36da4 100644 --- a/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/fiveg_band/test_CA_20Mhz_5g.py +++ b/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/fiveg_band/test_CA_20Mhz_5g.py @@ -58,6 +58,7 @@ class TestCountryCA20Mhz5GChannel36(object): pytest -m "country_code and twentyMhz and wpa2 and fiveg and channel36" """ profile_data = setup_params_general1["ssid_modes"]["wpa2_personal"][1] + ssid = profile_data["ssid_name"] security_key = profile_data["security_key"] security = "wpa2" diff --git a/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/fiveg_band/test_IN_40Mhz_5g.py b/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/fiveg_band/test_IN_40Mhz_5g.py index 9a52ccc4d..8021b9e5a 100644 --- a/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/fiveg_band/test_IN_40Mhz_5g.py +++ b/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/fiveg_band/test_IN_40Mhz_5g.py @@ -384,6 +384,7 @@ class TestCountryIN40Mhz5GChannel108(object): setup_params_general7 = { "mode": "BRIDGE", "ssid_modes": { + "wpa2_personal": [{"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}, {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} ]}, diff --git a/tests/fixtures_2x.py b/tests/fixtures_2x.py index 29435565f..0e9d3aa02 100644 --- a/tests/fixtures_2x.py +++ b/tests/fixtures_2x.py @@ -683,8 +683,8 @@ class Fixtures_2x: # Apply config instantiate_profile_obj.push_config(serial_number=get_equipment_ref[0]) - print(instantiate_profile_obj.base_profile_config) + config = json.loads(str(instantiate_profile_obj.base_profile_config).replace(" ", "").replace("'", '"').replace("True", "true")) config["uuid"] = 0