diff --git a/lanforge/lanforge-scripts b/lanforge/lanforge-scripts index 7fe8579ce..16276e080 160000 --- a/lanforge/lanforge-scripts +++ b/lanforge/lanforge-scripts @@ -1 +1 @@ -Subproject commit 7fe8579cebaa4a7559049e4cbaa30f805098555e +Subproject commit 16276e080cce82cac7d6d27737893f872d4c7a96 diff --git a/libs/controller/controller_1x/__init__.py b/libs/controller/controller_1x/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libs/controller/controller.py b/libs/controller/controller_1x/controller.py similarity index 100% rename from libs/controller/controller.py rename to libs/controller/controller_1x/controller.py diff --git a/libs/controller/controller_2x/__init__.py b/libs/controller/controller_2x/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libs/controller/ucentral_ctlr.py b/libs/controller/controller_2x/controller.py similarity index 95% rename from libs/controller/ucentral_ctlr.py rename to libs/controller/controller_2x/controller.py index 328b02956..fe912b089 100644 --- a/libs/controller/ucentral_ctlr.py +++ b/libs/controller/controller_2x/controller.py @@ -104,7 +104,7 @@ class ConfigureController: return True -class UController(ConfigureController): +class Controller(ConfigureController): def __init__(self, controller_data=None): super().__init__(controller_data) @@ -282,6 +282,9 @@ class UProfileUtility: def add_ssid(self, ssid_data, radius=False, radius_auth_data={}, radius_accounting_data={}): print("ssid data : ", ssid_data) ssid_info = {'name': ssid_data["ssid_name"], "bss-mode": "ap", "wifi-bands": [], "services": ["wifi-frames"]} + for options in ssid_data: + if options == "rate-limit": + ssid_info[options] = ssid_data[options] for i in ssid_data["appliedRadios"]: ssid_info["wifi-bands"].append(i) ssid_info['encryption'] = {} @@ -368,13 +371,13 @@ if __name__ == '__main__': 'username': "tip@ucentral.com", 'password': 'openwifi', } - obj = UController(controller_data=controller) - profile = UProfileUtility(sdk_client=obj) - profile.set_mode(mode="BRIDGE") - profile.set_radio_config() - ssid = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security": "psk", "security_key": "something", - "vlan": 100} - profile.add_ssid(ssid_data=ssid) - profile.push_config(serial_number="903cb39d6918") + obj = Controller(controller_data=controller) + # profile = UProfileUtility(sdk_client=obj) + # profile.set_mode(mode="BRIDGE") + # profile.set_radio_config() + # ssid = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security": "psk", "security_key": "something", + # "vlan": 100, "rate-limit": {"ingress-rate": 50, "egress-rate": 50}} + # profile.add_ssid(ssid_data=ssid) + # profile.push_config(serial_number="903cb39d6918") # print(obj.get_devices()) obj.logout() diff --git a/libs/lanforge/lf_tests.py b/libs/lanforge/lf_tests.py index 2867b3e41..30ca277f8 100644 --- a/libs/lanforge/lf_tests.py +++ b/libs/lanforge/lf_tests.py @@ -213,7 +213,8 @@ class RunTest: self.eap_connect.cleanup(station_name) return self.eap_connect.passes() - def wifi_capacity(self, mode="BRIDGE", vlan_id=100, instance_name="wct_instance", download_rate="1Gbps", + 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", upload_rate="1Gbps", protocol="TCP-IPv4", duration="60000"): instance_name = ''.join(random.choices(string.ascii_uppercase + string.digits, k=S)) if mode == "BRIDGE": @@ -231,7 +232,7 @@ class RunTest: instance_name=instance_name, config_name="wifi_config", upstream="1.1." + upstream_port, - batch_size="1,5,10,20,40,64,128", + batch_size=batch_size, loop_iter="1", protocol=protocol, duration=duration, @@ -254,9 +255,9 @@ class RunTest: wificapacity_obj.setup() wificapacity_obj.run() report_name = wificapacity_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] - influx = CSVtoInflux(influxdb=self.influxdb, _influx_tag=self.influx_params["influx_tag"], - target_csv=self.local_report_path + report_name + "/kpi.csv") - influx.post_to_influx() + # influx = CSVtoInflux(influxdb=self.influxdb, _influx_tag=self.influx_params["influx_tag"], + # target_csv=self.local_report_path + report_name + "/kpi.csv") + # influx.post_to_influx() return wificapacity_obj def Client_Connect(self, ssid="[BLANK]", passkey="[BLANK]", security="wpa2", mode="BRIDGE", band="twog", diff --git a/tests/conftest.py b/tests/conftest.py index 78ee8aec8..17336c8e3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -40,9 +40,8 @@ from LANforge.LFUtils import * if 'py-json' not in sys.path: sys.path.append('../py-scripts') from apnos.apnos import APNOS -from controller.controller import Controller -from controller.ucentral_ctlr import UController -from controller.controller import FirmwareUtility +from controller.controller_1x.controller import Controller +from controller.controller_1x.controller import FirmwareUtility import pytest from cv_test_manager import cv_test from configuration import CONFIGURATION @@ -59,6 +58,14 @@ from typing import Any, Callable, Optional from _pytest.fixtures import SubRequest from pytest import fixture +import fixtures_1x +from fixtures_1x import Fixtures_1x +import fixtures_2x +from fixtures_2x import Fixtures_2x + +ALLURE_ENVIRONMENT_PROPERTIES_FILE = 'environment.properties' +ALLUREDIR_OPTION = '--alluredir' + def pytest_addoption(parser): """pytest addoption function: contains ini objects and options""" @@ -201,14 +208,12 @@ def exit_on_fail(request): @pytest.fixture(scope="session") def radius_info(): """yields the radius server information from lab info file""" - allure.attach(body=str(RADIUS_SERVER_DATA), name="Radius server Info: ") yield RADIUS_SERVER_DATA @pytest.fixture(scope="session") def radius_accounting_info(): """yields the radius accounting information from lab info file""" - allure.attach(body=str(RADIUS_ACCOUNTING_DATA), name="Radius server Info: ") yield RADIUS_ACCOUNTING_DATA @@ -255,40 +260,19 @@ def instantiate_access_point(testbed, get_apnos, get_configuration): # Controller Fixture @pytest.fixture(scope="session") -def setup_controller(request, get_configuration, test_access_point, add_env_properties): +def setup_controller(request, get_configuration, test_access_point, add_env_properties, fixtures_ver): """sets up the controller connection and yields the sdk_client object""" - try: - if request.config.getoption("1.x"): - sdk_client = Controller(controller_data=get_configuration["controller"]) - - def teardown_controller(): - print("\nTest session Completed") - sdk_client.disconnect_Controller() - - request.addfinalizer(teardown_controller) - - else: - sdk_client = UController(controller_data=get_configuration["controller"]) - - - def teardown_ucontroller(): - print("\nTest session Completed") - sdk_client.logout() - try: - sdk_client.logout() - except Exception as e: - print(e) - - request.addfinalizer(teardown_ucontroller) - - except Exception as e: - print(e) - allure.attach(body=str(e), name="Controller Instantiation Failed: ") - sdk_client = False - pytest.exit("unable to communicate to Controller" + str(e)) + sdk_client = fixtures_ver.controller_obj + request.addfinalizer(fixtures_ver.disconnect) yield sdk_client +@pytest.fixture(scope="session") +def setup_firmware(fixtures_ver): + """ Fixture to Setup Firmware with the selected sdk """ + yield True + + @pytest.fixture(scope="session") def instantiate_firmware(request, setup_controller, get_configuration): """sets up firmware utility and yields the object for firmware upgrade""" @@ -609,12 +593,6 @@ def lf_tools(get_configuration, testbed): yield obj -# @pytest.fixture(scope="class") -# def create_vlan(request, testbed, get_configuration, lf_tools): -# """Create a vlan on lanforge""" -# - - @pytest.fixture(scope="session") def setup_influx(request, testbed, get_configuration): """ Setup Influx Parameters: Used in CV Automation""" @@ -634,10 +612,6 @@ def pytest_sessionstart(session): session.results = dict() -ALLURE_ENVIRONMENT_PROPERTIES_FILE = 'environment.properties' -ALLUREDIR_OPTION = '--alluredir' - - @fixture(scope='session', autouse=True) def add_allure_environment_property(request: SubRequest) -> Optional[Callable]: environment_properties = dict() @@ -660,19 +634,18 @@ def add_allure_environment_property(request: SubRequest) -> Optional[Callable]: @fixture(scope='session') -def get_uc_ap_version(get_apnos, get_configuration): - if request.config.getoption("2.x"): - version_list = [] - for access_point_info in get_configuration['access_point']: - ap_ssh = get_apnos(access_point_info) - version = ap_ssh.get_ap_version_ucentral() - version_list.append(version) - yield version_list +def add_env_properties(get_configuration, get_apnos, fixtures_ver, add_allure_environment_property: Callable) -> None: + add_allure_environment_property('Access-Point-Model', get_configuration["access_point"][0]["model"]) + add_allure_environment_property('Access-Point-Firmware-Version', + fixtures_ver.get_ap_version(get_apnos, get_configuration)[0].split("\n")[1]) + add_allure_environment_property('Cloud-Controller-SDK-URL', get_configuration["controller"]["url"]) + add_allure_environment_property('AP-Serial-Number', get_configuration["access_point"][0]["serial"]) -@fixture(scope='session') -def add_env_properties(get_configuration, get_uc_ap_version, add_allure_environment_property: Callable) -> None: - if request.config.getoption("2.x"): - add_allure_environment_property('Access-Point-Model', get_configuration["access_point"][0]["model"]) - add_allure_environment_property('Access-Point-Firmware-Version', get_uc_ap_version[0].split("\n")[1]) - add_allure_environment_property('Cloud-Controller-SDK-URL', get_configuration["controller"]["url"]) +@pytest.fixture(scope="session") +def fixtures_ver(request, get_configuration): + if request.config.getoption("1.x") is False: + obj = Fixtures_2x(configuration=get_configuration) + if request.config.getoption("1.x"): + obj = Fixtures_1x(configuration=get_configuration) + yield obj diff --git a/tests/e2e/advanced/conftest.py b/tests/e2e/advanced/conftest.py index da719e185..cc0d86943 100644 --- a/tests/e2e/advanced/conftest.py +++ b/tests/e2e/advanced/conftest.py @@ -9,7 +9,7 @@ sys.path.append( if "libs" not in sys.path: sys.path.append(f'../libs') -from controller.controller import ProfileUtility +from controller.controller_1x.controller import ProfileUtility import time from lanforge.lf_tests import RunTest from lanforge.lf_tools import ChamberView diff --git a/tests/e2e/basic/conftest.py b/tests/e2e/basic/conftest.py index e0aa4197b..b1348c876 100644 --- a/tests/e2e/basic/conftest.py +++ b/tests/e2e/basic/conftest.py @@ -10,8 +10,8 @@ sys.path.append( if "libs" not in sys.path: sys.path.append(f'../libs') -from controller.controller import ProfileUtility -from controller.ucentral_ctlr import UProfileUtility +from controller.controller_1x.controller import ProfileUtility +from controller.controller_2x.controller import UProfileUtility import time from lanforge.lf_tests import RunTest from lanforge.lf_tools import ChamberView @@ -47,18 +47,15 @@ def create_lanforge_chamberview_dut(lf_tools): return dut_name -@pytest.fixture(scope="session") -def setup_vlan(): - vlan_id = [100] - allure.attach(body=str(vlan_id), name="VLAN Created: ") - yield vlan_id[0] - @pytest.fixture(scope="class") -def setup_profiles(request, setup_controller, testbed, setup_vlan, get_equipment_id, +def setup_profiles(request, setup_controller, testbed, get_equipment_id, fixtures_ver, instantiate_profile, get_markers, create_lanforge_chamberview_dut, lf_tools, get_security_flags, get_configuration, radius_info, get_apnos, radius_accounting_info): lf_tools.reset_scenario() + param = dict(request.param) + + # VLAN Setup if request.param["mode"] == "VLAN": vlan_list = list() @@ -78,833 +75,19 @@ def setup_profiles(request, setup_controller, testbed, setup_vlan, get_equipment vlan_list.pop(i) if request.param["mode"] == "VLAN": lf_tools.add_vlan(vlan_ids=vlan_list) - if request.config.getoption("1.x"): - instantiate_profile = instantiate_profile(sdk_client=setup_controller) - vlan_id, mode = 0, 0 - instantiate_profile.cleanup_objects() - parameter = dict(request.param) - print(parameter) - test_cases = {} - profile_data = {} - if parameter['mode'] not in ["BRIDGE", "NAT", "VLAN"]: - print("Invalid Mode: ", parameter['mode']) - allure.attach(body=parameter['mode'], name="Invalid Mode: ") - yield test_cases - if parameter['mode'] == "NAT": - mode = "NAT" - vlan_id = 1 - if parameter['mode'] == "BRIDGE": - mode = "BRIDGE" - vlan_id = 1 - if parameter['mode'] == "VLAN": - mode = "BRIDGE" - vlan_id = setup_vlan - - instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Equipment-AP-" + parameter['mode']) - - profile_data["equipment_ap"] = {"profile_name": testbed + "-Equipment-AP-" + parameter['mode']} - profile_data["ssid"] = {} - for i in parameter["ssid_modes"]: - profile_data["ssid"][i] = [] - for j in range(len(parameter["ssid_modes"][i])): - profile_name = testbed + "-SSID-" + i + "-" + str(j) + "-" + parameter['mode'] - data = parameter["ssid_modes"][i][j] - data["profile_name"] = profile_name - if "mode" not in dict(data).keys(): - data["mode"] = mode - if "vlan" not in dict(data).keys(): - data["vlan"] = vlan_id - instantiate_profile.delete_profile_by_name(profile_name=profile_name) - profile_data["ssid"][i].append(data) - # print(profile_name) - # print(profile_data) - - instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode) - time.sleep(10) - """ - Setting up rf profile - """ - rf_profile_data = { - "name": "RF-Profile-" + testbed + "-" + parameter['mode'] + "-" + - get_configuration['access_point'][0]['mode'] - } - - for i in parameter["rf"]: - rf_profile_data[i] = parameter['rf'][i] - # print(rf_profile_data) - - try: - instantiate_profile.delete_profile_by_name(profile_name=rf_profile_data['name']) - instantiate_profile.set_rf_profile(profile_data=rf_profile_data, - mode=get_configuration['access_point'][0]['mode']) - allure.attach(body=str(rf_profile_data), - name="RF Profile Created : " + get_configuration['access_point'][0]['mode']) - except Exception as e: - print(e) - allure.attach(body=str(e), name="Exception ") - - # Radius Profile Creation - if parameter["radius"]: - radius_info = radius_info - radius_info["name"] = testbed + "-Automation-Radius-Profile-" + mode - instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode) - try: - instantiate_profile.create_radius_profile(radius_info=radius_info) - allure.attach(body=str(radius_info), - name="Radius Profile Created") - test_cases['radius_profile'] = True - except Exception as e: - print(e) - test_cases['radius_profile'] = False - - # SSID Profile Creation - lf_dut_data = [] - for mode in profile_data['ssid']: - if mode == "open": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_open_ssid_profile(profile_data=j) - test_cases["open_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["open_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa_ssid_profile(profile_data=j) - test_cases["wpa_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa2_personal": - for j in profile_data["ssid"][mode]: - # print(j) - - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa2_personal_ssid_profile(profile_data=j) - test_cases["wpa2_personal_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa2_personal_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa_wpa2_personal_mixed": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - - creates_profile = instantiate_profile.create_wpa_wpa2_personal_mixed_ssid_profile( - profile_data=j) - test_cases["wpa_wpa2_personal_mixed_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa_wpa2_personal_mixed_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa3_personal": - for j in profile_data["ssid"][mode]: - print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - - creates_profile = instantiate_profile.create_wpa3_personal_ssid_profile(profile_data=j) - test_cases["wpa3_personal_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_personal_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - if mode == "wpa3_personal_mixed": - for j in profile_data["ssid"][mode]: - print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa3_personal_mixed_ssid_profile( - profile_data=j) - test_cases["wpa3_personal_mixed_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_personal_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa_enterprise": - for j in profile_data["ssid"][mode]: - - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa_enterprise_ssid_profile(profile_data=j) - test_cases["wpa_enterprise_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - - except Exception as e: - print(e) - test_cases["wpa_enterprise_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - if mode == "wpa2_enterprise": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa2_enterprise_ssid_profile(profile_data=j) - test_cases["wpa2_enterprise_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa2_enterprise_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - if mode == "wpa3_enterprise": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa3_enterprise_ssid_profile(profile_data=j) - test_cases["wpa3_enterprise_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_enterprise_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa_wpa2_enterprise_mixed": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa_wpa2_enterprise_mixed_ssid_profile( - profile_data=j) - test_cases["wpa_wpa2_enterprise_mixed_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa_wpa2_enterprise_mixed_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - if mode == "wpa3_enterprise_mixed": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wpa3_enterprise_mixed_ssid_profile( - profile_data=j) - test_cases["wpa3_enterprise_mixed_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_enterprise_mixed_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wep": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - for i in range(len(j["appliedRadios"])): - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") - j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") - creates_profile = instantiate_profile.create_wep_ssid_profile(profile_data=j) - test_cases["wpa3_enterprise_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_enterprise_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - # Equipment AP Profile Creation - try: - instantiate_profile.set_ap_profile(profile_data=profile_data['equipment_ap']) - test_cases["equipment_ap"] = True - allure.attach(body=str(profile_data['equipment_ap']), - name="Equipment AP Profile Created") - except Exception as e: - print(e) - test_cases["equipment_ap"] = False - allure.attach(body=str(e), - name="Equipment AP Profile Creation Failed") - - # Push the Equipment AP Profile to AP - try: - for i in get_equipment_id: - instantiate_profile.push_profile_old_method(equipment_id=i) - except Exception as e: - print(e) - print("failed to create AP Profile") - - ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") - # ssid_names = [] - # for i in instantiate_profile.profile_creation_ids["ssid"]: - # ssid_names.append(instantiate_profile.get_ssid_name_by_profile_id(profile_id=i)) - # ssid_names.sort() - ssid_names = [] - for i in lf_dut_data: - ssid_names.append(i["ssid_name"]) - ssid_names.sort() - # This loop will check the VIF Config with cloud profile - vif_config = [] - test_cases['vifc'] = False - for i in range(0, 18): - vif_config = list(ap_ssh.get_vif_config_ssids()) - vif_config.sort() - print(vif_config) - print(ssid_names) - if ssid_names == vif_config: - test_cases['vifc'] = True - break - time.sleep(10) - allure.attach( - body=str("VIF Config: " + str(vif_config) + "\n" + "SSID Pushed from Controller: " + str(ssid_names)), - name="SSID Profiles in VIF Config and Controller: ") - ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") - - # This loop will check the VIF Config with VIF State - test_cases['vifs'] = False - for i in range(0, 18): - vif_state = list(ap_ssh.get_vif_state_ssids()) - vif_state.sort() - vif_config = list(ap_ssh.get_vif_config_ssids()) - vif_config.sort() - print(vif_config) - print(vif_state) - if vif_state == vif_config: - test_cases['vifs'] = True - break - time.sleep(10) - allure.attach(body=str("VIF Config: " + str(vif_config) + "\n" + "VIF State: " + str(vif_state)), - name="SSID Profiles in VIF Config and VIF State: ") - - ap_logs = ap_ssh.logread() - allure.attach(body=ap_logs, name="AP LOgs: ") - ssid_info = ap_ssh.get_ssid_info() - ssid_data = [] - print(ssid_info) - band_mapping = ap_ssh.get_bssid_band_mapping() - print(band_mapping) - idx_mapping = {} - for i in range(0, len(ssid_info)): - if ssid_info[i][1] == "OPEN": - ssid_info[i].append("") - if ssid_info[i][1] == "OPEN": - ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=OPEN" + - " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] - idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], - ssid_info[i][0]] - - if ssid_info[i][1] == "WPA": - ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA" + - " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] - idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], - ssid_info[i][0]] - if ssid_info[i][1] == "WPA2": - ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA2" + - " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] - idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], - ssid_info[i][0]] - if ssid_info[i][1] == "WPA3_PERSONAL": - ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA3" + - " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] - idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], - ssid_info[i][0]] - - if ssid_info[i][1] == "WPA | WPA2": - ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA|WPA2" + - " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] - idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], - ssid_info[i][0]] - - if ssid_info[i][1] == "EAP-TTLS": - ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=EAP-TTLS" + - " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] - idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], - ssid_info[i][0]] - ssid_data.append(ssid) - lf_tools.dut_idx_mapping = idx_mapping - # Add bssid password and security from iwinfo data - # Format SSID Data in the below format - # ssid_data = [ - # ['ssid_idx=0 ssid=Default-SSID-2g security=WPA|WEP| password=12345678 bssid=90:3c:b3:94:48:58'], - # ['ssid_idx=1 ssid=Default-SSID-5gl password=12345678 bssid=90:3c:b3:94:48:59'] - # ] - allure.attach(name="SSID DATA IN LF DUT", body=str(ssid_data)) - lf_tools.update_ssid(ssid_data=ssid_data) - - def teardown_session(): - print("\nRemoving Profiles") - instantiate_profile.delete_profile_by_name(profile_name=profile_data['equipment_ap']['profile_name']) - instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["ssid"]) - instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["radius"]) - instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["rf"]) - allure.attach(body=str(profile_data['equipment_ap']['profile_name'] + "\n"), - name="Tear Down in Profiles ") - time.sleep(20) - - request.addfinalizer(teardown_session) - yield test_cases - else: - instantiate_profile_obj = instantiate_profile(sdk_client=setup_controller) - print(1, instantiate_profile_obj.sdk_client) - vlan_id, mode = 0, 0 - parameter = dict(request.param) - print(parameter) - test_cases = {} - profile_data = {} - if parameter['mode'] not in ["BRIDGE", "NAT", "VLAN"]: - print("Invalid Mode: ", parameter['mode']) - yield test_cases - instantiate_profile_obj.set_radio_config() - if parameter['mode'] == "NAT": - mode = "NAT" - instantiate_profile_obj.set_mode(mode=mode) - vlan_id = 1 - if parameter['mode'] == "BRIDGE": - mode = "BRIDGE" - instantiate_profile_obj.set_mode(mode=mode) - vlan_id = 1 - if parameter['mode'] == "VLAN": - mode = "VLAN" - instantiate_profile_obj.set_mode(mode=mode) - vlan_id = setup_vlan - profile_data["ssid"] = {} - for i in parameter["ssid_modes"]: - profile_data["ssid"][i] = [] - for j in range(len(parameter["ssid_modes"][i])): - data = parameter["ssid_modes"][i][j] - profile_data["ssid"][i].append(data) - lf_dut_data = [] - for mode in profile_data['ssid']: - if mode == "open": - for j in profile_data["ssid"][mode]: - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - j["appliedRadios"] = list(set(j["appliedRadios"])) - j['security'] = 'none' - creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) - test_cases["wpa_2g"] = True - except Exception as e: - print(e) - test_cases["wpa_2g"] = False - if mode == "wpa": - for j in profile_data["ssid"][mode]: - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - j["appliedRadios"] = list(set(j["appliedRadios"])) - j['security'] = 'psk' - creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) - test_cases["wpa_2g"] = True - except Exception as e: - print(e) - test_cases["wpa_2g"] = False - if mode == "wpa2_personal": - for j in profile_data["ssid"][mode]: - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - j["appliedRadios"] = list(set(j["appliedRadios"])) - j['security'] = 'psk2' - creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) - test_cases["wpa_2g"] = True - except Exception as e: - print(e) - test_cases["wpa2_personal"] = False - if mode == "wpa_wpa2_personal_mixed": - for j in profile_data["ssid"][mode]: - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - j["appliedRadios"] = list(set(j["appliedRadios"])) - j['security'] = 'psk-mixed' - creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) - test_cases["wpa_2g"] = True - except Exception as e: - print(e) - test_cases["wpa2_personal"] = False - if mode == "wpa3_personal": - for j in profile_data["ssid"][mode]: - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - j["appliedRadios"] = list(set(j["appliedRadios"])) - j['security'] = 'sae' - creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) - test_cases["wpa_2g"] = True - except Exception as e: - print(e) - test_cases["wpa2_personal"] = False - if mode == "wpa3_personal_mixed": - for j in profile_data["ssid"][mode]: - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - j["appliedRadios"] = list(set(j["appliedRadios"])) - j['security'] = 'sae-mixed' - creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) - test_cases["wpa_2g"] = True - except Exception as e: - print(e) - test_cases["wpa2_personal"] = False - - # EAP SSID Modes - if mode == "wpa2_enterprise": - for j in profile_data["ssid"][mode]: - if mode in get_markers.keys() and get_markers[mode]: - try: - if j["appliedRadios"].__contains__("2G"): - lf_dut_data.append(j) - if j["appliedRadios"].__contains__("5G"): - lf_dut_data.append(j) - j["appliedRadios"] = list(set(j["appliedRadios"])) - j['security'] = 'wpa2' - RADIUS_SERVER_DATA = radius_info - RADIUS_ACCOUNTING_DATA = radius_accounting_info - creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j, radius=True, - radius_auth_data=RADIUS_SERVER_DATA, - radius_accounting_data=RADIUS_ACCOUNTING_DATA) - test_cases["wpa_2g"] = True - except Exception as e: - print(e) - test_cases["wpa2_personal"] = False - ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/", sdk="2.x") - connected, latest, active = ap_ssh.get_ucentral_status() - if connected == False: - pytest.exit("AP is disconnected from UC Gateway") - instantiate_profile_obj.push_config(serial_number=get_equipment_id[0]) - config = json.loads(str(instantiate_profile_obj.base_profile_config).replace(" ", "").replace("'", '"')) - config["uuid"] = 0 - ap_config_latest = ap_ssh.get_uc_latest_config() - try: - ap_config_latest["uuid"] = 0 - except Exception as e: - print(e) - pass - x = 1 - while ap_config_latest != config: - time.sleep(5) - x += 1 - ap_config_latest = ap_ssh.get_uc_latest_config() - ap_config_latest["uuid"] = 0 - print("latest config: ", ap_config_latest) - print("config: ", config) - if x == 19: - break - if x < 19: - print("Config properly applied into AP", config) - ap_config_latest = ap_ssh.get_uc_latest_config() - ap_config_latest["uuid"] = 0 - - ap_config_active = ap_ssh.get_uc_active_config() - ap_config_active["uuid"] = 0 - x = 1 - while ap_config_active != ap_config_latest: - time.sleep(5) - x += 1 - ap_config_latest = ap_ssh.get_uc_latest_config() - ap_config_latest["uuid"] = 0 - - ap_config_active = ap_ssh.get_uc_active_config() - print("latest config: ", ap_config_latest) - print("Active config: ", ap_config_active) - ap_config_active["uuid"] = 0 - if x == 19: - break - allure_body = "AP config status: \n" + \ - "Active Config: " + str(ap_ssh.get_uc_active_config()) + "\n" \ - "Latest Config: ", str( - ap_ssh.get_uc_latest_config()) + "\n" \ - "Applied Config: ", str(config) - if x < 19: - print("AP is Broadcasting Applied Config") - allure.attach(name="AP is Broadcasting Applied Config", body="") - allure.attach(name="Config Info", body="Applied Config: " + str(ap_config_active)) - allure.attach(name="Config Info", body="AP is Broadc3asting Applied Config: " + str(ap_ssh.get_uc_active_config())) - allure.attach(name="Config Info", body="AP is Broadcasting Applied Config: " + str(allure_body)) - - else: - print("AP is Not Broadcasting Applied Config") - allure.attach(name="AP is Not Broadcasting Applied Config", body="") - allure.attach(name="Config Info", body="Applied Config: " + str(ap_config_active)) - allure.attach(name="Config Info", - body="AP is Broadc3asting Applied Config: " + str(ap_ssh.get_uc_active_config())) - allure.attach(name="Config Info", body="AP is Broadcasting Applied Config: " + str(allure_body)) - ap_logs = ap_ssh.logread() - allure.attach(body=ap_logs, name="AP LOgs: ") - # ap_wifi_data = ap_ssh.get_interface_details() - # idx_mapping = {} - # ssid_data = [] - # ap_interfaces = list(ap_wifi_data.keys()) - # for interface in range(len(ap_interfaces)): - # if ap_wifi_data[ap_interfaces[interface]][1] == "none": - # ssid = ["ssid_idx=" + str(interface) + - # " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + - # " security=OPEN" + - # " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], - # ap_wifi_data[ap_interfaces[interface]][2], - # ap_wifi_data[ap_interfaces[interface]][1], - # ap_wifi_data[ap_interfaces[interface]][3][1], - # ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # # pass - # if ap_wifi_data[ap_interfaces[interface]][1] == "psk": - # ssid = ["ssid_idx=" + str(interface) + - # " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + - # " security=WPA" + - # " password=" + ap_wifi_data[ap_interfaces[interface]][2] + - # " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], - # ap_wifi_data[ap_interfaces[interface]][2], - # ap_wifi_data[ap_interfaces[interface]][1], - # ap_wifi_data[ap_interfaces[interface]][3][1], - # ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # # pass - # if ap_wifi_data[ap_interfaces[interface]][1] == "psk-mixed": - # ssid = ["ssid_idx=" + str(interface) + - # " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + - # " security=WPA|WPA2" + - # " password=" + ap_wifi_data[ap_interfaces[interface]][2] + - # " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], - # ap_wifi_data[ap_interfaces[interface]][2], - # ap_wifi_data[ap_interfaces[interface]][1], - # ap_wifi_data[ap_interfaces[interface]][3][1], - # ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # # pass - # if ap_wifi_data[ap_interfaces[interface]][1] == "psk2": - # ssid = ["ssid_idx=" + str(interface) + - # " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + - # " security=WPA2" + - # " password=" + ap_wifi_data[ap_interfaces[interface]][2] + - # " bssid=" + str(ap_wifi_data[ap_interfaces[interface]][3][0]).lower() - # ] - # print(ssid) - # idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], - # ap_wifi_data[ap_interfaces[interface]][2], - # ap_wifi_data[ap_interfaces[interface]][1], - # ap_wifi_data[ap_interfaces[interface]][3][1], - # ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # # pass - # if ap_wifi_data[ap_interfaces[interface]][1] == "sae": - # ssid = ["ssid_idx=" + str(interface) + - # " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + - # " security=WPA3" + - # " password=" + ap_wifi_data[ap_interfaces[interface]][2] + - # " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], - # ap_wifi_data[ap_interfaces[interface]][2], - # ap_wifi_data[ap_interfaces[interface]][1], - # ap_wifi_data[ap_interfaces[interface]][3][1], - # ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # # pass - # if ap_wifi_data[ap_interfaces[interface]][1] == "sae-mixed": - # ssid = ["ssid_idx=" + str(interface) + - # " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + - # " security=WPA3" + - # " password=" + ap_wifi_data[ap_interfaces[interface]][2] + - # " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], - # ap_wifi_data[ap_interfaces[interface]][2], - # ap_wifi_data[ap_interfaces[interface]][1], - # ap_wifi_data[ap_interfaces[interface]][3][1], - # ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # # pass - # if ap_wifi_data[ap_interfaces[interface]][1] == "wpa2": - # ssid = ["ssid_idx=" + str(interface) + - # " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + - # " security=EAP-TTLS" + - # " bssid=" + str(ap_wifi_data[ap_interfaces[interface]][3][0]).lower() - # ] - # - # idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], - # ap_wifi_data[ap_interfaces[interface]][2], - # ap_wifi_data[ap_interfaces[interface]][1], - # ap_wifi_data[ap_interfaces[interface]][3][1], - # ap_wifi_data[ap_interfaces[interface]][3][0] - # ] - # # pass - # ssid_data.append(ssid) - # lf_tools.ssid_list.append(ap_wifi_data[ap_interfaces[interface]][0]) - # lf_tools.dut_idx_mapping = idx_mapping - # print(ssid_data) - # lf_tools.reset_scenario() - # lf_tools.update_ssid(ssid_data=ssid_data) - yield test_cases + # call this, if 1.x + return_var = fixtures_ver.setup_profiles(request, param, setup_controller, testbed, get_equipment_id, + instantiate_profile, + get_markers, create_lanforge_chamberview_dut, lf_tools, + get_security_flags, get_configuration, radius_info, get_apnos, + radius_accounting_info) + yield return_var @pytest.fixture(scope="session") def lf_test(get_configuration, setup_influx): - # print(get_configuration) obj = RunTest(lanforge_data=get_configuration['traffic_generator']['details'], influx_params=setup_influx) - # pytest.exit("") yield obj diff --git a/tests/e2e/basic/validation_of_operating_modes/bridge_mode/client_connectivity/test_general_security_modes.py b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/client_connectivity/test_general_security_modes.py index 9c8e0496d..0166308a5 100644 --- a/tests/e2e/basic/validation_of_operating_modes/bridge_mode/client_connectivity/test_general_security_modes.py +++ b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/client_connectivity/test_general_security_modes.py @@ -9,7 +9,7 @@ import allure import pytest pytestmark = [pytest.mark.client_connectivity, pytest.mark.bridge, pytest.mark.general, pytest.mark.ucentral, - pytest.mark.sanity] # pytest.mark.usefixtures("setup_test_run")] + pytest.mark.sanity, pytest.mark.uc_sanity] # pytest.mark.usefixtures("setup_test_run")] setup_params_general = { "mode": "BRIDGE", @@ -29,7 +29,6 @@ setup_params_general = { } -@pytest.mark.uc_sanity @pytest.mark.suiteA @pytest.mark.sudo @allure.feature("BRIDGE MODE CLIENT CONNECTIVITY") diff --git a/tests/e2e/basic/validation_of_operating_modes/bridge_mode/dual_stack/__init__.py b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/dual_stack/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/__init__.py b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/test_multipsk_basic.py b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/test_multipsk_basic.py new file mode 100644 index 000000000..020b3f4e7 --- /dev/null +++ b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/test_multipsk_basic.py @@ -0,0 +1,28 @@ +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2_2g_br", + "appliedRadios": ["2G"], + "security_key": "something", + "multi-psk": [ + { + "key": "aaaaaaaa", + "vlan-id": 100 + }, + { + "key": "bbbbbbbb" + } + ], + }, + {"ssid_name": "ssid_wpa2_5g_br", + "appliedRadios": ["5G"], + "security_key": "something", + "rate-limit": { + "ingress-rate": 100, + "egress-rate": 100 + } + }]}, + "rf": {}, + "radius": False +} diff --git a/tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting/__init__.py b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting/test_rate_limiting.py b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting/test_rate_limiting.py new file mode 100644 index 000000000..b6e2d313d --- /dev/null +++ b/tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting/test_rate_limiting.py @@ -0,0 +1,73 @@ +""" +Rate LImiting Bridge Mode Scenario +""" + +import allure +import pytest + +pytestmark = [pytest.mark.rate_limiting, pytest.mark.bridge, pytest.mark.general, pytest.mark.ucentral, + pytest.mark.regression] + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2_2g_br", + "appliedRadios": ["2G"], + "security_key": "something", + "rate-limit": { + "ingress-rate": 100, + "egress-rate": 100 + } + }, + {"ssid_name": "ssid_wpa2_5g_br", + "appliedRadios": ["5G"], + "security_key": "something", + "rate-limit": { + "ingress-rate": 100, + "egress-rate": 100 + } + }]}, + "rf": {}, + "radius": False +} + + +@allure.feature("Bridge MODE Rate Limiting") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +class TestRateLimitingBridge(object): + + @pytest.mark.wpa2_personal + @pytest.mark.twog + @allure.story('Rate Limiting Open SSID 2.4 GHZ Band') + def test_wpa2_personal_ssid_2g(self, lf_test, get_vif_state, lf_tools): + """ + Test Rate Limiting Scenario + """ + # run wifi capacity test here + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] + ssid_name = profile_data["ssid_name"] + mode = "BRIDGE" + vlan = 1 + allure.attach(name="ssid-rates", body=str(profile_data["rate-limit"])) + get_vif_state.append(ssid_name) + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + lf_tools.add_stations(band="2G", num_stations=5, dut=lf_tools.dut_name, ssid_name=ssid_name) + lf_tools.Chamber_View() + wct_obj = lf_test.wifi_capacity(instance_name="test_client_wpa2_BRIDGE_tcp_dl", mode=mode, vlan_id=vlan, + download_rate="1Gbps", batch_size="1,5", + upload_rate="1Gbps", protocol="TCP-IPv4", duration="60000") + + report_name = wct_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + + lf_tools.attach_report_graphs(report_name=report_name) + print("Test Completed... Cleaning up Stations") + assert True \ No newline at end of file diff --git a/tests/e2e/basic/validation_of_operating_modes/nat_mode/client_connectivity/test_general_security_modes.py b/tests/e2e/basic/validation_of_operating_modes/nat_mode/client_connectivity/test_general_security_modes.py index e662583bb..98260c454 100644 --- a/tests/e2e/basic/validation_of_operating_modes/nat_mode/client_connectivity/test_general_security_modes.py +++ b/tests/e2e/basic/validation_of_operating_modes/nat_mode/client_connectivity/test_general_security_modes.py @@ -9,7 +9,7 @@ import allure import pytest pytestmark = [pytest.mark.client_connectivity, pytest.mark.nat, pytest.mark.general, pytest.mark.sanity, - pytest.mark.ucentral] + pytest.mark.uc_sanity, pytest.mark.ucentral] setup_params_general = { "mode": "NAT", @@ -29,7 +29,7 @@ setup_params_general = { } -@pytest.mark.uc_sanity + @pytest.mark.suiteA @pytest.mark.sanity_ucentral @allure.feature("NAT MODE CLIENT CONNECTIVITY") diff --git a/tests/e2e/basic/validation_of_operating_modes/nat_mode/dual_stack/__init__.py b/tests/e2e/basic/validation_of_operating_modes/nat_mode/dual_stack/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/__init__.py b/tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/nat_mode/rate_limiting/__init__.py b/tests/e2e/basic/validation_of_operating_modes/nat_mode/rate_limiting/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dual_stack/__init__.py b/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dual_stack/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/vlan_mode/multi_psk/__init__.py b/tests/e2e/basic/validation_of_operating_modes/vlan_mode/multi_psk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/validation_of_operating_modes/vlan_mode/rate_limiting/__init__.py b/tests/e2e/basic/validation_of_operating_modes/vlan_mode/rate_limiting/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/interOp/android/OpenRoamingPassPoint/conftest.py b/tests/e2e/interOp/android/OpenRoamingPassPoint/conftest.py index a1c92b1e1..9a3acae77 100644 --- a/tests/e2e/interOp/android/OpenRoamingPassPoint/conftest.py +++ b/tests/e2e/interOp/android/OpenRoamingPassPoint/conftest.py @@ -20,7 +20,7 @@ from configuration import PASSPOINT_PROVIDER_INFO from configuration import PASSPOINT_OPERATOR_INFO from configuration import PASSPOINT_VENUE_INFO from configuration import PASSPOINT_PROFILE_INFO -from controller.controller import ProfileUtility +from controller.controller_1x.controller import ProfileUtility @allure.feature("PASSPOINT CONNECTIVITY SETUP") @@ -37,7 +37,6 @@ def setup_profiles(request, setup_controller, testbed, setup_vlan, get_equipment profile_data = {} if parameter["mode"] not in ["BRIDGE", "NAT", "VLAN"]: print("Invalid Mode: ", parameter["mode"]) - allure.attach(body=parameter["mode"], name="Invalid Mode: ") yield test_cases if parameter["mode"] == "NAT": diff --git a/tests/e2e/interOp/conftest.py b/tests/e2e/interOp/conftest.py index ae5a00a2c..3c43d1989 100644 --- a/tests/e2e/interOp/conftest.py +++ b/tests/e2e/interOp/conftest.py @@ -20,9 +20,9 @@ if "libs" not in sys.path: sys.path.append(f'../libs') import allure from apnos.apnos import APNOS -from controller.controller import Controller -from controller.controller import ProfileUtility -from controller.controller import FirmwareUtility +from controller.controller_1x.controller import Controller +from controller.controller_1x.controller import ProfileUtility +from controller.controller_1x.controller import FirmwareUtility import pytest import logging from configuration import RADIUS_SERVER_DATA @@ -68,7 +68,7 @@ def get_APToMobileDevice_data(request): "UploadMbps": "//*[@id='knowledge-verticals-internetspeedtest__upload']/P[@class='spiqle']", #Android "platformName-android": request.config.getini("platformName-android"), - "appPackage-android": request.config.getini("appPackage-android") + "appPackage-android": request.config.getini("appPackage-android") } yield passPoint_data @@ -93,7 +93,7 @@ def get_ToggleAirplaneMode_data(request): "UploadMbps": "//*[@id='knowledge-verticals-internetspeedtest__upload']/P[@class='spiqle']", #Android "platformName-android": request.config.getini("platformName-android"), - "appPackage-android": request.config.getini("appPackage-android") + "appPackage-android": request.config.getini("appPackage-android") } yield passPoint_data @@ -104,7 +104,7 @@ def get_ToggleWifiMode_data(request): "bundleId-iOS-Settings": request.config.getini("bundleId-iOS-Settings"), #Android "platformName-android": request.config.getini("platformName-android"), - "appPackage-android": request.config.getini("appPackage-android") + "appPackage-android": request.config.getini("appPackage-android") } yield passPoint_data @@ -189,401 +189,45 @@ def get_current_profile_cloud(instantiate_profile): @pytest.fixture(scope="session") def setup_vlan(): vlan_id = [100] - allure.attach(body=str(vlan_id), name="VLAN Created: ") yield vlan_id[0] -@allure.feature("CLIENT CONNECTIVITY SETUP") @pytest.fixture(scope="class") -def setup_profiles(request, setup_controller, testbed, setup_vlan, get_equipment_id, - instantiate_profile, get_markers, - get_security_flags, get_configuration, radius_info, get_apnos): - instantiate_profile = instantiate_profile(sdk_client=setup_controller) - vlan_id, mode = 0, 0 - instantiate_profile.cleanup_objects() - parameter = dict(request.param) - print(parameter) - test_cases = {} - profile_data = {} - if parameter['mode'] not in ["BRIDGE", "NAT", "VLAN"]: - print("Invalid Mode: ", parameter['mode']) - allure.attach(body=parameter['mode'], name="Invalid Mode: ") - yield test_cases +def setup_profiles(request, setup_controller, testbed, setup_vlan, get_equipment_id, fixtures_ver, + instantiate_profile, get_markers, create_lanforge_chamberview_dut, lf_tools, + get_security_flags, get_configuration, radius_info, get_apnos, radius_accounting_info): + lf_tools.reset_scenario() + param = dict(request.param) - if parameter['mode'] == "NAT": - mode = "NAT" - vlan_id = 1 - if parameter['mode'] == "BRIDGE": - mode = "BRIDGE" - vlan_id = 1 - if parameter['mode'] == "VLAN": - mode = "BRIDGE" - vlan_id = setup_vlan + # VLAN Setup + if request.param["mode"] == "VLAN": - instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Equipment-AP-" + parameter['mode']) + vlan_list = list() + refactored_vlan_list = list() + ssid_modes = request.param["ssid_modes"].keys() + for mode in ssid_modes: + for ssid in range(len(request.param["ssid_modes"][mode])): + if "vlan" in request.param["ssid_modes"][mode][ssid]: + vlan_list.append(request.param["ssid_modes"][mode][ssid]["vlan"]) + else: + pass + if vlan_list: + [refactored_vlan_list.append(x) for x in vlan_list if x not in refactored_vlan_list] + vlan_list = refactored_vlan_list + for i in range(len(vlan_list)): + if vlan_list[i] > 4095 or vlan_list[i] < 1: + vlan_list.pop(i) + if request.param["mode"] == "VLAN": + lf_tools.add_vlan(vlan_ids=vlan_list) - profile_data["equipment_ap"] = {"profile_name": testbed + "-Equipment-AP-" + parameter['mode']} - profile_data["ssid"] = {} - for i in parameter["ssid_modes"]: - profile_data["ssid"][i] = [] - for j in range(len(parameter["ssid_modes"][i])): - profile_name = testbed + "-SSID-" + i + "-" + str(j) + "-" + parameter['mode'] - data = parameter["ssid_modes"][i][j] - data["profile_name"] = profile_name - if "mode" not in dict(data).keys(): - data["mode"] = mode - if "vlan" not in dict(data).keys(): - data["vlan"] = vlan_id - instantiate_profile.delete_profile_by_name(profile_name=profile_name) - profile_data["ssid"][i].append(data) - # print(profile_name) - # print(profile_data) + # call this, if 1.x + return_1x = fixtures_ver.setup_profiles(request, param, setup_controller, testbed, setup_vlan, get_equipment_id, + instantiate_profile, + get_markers, create_lanforge_chamberview_dut, lf_tools, + get_security_flags, get_configuration, radius_info, get_apnos, + radius_accounting_info) + yield return_1x - instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode) - time.sleep(10) - """ - Setting up rf profile - """ - rf_profile_data = { - "name": "RF-Profile-" + testbed + "-" + parameter['mode'] + "-" + - get_configuration['access_point'][0]['mode'] - } - - for i in parameter["rf"]: - rf_profile_data[i] = parameter['rf'][i] - # print(rf_profile_data) - - try: - instantiate_profile.delete_profile_by_name(profile_name=rf_profile_data['name']) - instantiate_profile.set_rf_profile(profile_data=rf_profile_data, - mode=get_configuration['access_point'][0]['mode']) - allure.attach(body=str(rf_profile_data), - name="RF Profile Created : " + get_configuration['access_point'][0]['mode']) - except Exception as e: - print(e) - allure.attach(body=str(e), name="Exception ") - - # Radius Profile Creation - if parameter["radius"]: - radius_info = radius_info - radius_info["name"] = testbed + "-Automation-Radius-Profile-" + testbed - instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + testbed) - try: - # pass - instantiate_profile.create_radius_profile(radius_info=radius_info) - allure.attach(body=str(radius_info), - name="Radius Profile Created") - test_cases['radius_profile'] = True - except Exception as e: - print(e) - test_cases['radius_profile'] = False - - # SSID Profile Creation - print(get_markers) - for mode in profile_data['ssid']: - if mode == "open": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_open_ssid_profile(profile_data=j) - test_cases["open_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["open_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_open_ssid_profile(profile_data=j) - test_cases["open_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["open_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa_ssid_profile(profile_data=j) - test_cases["wpa_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa_ssid_profile(profile_data=j) - test_cases["wpa_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - if mode == "wpa2_personal": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa2_personal_ssid_profile(profile_data=j) - test_cases["wpa2_personal_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa2_personal_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa2_personal_ssid_profile(profile_data=j) - test_cases["wpa2_personal_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa2_personal_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa_wpa2_personal_mixed": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa_wpa2_personal_mixed_ssid_profile(profile_data=j) - test_cases["wpa_wpa2_personal_mixed_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa_wpa2_personal_mixed_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa_wpa2_personal_mixed_ssid_profile(profile_data=j) - test_cases["wpa_wpa2_personal_mixed_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa_wpa2_personal_mixed_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - if mode == "wpa3_personal": - for j in profile_data["ssid"][mode]: - print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa3_personal_ssid_profile(profile_data=j) - test_cases["wpa3_personal_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_personal_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa3_personal_ssid_profile(profile_data=j) - test_cases["wpa3_personal_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_personal_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - if mode == "wpa3_personal_mixed": - for j in profile_data["ssid"][mode]: - print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa3_personal_mixed_ssid_profile( - profile_data=j) - test_cases["wpa3_personal_mixed_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_personal_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa3_personal_mixed_ssid_profile( - profile_data=j) - test_cases["wpa3_personal_mixed_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_personal_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa2_enterprise": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa2_enterprise_ssid_profile(profile_data=j) - test_cases["wpa2_enterprise_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa2_enterprise_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa2_enterprise_ssid_profile(profile_data=j) - test_cases["wpa2_enterprise_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa2_enterprise_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - if mode == "wpa3_enterprise": - for j in profile_data["ssid"][mode]: - # print(j) - if mode in get_markers.keys() and get_markers[mode]: - try: - if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa3_enterprise_ssid_profile(profile_data=j) - test_cases["wpa3_enterprise_2g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_enterprise_2g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - try: - if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( - j["appliedRadios"]): - creates_profile = instantiate_profile.create_wpa3_enterprise_ssid_profile(profile_data=j) - test_cases["wpa3_enterprise_5g"] = True - allure.attach(body=str(creates_profile), - name="SSID Profile Created") - except Exception as e: - print(e) - test_cases["wpa3_enterprise_5g"] = False - allure.attach(body=str(e), - name="SSID Profile Creation Failed") - - # Equipment AP Profile Creation - try: - instantiate_profile.set_ap_profile(profile_data=profile_data['equipment_ap']) - test_cases["equipment_ap"] = True - allure.attach(body=str(profile_data['equipment_ap']), - name="Equipment AP Profile Created") - except Exception as e: - print(e) - test_cases["equipment_ap"] = False - allure.attach(body=str(e), - name="Equipment AP Profile Creation Failed") - - # Push the Equipment AP Profile to AP - try: - for i in get_equipment_id: - instantiate_profile.push_profile_old_method(equipment_id=i) - except Exception as e: - print(e) - print("failed to create AP Profile") - - ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") - ssid_names = [] - for i in instantiate_profile.profile_creation_ids["ssid"]: - ssid_names.append(instantiate_profile.get_ssid_name_by_profile_id(profile_id=i)) - ssid_names.sort() - - # This loop will check the VIF Config with cloud profile - vif_config = [] - test_cases['vifc'] = False - for i in range(0, 18): - vif_config = list(ap_ssh.get_vif_config_ssids()) - vif_config.sort() - print(vif_config) - print(ssid_names) - if ssid_names == vif_config: - test_cases['vifc'] = True - break - time.sleep(10) - allure.attach(body=str("VIF Config: " + str(vif_config) + "\n" + "SSID Pushed from Controller: " + str(ssid_names)), - name="SSID Profiles in VIF Config and Controller: ") - ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") - - # This loop will check the VIF Config with VIF State - test_cases['vifs'] = False - for i in range(0, 18): - vif_state = list(ap_ssh.get_vif_state_ssids()) - vif_state.sort() - vif_config = list(ap_ssh.get_vif_config_ssids()) - vif_config.sort() - print(vif_config) - print(vif_state) - if vif_state == vif_config: - test_cases['vifs'] = True - break - time.sleep(10) - allure.attach(body=str("VIF Config: " + str(vif_config) + "\n" + "VIF State: " + str(vif_state)), - name="SSID Profiles in VIF Config and VIF State: ") - print(test_cases) - - def teardown_session(): - print("\nRemoving Profiles") - instantiate_profile.delete_profile_by_name(profile_name=profile_data['equipment_ap']['profile_name']) - instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["ssid"]) - instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["radius"]) - instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["rf"]) - allure.attach(body=str(profile_data['equipment_ap']['profile_name'] + "\n"), - name="Tear Down in Profiles ") - time.sleep(20) - - request.addfinalizer(teardown_session) - yield test_cases @@ -610,7 +254,7 @@ def failure_tracking_fixture(request): print("tests_failed_during_module: ") print(tests_failed_during_module) yield tests_failed_during_module - + @pytest.fixture(scope="class") def get_vif_state(get_apnos, get_configuration): @@ -641,7 +285,7 @@ def pytest_runtest_makereport(item, call): TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) #print("TestCasefullNameTEST: " + TestCaseFullName) - try: + try: #TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_') TestCaseName = nCurrentTestMethodNameSplit.replace('test_', '') #print ("\nTestCaseName: " + TestCaseName) @@ -653,7 +297,7 @@ def pytest_runtest_makereport(item, call): #exception = call.excinfo.value #exception_class = call.excinfo.type #exception_class_name = call.excinfo.typename - + #exception_traceback = call.excinfo.traceback if result.outcome == "failed": @@ -663,7 +307,7 @@ def pytest_runtest_makereport(item, call): testCaseNameList.append(TestCaseName) testCaseStatusList.append(testCaseFailedStatusValue) testCaseErrorMsg.append(exception_type_and_message_formatted) - testCaseReportURL.append(reporting_client.report_url()) + testCaseReportURL.append(reporting_client.report_url()) print("\n TestStatus: " + testCaseFailedStatusValue) print(" FailureMsg: " + str(testCaseErrorMsg)) @@ -687,9 +331,9 @@ def pytest_runtest_makereport(item, call): testCaseErrorMsg.append(str(exception_type_Skipped_message_formatted)) testCaseReportURL.append(reporting_client.report_url()) print("\n TestStatus: " + testCaseSkippedStatusValue) - print(" FailureMsg: " + str(testCaseErrorMsg)) - reportPerfecto(TestCaseName, testCaseSkippedStatusValue, testCaseErrorMsg, str(reporting_client.report_url())) - + print(" FailureMsg: " + str(testCaseErrorMsg)) + reportPerfecto(TestCaseName, testCaseSkippedStatusValue, testCaseErrorMsg, str(reporting_client.report_url())) + def pytest_sessionfinish(session, exitstatus): @@ -699,17 +343,17 @@ def pytest_sessionfinish(session, exitstatus): passed_amount = sum(1 for result in session.results.values() if result.passed) failed_amount = sum(1 for result in session.results.values() if result.failed) skipped_amount = sum(1 for result in session.results.values() if result.skipped) - # print(f'There are {passed_amount} passed and {failed_amount} failed tests') + # print(f'There are {passed_amount} passed and {failed_amount} failed tests') TotalExecutedCount = failed_amount + passed_amount + skipped_amount print('\n------------------------------------') - print('Interop Perfecto TestCase Execution Summary') + print('Interop Perfecto TestCase Execution Summary') print('------------------------------------') - print('Total TestCase Executed: ' + str(TotalExecutedCount)) + print('Total TestCase Executed: ' + str(TotalExecutedCount)) print('Total Passed: ' + str(passed_amount)) print('Total Failed: ' + str(failed_amount)) print('Total Skipped: ' + str(skipped_amount) + "\n") - + try: for index in range(len(testCaseNameList)): print(str(index+1) + ") " + str(testCaseNameList[index]) + " : " + str(testCaseStatusList[index])) @@ -725,16 +369,16 @@ def setup_perfectoMobile_android(request): from appium import webdriver driver = None reporting_client = None - + warnings.simplefilter("ignore", ResourceWarning) urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - + capabilities = { 'platformName': request.config.getini("platformName-android"), 'model': request.config.getini("model-android"), 'browserName': 'mobileOS', #'automationName' : 'Appium', - 'securityToken' : request.config.getini("securityToken"), + 'securityToken' : request.config.getini("securityToken"), 'useAppiumForWeb' : 'false', 'useAppiumForHybrid' : 'false', #'bundleId' : request.config.getini("appPackage-android"), @@ -742,7 +386,7 @@ def setup_perfectoMobile_android(request): driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) driver.implicitly_wait(35) - + TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) try: @@ -753,7 +397,7 @@ def setup_perfectoMobile_android(request): TestCaseName = nCurrentTestMethodNameSplit print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") #print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") - + projectname = request.config.getini("projectName") projectversion = request.config.getini("projectVersion") jobname = request.config.getini("jobName") @@ -774,14 +418,14 @@ def setup_perfectoMobile_android(request): print("----------------------------------------------------------\n\n\n\n") driver.close() except Exception as e: - print(" -- Exception While Tear Down --") + print(" -- Exception While Tear Down --") driver.close() print (e) finally: try: driver.quit() except Exception as e: - print(" -- Exception Not Able To Quit --") + print(" -- Exception Not Able To Quit --") print (e) request.addfinalizer(teardown) @@ -789,7 +433,7 @@ def setup_perfectoMobile_android(request): if driver is None: yield -1 else: - yield driver,reporting_client + yield driver,reporting_client def reportClient(value): global reporting_client # declare a to be a global @@ -811,7 +455,7 @@ def setup_perfectoMobileWeb(request): from selenium import webdriver rdriver = None reporting_client = None - + warnings.simplefilter("ignore", ResourceWarning) urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) @@ -839,18 +483,18 @@ def setup_perfectoMobileWeb(request): def teardown(): try: - print(" -- Tear Down --") + print(" -- Tear Down --") reporting_client.test_stop(TestResultFactory.create_success()) print('Report-Url: ' + reporting_client.report_url() + '\n') rdriver.close() except Exception as e: - print(" -- Exception Not Able To close --") + print(" -- Exception Not Able To close --") print (e.message) finally: try: rdriver.quit() except Exception as e: - print(" -- Exception Not Able To Quit --") + print(" -- Exception Not Able To Quit --") print (e.message) request.addfinalizer(teardown) @@ -858,24 +502,24 @@ def setup_perfectoMobileWeb(request): if rdriver is None: yield -1 else: - yield rdriver,reporting_client + yield rdriver,reporting_client @pytest.fixture(scope="function") def setup_perfectoMobile_iOS(request): from appium import webdriver driver = None reporting_client = None - + warnings.simplefilter("ignore", ResourceWarning) urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - + capabilities = { 'platformName': request.config.getini("platformName-iOS"), 'model': request.config.getini("model-iOS"), 'browserName': 'safari', #'automationName' : 'Appium', - 'securityToken' : request.config.getini("securityToken"), - 'useAppiumForWeb' : 'false', + 'securityToken' : request.config.getini("securityToken"), + 'useAppiumForWeb' : 'false', 'autoAcceptAlerts' : 'true', #'bundleId' : request.config.getini("bundleId-iOS"), 'useAppiumForHybrid' : 'false', @@ -883,7 +527,7 @@ def setup_perfectoMobile_iOS(request): driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) driver.implicitly_wait(35) - + TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) try: @@ -894,7 +538,7 @@ def setup_perfectoMobile_iOS(request): TestCaseName = nCurrentTestMethodNameSplit print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") #print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") - + projectname = request.config.getini("projectName") projectversion = request.config.getini("projectVersion") jobname = request.config.getini("jobName") @@ -915,20 +559,20 @@ def setup_perfectoMobile_iOS(request): print("----------------------------------------------------------\n\n\n\n") driver.close() except Exception as e: - print(" -- Exception While Tear Down --") + print(" -- Exception While Tear Down --") driver.close() print (e) finally: try: driver.quit() except Exception as e: - print(" -- Exception Not Able To Quit --") + print(" -- Exception Not Able To Quit --") print (e) - + request.addfinalizer(teardown) if driver is None: yield -1 else: - yield driver,reporting_client + yield driver,reporting_client diff --git a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/conftest.py b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/conftest.py index a1c92b1e1..31b125cf4 100644 --- a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/conftest.py +++ b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/conftest.py @@ -20,7 +20,7 @@ from configuration import PASSPOINT_PROVIDER_INFO from configuration import PASSPOINT_OPERATOR_INFO from configuration import PASSPOINT_VENUE_INFO from configuration import PASSPOINT_PROFILE_INFO -from controller.controller import ProfileUtility +from controller.controller_1x.controller import ProfileUtility @allure.feature("PASSPOINT CONNECTIVITY SETUP") diff --git a/tests/fixtures_1x.py b/tests/fixtures_1x.py new file mode 100644 index 000000000..e1be3d470 --- /dev/null +++ b/tests/fixtures_1x.py @@ -0,0 +1,575 @@ +import sys +import os +if "libs" not in sys.path: + sys.path.append(f'../libs') +for folder in 'py-json', 'py-scripts': + if folder not in sys.path: + sys.path.append(f'../lanforge/lanforge-scripts/{folder}') + +sys.path.append( + os.path.dirname( + os.path.realpath(__file__) + ) +) +sys.path.append(f"../lanforge/lanforge-scripts/py-scripts/tip-cicd-sanity") + +sys.path.append(f'../libs') +sys.path.append(f'../libs/lanforge/') + +from LANforge.LFUtils import * + +if 'py-json' not in sys.path: + sys.path.append('../py-scripts') +from apnos.apnos import APNOS +from controller.controller_1x.controller import Controller +from controller.controller_1x.controller import FirmwareUtility +import pytest +from cv_test_manager import cv_test +from configuration import CONFIGURATION +from configuration import RADIUS_SERVER_DATA +from configuration import RADIUS_ACCOUNTING_DATA +from configuration import TEST_CASES +from testrails.testrail_api import APIClient +from testrails.reporting import Reporting +from lf_tools import ChamberView +from sta_connect2 import StaConnect2 +from os import path +from typing import Any, Callable, Optional + +import time +import allure +import pytest + +class Fixtures_1x: + + def __init__(self, configuration={}): + self.lab_info = configuration + print(self.lab_info) + print("1.X") + try: + self.controller_obj = Controller(controller_data=self.lab_info["controller"]) + except Exception as e: + print(e) + allure.attach(body=str(e), name="Controller Instantiation Failed: ") + sdk_client = False + pytest.exit("unable to communicate to Controller" + str(e)) + + def disconnect(self): + self.controller_obj.disconnect_Controller() + + def setup_firmware(self): + pass + + def get_ap_version(self, get_apnos, get_configuration): + version_list = [] + for access_point_info in get_configuration['access_point']: + ap_ssh = get_apnos(access_point_info) + version = ap_ssh.get_ap_version_ucentral() + version_list.append(version) + return version_list + + def setup_profiles(self, request, param, setup_controller, testbed, get_equipment_id, instantiate_profile, + get_markers, create_lanforge_chamberview_dut, lf_tools, + get_security_flags, get_configuration, radius_info, get_apnos, radius_accounting_info): + + instantiate_profile = instantiate_profile(sdk_client=setup_controller) + vlan_id, mode = 0, 0 + instantiate_profile.cleanup_objects() + parameter = dict(param) + print(parameter) + test_cases = {} + profile_data = {} + if parameter['mode'] not in ["BRIDGE", "NAT", "VLAN"]: + print("Invalid Mode: ", parameter['mode']) + allure.attach(body=parameter['mode'], name="Invalid Mode: ") + return test_cases + + if parameter['mode'] == "NAT": + mode = "NAT" + vlan_id = 1 + if parameter['mode'] == "BRIDGE": + mode = "BRIDGE" + vlan_id = 1 + if parameter['mode'] == "VLAN": + mode = "BRIDGE" + + instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Equipment-AP-" + parameter['mode']) + + profile_data["equipment_ap"] = {"profile_name": testbed + "-Equipment-AP-" + parameter['mode']} + profile_data["ssid"] = {} + for i in parameter["ssid_modes"]: + profile_data["ssid"][i] = [] + for j in range(len(parameter["ssid_modes"][i])): + profile_name = testbed + "-SSID-" + i + "-" + str(j) + "-" + parameter['mode'] + data = parameter["ssid_modes"][i][j] + data["profile_name"] = profile_name + if "mode" not in dict(data).keys(): + data["mode"] = mode + if "vlan" not in dict(data).keys(): + data["vlan"] = vlan_id + instantiate_profile.delete_profile_by_name(profile_name=profile_name) + profile_data["ssid"][i].append(data) + # print(profile_name) + # print(profile_data) + + instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode) + time.sleep(10) + """ + Setting up rf profile + """ + rf_profile_data = { + "name": "RF-Profile-" + testbed + "-" + parameter['mode'] + "-" + + get_configuration['access_point'][0]['mode'] + } + + for i in parameter["rf"]: + rf_profile_data[i] = parameter['rf'][i] + # print(rf_profile_data) + + try: + instantiate_profile.delete_profile_by_name(profile_name=rf_profile_data['name']) + instantiate_profile.set_rf_profile(profile_data=rf_profile_data, + mode=get_configuration['access_point'][0]['mode']) + allure.attach(body=str(rf_profile_data), + name="RF Profile Created : " + get_configuration['access_point'][0]['mode']) + except Exception as e: + print(e) + allure.attach(body=str(e), name="Exception ") + + # Radius Profile Creation + if parameter["radius"]: + radius_info = radius_info + radius_info["name"] = testbed + "-Automation-Radius-Profile-" + mode + instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode) + try: + instantiate_profile.create_radius_profile(radius_info=radius_info) + allure.attach(body=str(radius_info), + name="Radius Profile Created") + test_cases['radius_profile'] = True + except Exception as e: + print(e) + test_cases['radius_profile'] = False + + # SSID Profile Creation + lf_dut_data = [] + for mode in profile_data['ssid']: + if mode == "open": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_open_ssid_profile(profile_data=j) + test_cases["open_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["open_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa_ssid_profile(profile_data=j) + test_cases["wpa_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa2_personal": + for j in profile_data["ssid"][mode]: + # print(j) + + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa2_personal_ssid_profile(profile_data=j) + test_cases["wpa2_personal_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa2_personal_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa_wpa2_personal_mixed": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + + creates_profile = instantiate_profile.create_wpa_wpa2_personal_mixed_ssid_profile( + profile_data=j) + test_cases["wpa_wpa2_personal_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_wpa2_personal_mixed_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa3_personal": + for j in profile_data["ssid"][mode]: + print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + + creates_profile = instantiate_profile.create_wpa3_personal_ssid_profile(profile_data=j) + test_cases["wpa3_personal_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_personal_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa3_personal_mixed": + for j in profile_data["ssid"][mode]: + print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa3_personal_mixed_ssid_profile( + profile_data=j) + test_cases["wpa3_personal_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_personal_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa_enterprise": + for j in profile_data["ssid"][mode]: + + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa_enterprise_ssid_profile(profile_data=j) + test_cases["wpa_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + + except Exception as e: + print(e) + test_cases["wpa_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa2_enterprise": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa2_enterprise_ssid_profile(profile_data=j) + test_cases["wpa2_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa2_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa3_enterprise": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa3_enterprise_ssid_profile(profile_data=j) + test_cases["wpa3_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa_wpa2_enterprise_mixed": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa_wpa2_enterprise_mixed_ssid_profile( + profile_data=j) + test_cases["wpa_wpa2_enterprise_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_wpa2_enterprise_mixed_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa3_enterprise_mixed": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wpa3_enterprise_mixed_ssid_profile( + profile_data=j) + test_cases["wpa3_enterprise_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_mixed_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wep": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + for i in range(len(j["appliedRadios"])): + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GU", "is5GHzU") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5GL", "is5GHzL") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("5G", "is5GHz") + j["appliedRadios"][i] = j["appliedRadios"][i].replace("2G", "is2dot4GHz") + creates_profile = instantiate_profile.create_wep_ssid_profile(profile_data=j) + test_cases["wpa3_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + # Equipment AP Profile Creation + try: + instantiate_profile.set_ap_profile(profile_data=profile_data['equipment_ap']) + test_cases["equipment_ap"] = True + allure.attach(body=str(profile_data['equipment_ap']), + name="Equipment AP Profile Created") + except Exception as e: + print(e) + test_cases["equipment_ap"] = False + allure.attach(body=str(e), + name="Equipment AP Profile Creation Failed") + + # Push the Equipment AP Profile to AP + try: + for i in get_equipment_id: + instantiate_profile.push_profile_old_method(equipment_id=i) + except Exception as e: + print(e) + print("failed to create AP Profile") + + ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") + # ssid_names = [] + # for i in instantiate_profile.profile_creation_ids["ssid"]: + # ssid_names.append(instantiate_profile.get_ssid_name_by_profile_id(profile_id=i)) + # ssid_names.sort() + ssid_names = [] + for i in lf_dut_data: + ssid_names.append(i["ssid_name"]) + ssid_names.sort() + # This loop will check the VIF Config with cloud profile + vif_config = [] + test_cases['vifc'] = False + for i in range(0, 18): + vif_config = list(ap_ssh.get_vif_config_ssids()) + vif_config.sort() + print(vif_config) + print(ssid_names) + if ssid_names == vif_config: + test_cases['vifc'] = True + break + time.sleep(10) + allure.attach( + body=str("VIF Config: " + str(vif_config) + "\n" + "SSID Pushed from Controller: " + str(ssid_names)), + name="SSID Profiles in VIF Config and Controller: ") + ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") + + # This loop will check the VIF Config with VIF State + test_cases['vifs'] = False + for i in range(0, 18): + vif_state = list(ap_ssh.get_vif_state_ssids()) + vif_state.sort() + vif_config = list(ap_ssh.get_vif_config_ssids()) + vif_config.sort() + print(vif_config) + print(vif_state) + if vif_state == vif_config: + test_cases['vifs'] = True + break + time.sleep(10) + allure.attach(body=str("VIF Config: " + str(vif_config) + "\n" + "VIF State: " + str(vif_state)), + name="SSID Profiles in VIF Config and VIF State: ") + + ap_logs = ap_ssh.logread() + allure.attach(body=ap_logs, name="AP LOgs: ") + ssid_info = ap_ssh.get_ssid_info() + ssid_data = [] + print(ssid_info) + band_mapping = ap_ssh.get_bssid_band_mapping() + print(band_mapping) + idx_mapping = {} + for i in range(0, len(ssid_info)): + if ssid_info[i][1] == "OPEN": + ssid_info[i].append("") + if ssid_info[i][1] == "OPEN": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=OPEN" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], + ssid_info[i][0]] + + if ssid_info[i][1] == "WPA": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], + ssid_info[i][0]] + if ssid_info[i][1] == "WPA2": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA2" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], + ssid_info[i][0]] + if ssid_info[i][1] == "WPA3_PERSONAL": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA3" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], + ssid_info[i][0]] + + if ssid_info[i][1] == "WPA | WPA2": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA|WPA2" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], + ssid_info[i][0]] + + if ssid_info[i][1] == "EAP-TTLS": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=EAP-TTLS" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + idx_mapping[str(i)] = [ssid_info[i][3], ssid_info[i][2], ssid_info[i][1], band_mapping[ssid_info[i][0]], + ssid_info[i][0]] + ssid_data.append(ssid) + lf_tools.dut_idx_mapping = idx_mapping + # Add bssid password and security from iwinfo data + # Format SSID Data in the below format + # ssid_data = [ + # ['ssid_idx=0 ssid=Default-SSID-2g security=WPA|WEP| password=12345678 bssid=90:3c:b3:94:48:58'], + # ['ssid_idx=1 ssid=Default-SSID-5gl password=12345678 bssid=90:3c:b3:94:48:59'] + # ] + allure.attach(name="SSID DATA IN LF DUT", body=str(ssid_data)) + lf_tools.update_ssid(ssid_data=ssid_data) + + def teardown_session(): + print("\nRemoving Profiles") + instantiate_profile.delete_profile_by_name(profile_name=profile_data['equipment_ap']['profile_name']) + instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["ssid"]) + instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["radius"]) + instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["rf"]) + allure.attach(body=str(profile_data['equipment_ap']['profile_name'] + "\n"), + name="Tear Down in Profiles ") + time.sleep(20) + + request.addfinalizer(teardown_session) + return test_cases diff --git a/tests/fixtures_2x.py b/tests/fixtures_2x.py new file mode 100644 index 000000000..4ba16c4eb --- /dev/null +++ b/tests/fixtures_2x.py @@ -0,0 +1,402 @@ +""" Python Inbuilt Libraries """ +import allure +import pytest +import sys +import os +import json +import time + +""" Environment Paths """ +if "libs" not in sys.path: + sys.path.append(f'../libs') +for folder in 'py-json', 'py-scripts': + if folder not in sys.path: + sys.path.append(f'../lanforge/lanforge-scripts/{folder}') + +sys.path.append( + os.path.dirname( + os.path.realpath(__file__) + ) +) +sys.path.append(f"../lanforge/lanforge-scripts/py-scripts/tip-cicd-sanity") + +sys.path.append(f'../libs') +sys.path.append(f'../libs/lanforge/') + +from LANforge.LFUtils import * + +if 'py-json' not in sys.path: + sys.path.append('../py-scripts') +from apnos.apnos import APNOS +from controller.controller_2x.controller import Controller +from configuration import CONFIGURATION +from configuration import RADIUS_SERVER_DATA +from configuration import RADIUS_ACCOUNTING_DATA + + +class Fixtures_2x: + + def __init__(self, configuration={}): + self.lab_info = configuration + print(self.lab_info) + print("2.X") + try: + self.controller_obj = Controller(controller_data=self.lab_info["controller"]) + except Exception as e: + print(e) + allure.attach(body=str(e), name="Controller Instantiation Failed: ") + sdk_client = False + pytest.exit("unable to communicate to Controller" + str(e)) + + def disconnect(self): + self.controller_obj.logout() + + def setup_firmware(self): + pass + + def get_ap_version(self, get_apnos, get_configuration): + version_list = [] + for access_point_info in get_configuration['access_point']: + ap_ssh = get_apnos(access_point_info) + version = ap_ssh.get_ap_version_ucentral() + version_list.append(version) + return version_list + + def setup_profiles(self, request, param, setup_controller, testbed, get_equipment_id, + instantiate_profile, get_markers, create_lanforge_chamberview_dut, lf_tools, + get_security_flags, get_configuration, radius_info, get_apnos, radius_accounting_info): + print("inside conftest_2x") + if not request.config.getoption("1.x"): + instantiate_profile_obj = instantiate_profile(sdk_client=setup_controller) + print("garbage") + print(1, instantiate_profile_obj.sdk_client) + vlan_id, mode = 0, 0 + parameter = dict(param) + print("hola", parameter) + test_cases = {} + profile_data = {} + + if parameter['mode'] not in ["BRIDGE", "NAT", "VLAN"]: + print("Invalid Mode: ", parameter['mode']) + return test_cases + + instantiate_profile_obj.set_radio_config() + + if parameter['mode'] == "NAT": + mode = "NAT" + instantiate_profile_obj.set_mode(mode=mode) + vlan_id = 1 + if parameter['mode'] == "BRIDGE": + mode = "BRIDGE" + instantiate_profile_obj.set_mode(mode=mode) + vlan_id = 1 + if parameter['mode'] == "VLAN": + mode = "VLAN" + instantiate_profile_obj.set_mode(mode=mode) + profile_data["ssid"] = {} + + for i in parameter["ssid_modes"]: + profile_data["ssid"][i] = [] + for j in range(len(parameter["ssid_modes"][i])): + data = parameter["ssid_modes"][i][j] + profile_data["ssid"][i].append(data) + lf_dut_data = [] + for mode in profile_data['ssid']: + if mode == "open": + for j in profile_data["ssid"][mode]: + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + j["appliedRadios"] = list(set(j["appliedRadios"])) + j['security'] = 'none' + creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) + test_cases["wpa_2g"] = True + except Exception as e: + print(e) + test_cases["wpa_2g"] = False + if mode == "wpa": + for j in profile_data["ssid"][mode]: + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + j["appliedRadios"] = list(set(j["appliedRadios"])) + j['security'] = 'psk' + creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) + test_cases["wpa_2g"] = True + except Exception as e: + print(e) + test_cases["wpa_2g"] = False + if mode == "wpa2_personal": + for j in profile_data["ssid"][mode]: + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + j["appliedRadios"] = list(set(j["appliedRadios"])) + j['security'] = 'psk2' + creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) + test_cases["wpa_2g"] = True + except Exception as e: + print(e) + test_cases["wpa2_personal"] = False + if mode == "wpa_wpa2_personal_mixed": + for j in profile_data["ssid"][mode]: + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + j["appliedRadios"] = list(set(j["appliedRadios"])) + j['security'] = 'psk-mixed' + creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) + test_cases["wpa_2g"] = True + except Exception as e: + print(e) + test_cases["wpa2_personal"] = False + if mode == "wpa3_personal": + for j in profile_data["ssid"][mode]: + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + j["appliedRadios"] = list(set(j["appliedRadios"])) + j['security'] = 'sae' + creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) + test_cases["wpa_2g"] = True + except Exception as e: + print(e) + test_cases["wpa2_personal"] = False + if mode == "wpa3_personal_mixed": + for j in profile_data["ssid"][mode]: + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + j["appliedRadios"] = list(set(j["appliedRadios"])) + j['security'] = 'sae-mixed' + creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j) + test_cases["wpa_2g"] = True + except Exception as e: + print(e) + test_cases["wpa2_personal"] = False + # EAP SSID Modes + if mode == "wpa2_enterprise": + for j in profile_data["ssid"][mode]: + if mode in get_markers.keys() and get_markers[mode]: + try: + if j["appliedRadios"].__contains__("2G"): + lf_dut_data.append(j) + if j["appliedRadios"].__contains__("5G"): + lf_dut_data.append(j) + j["appliedRadios"] = list(set(j["appliedRadios"])) + j['security'] = 'wpa2' + RADIUS_SERVER_DATA = radius_info + RADIUS_ACCOUNTING_DATA = radius_accounting_info + creates_profile = instantiate_profile_obj.add_ssid(ssid_data=j, radius=True, + radius_auth_data=RADIUS_SERVER_DATA, + radius_accounting_data=RADIUS_ACCOUNTING_DATA) + test_cases["wpa_2g"] = True + except Exception as e: + print(e) + test_cases["wpa2_personal"] = False + ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/", sdk="2.x") + connected, latest, active = ap_ssh.get_ucentral_status() + if connected == False: + pytest.exit("AP is disconnected from UC Gateway") + if latest != active: + allure.attach(name="FAIL : ubus call ucentral status: ", + body="connected: " + str(connected) + "\nlatest: " + str(latest) + "\nactive: " + str(active)) + ap_logs = ap_ssh.logread() + allure.attach(body=ap_logs, name="FAILURE: AP LOgs: ") + pytest.fail("AP is disconnected from UC Gateway") + instantiate_profile_obj.push_config(serial_number=get_equipment_id[0]) + time_1 = time.time() + config = json.loads(str(instantiate_profile_obj.base_profile_config).replace(" ", "").replace("'", '"')) + config["uuid"] = 0 + ap_config_latest = ap_ssh.get_uc_latest_config() + try: + ap_config_latest["uuid"] = 0 + except Exception as e: + print(e) + pass + x = 1 + old_config = latest + connected, latest, active = ap_ssh.get_ucentral_status() + while old_config == latest: + time.sleep(5) + x += 1 + print("old config: " , old_config) + print("latest: " , latest) + connected, latest, active = ap_ssh.get_ucentral_status() + if x == 19: + break + connected, latest, active = ap_ssh.get_ucentral_status() + x = 1 + while active != latest: + connected, latest, active = ap_ssh.get_ucentral_status() + time.sleep(10) + x += 1 + print("active: ", active) + print("latest: ", latest) + if x == 19: + break + if x < 19: + print("Config properly applied into AP", config) + + time_2 = time.time() + time_interval = time_2 - time_1 + allure.attach(name="Time Took to apply Config: " + str(time_interval), body="") + + ap_config_latest = ap_ssh.get_uc_latest_config() + ap_config_latest["uuid"] = 0 + + ap_config_active = ap_ssh.get_uc_active_config() + ap_config_active["uuid"] = 0 + x = 1 + + while ap_config_active != ap_config_latest: + time.sleep(5) + x += 1 + ap_config_latest = ap_ssh.get_uc_latest_config() + ap_config_latest["uuid"] = 0 + + ap_config_active = ap_ssh.get_uc_active_config() + print("latest config: ", ap_config_latest) + print("Active config: ", ap_config_active) + ap_config_active["uuid"] = 0 + if x == 19: + break + if x < 19: + print("AP is Broadcasting Applied Config") + allure.attach(name="Success : Active Config in AP: ", body=str(ap_config_active)) + + else: + print("AP is Not Broadcasting Applied Config") + allure.attach(name="Failed to Apply Config : Active Config in AP : ", body=str(ap_config_active)) + + ap_logs = ap_ssh.logread() + allure.attach(body=ap_logs, name="AP LOgs: ") + ap_wifi_data = ap_ssh.get_interface_details() + idx_mapping = {} + ssid_data = [] + ap_interfaces = list(ap_wifi_data.keys()) + for interface in range(len(ap_interfaces)): + if ap_wifi_data[ap_interfaces[interface]][1] == "none": + ssid = ["ssid_idx=" + str(interface) + + " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + + " security=OPEN" + + " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], + ap_wifi_data[ap_interfaces[interface]][2], + ap_wifi_data[ap_interfaces[interface]][1], + ap_wifi_data[ap_interfaces[interface]][3][1], + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + # pass + if ap_wifi_data[ap_interfaces[interface]][1] == "psk": + ssid = ["ssid_idx=" + str(interface) + + " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + + " security=WPA" + + " password=" + ap_wifi_data[ap_interfaces[interface]][2] + + " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], + ap_wifi_data[ap_interfaces[interface]][2], + ap_wifi_data[ap_interfaces[interface]][1], + ap_wifi_data[ap_interfaces[interface]][3][1], + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + # pass + if ap_wifi_data[ap_interfaces[interface]][1] == "psk-mixed": + ssid = ["ssid_idx=" + str(interface) + + " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + + " security=WPA|WPA2" + + " password=" + ap_wifi_data[ap_interfaces[interface]][2] + + " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], + ap_wifi_data[ap_interfaces[interface]][2], + ap_wifi_data[ap_interfaces[interface]][1], + ap_wifi_data[ap_interfaces[interface]][3][1], + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + # pass + if ap_wifi_data[ap_interfaces[interface]][1] == "psk2": + ssid = ["ssid_idx=" + str(interface) + + " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + + " security=WPA2" + + " password=" + ap_wifi_data[ap_interfaces[interface]][2] + + " bssid=" + str(ap_wifi_data[ap_interfaces[interface]][3][0]).lower() + ] + print(ssid) + idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], + ap_wifi_data[ap_interfaces[interface]][2], + ap_wifi_data[ap_interfaces[interface]][1], + ap_wifi_data[ap_interfaces[interface]][3][1], + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + # pass + if ap_wifi_data[ap_interfaces[interface]][1] == "sae": + ssid = ["ssid_idx=" + str(interface) + + " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + + " security=WPA3" + + " password=" + ap_wifi_data[ap_interfaces[interface]][2] + + " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], + ap_wifi_data[ap_interfaces[interface]][2], + ap_wifi_data[ap_interfaces[interface]][1], + ap_wifi_data[ap_interfaces[interface]][3][1], + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + # pass + if ap_wifi_data[ap_interfaces[interface]][1] == "sae-mixed": + ssid = ["ssid_idx=" + str(interface) + + " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + + " security=WPA3" + + " password=" + ap_wifi_data[ap_interfaces[interface]][2] + + " bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], + ap_wifi_data[ap_interfaces[interface]][2], + ap_wifi_data[ap_interfaces[interface]][1], + ap_wifi_data[ap_interfaces[interface]][3][1], + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + # pass + if ap_wifi_data[ap_interfaces[interface]][1] == "wpa2": + ssid = ["ssid_idx=" + str(interface) + + " ssid=" + ap_wifi_data[ap_interfaces[interface]][0] + + " security=EAP-TTLS" + + " bssid=" + str(ap_wifi_data[ap_interfaces[interface]][3][0]).lower() + ] + + idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], + ap_wifi_data[ap_interfaces[interface]][2], + ap_wifi_data[ap_interfaces[interface]][1], + ap_wifi_data[ap_interfaces[interface]][3][1], + ap_wifi_data[ap_interfaces[interface]][3][0] + ] + # pass + ssid_data.append(ssid) + lf_tools.ssid_list.append(ap_wifi_data[ap_interfaces[interface]][0]) + lf_tools.dut_idx_mapping = idx_mapping + print(ssid_data) + lf_tools.update_ssid(ssid_data=ssid_data) + return test_cases + else: + return False