mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2025-11-01 19:37:54 +00:00
392 lines
19 KiB
Python
392 lines
19 KiB
Python
import os
|
|
import sys
|
|
|
|
sys.path.append(
|
|
os.path.dirname(
|
|
os.path.realpath(__file__)
|
|
)
|
|
)
|
|
if "libs" not in sys.path:
|
|
sys.path.append(f"../libs")
|
|
|
|
import time
|
|
import pytest
|
|
import allure
|
|
from collections import defaultdict
|
|
from lanforge.lf_tests import RunTest
|
|
from configuration import PASSPOINT_RADIUS_SERVER_DATA
|
|
from configuration import PASSPOINT_RADIUS_ACCOUNTING_SERVER_DATA
|
|
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_1x.controller import ProfileUtility
|
|
|
|
|
|
@allure.feature("PASSPOINT CONNECTIVITY SETUP")
|
|
@pytest.fixture(scope="class")
|
|
def setup_profiles(request, setup_controller, testbed, setup_vlan, get_equipment_ref,
|
|
instantiate_profile, get_markers, passpoint_provider_info, passpoint_operator_info,
|
|
passpoint_venue_info, passpoint_profile_info,
|
|
get_configuration, passpoint_radius_server_info, passpoint_radius_accounting_server_info, get_apnos):
|
|
instantiate_profile = instantiate_profile(sdk_client=setup_controller)
|
|
vlan_id, mode = 0, 0
|
|
instantiate_profile.cleanup_objects()
|
|
parameter = dict(request.param)
|
|
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
|
|
|
|
ap_profile = testbed + "-Equipment-AP-Passpoint"
|
|
instantiate_profile.delete_profile_by_name(profile_name=ap_profile)
|
|
profile_data["equipment_ap"] = {"profile_name": ap_profile}
|
|
|
|
profile_data["ssid"] = {}
|
|
# Only passpoint SSID need to be applied with passpoint profiles leaving ssid used for
|
|
# profile download - passpoint_profile_download
|
|
profile_data["allowed_ssids"] = []
|
|
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)
|
|
|
|
instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode)
|
|
time.sleep(10)
|
|
|
|
# RF Profile Creation
|
|
rf_profile_data = {
|
|
"name": testbed + "-RF-Profile-" + parameter["mode"] + "-" + get_configuration["access_point"][0]["mode"]
|
|
}
|
|
try:
|
|
instantiate_profile.delete_profile_by_name(profile_name=rf_profile_data["name"])
|
|
rf_profile_data = 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
|
|
passpoint_radius_server_info = passpoint_radius_server_info
|
|
passpoint_radius_server_info["name"] = testbed + "-Automation-Radius-Profile"
|
|
instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile")
|
|
try:
|
|
instantiate_profile.create_radius_profile(radius_info=passpoint_radius_server_info,
|
|
radius_accounting_info=passpoint_radius_accounting_server_info)
|
|
test_cases["radius_profile"] = True
|
|
allure.attach(body=str(passpoint_radius_server_info), name="Radius Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases["radius_profile"] = False
|
|
|
|
# SSID Profile Creation
|
|
for mode in profile_data["ssid"]:
|
|
if mode == "open":
|
|
for j in profile_data["ssid"][mode]:
|
|
try:
|
|
if "is2dot4GHz" in list(j["appliedRadios"]):
|
|
creates_profile = instantiate_profile.create_open_ssid_profile(profile_data=j)
|
|
test_cases[j["ssid_name"]] = {"sdk": True}
|
|
allure.attach(body=str(creates_profile), name="SSID Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases[j["ssid_name"]] = {"sdk": False}
|
|
allure.attach(body=str(e), name="SSID Profile Creation Failed")
|
|
if mode == "wpa_eap":
|
|
for j in profile_data["ssid"][mode]:
|
|
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_eap_passpoint_ssid_profile(profile_data=j)
|
|
profile_data["allowed_ssids"].append(creates_profile._id)
|
|
test_cases[j["ssid_name"]] = {"sdk": True}
|
|
allure.attach(body=str(creates_profile), name="SSID Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases[j["ssid_name"]] = {"sdk": 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_eap_passpoint_ssid_profile(profile_data=j)
|
|
profile_data["allowed_ssids"].append(creates_profile._id)
|
|
test_cases[j["ssid_name"]] = {"sdk": True}
|
|
allure.attach(body=str(creates_profile), name="SSID Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases[j["wpa_eap_5g"]] = {"sdk": False}
|
|
allure.attach(body=str(e), name="SSID Profile Creation Failed")
|
|
if mode == "wpa2_eap":
|
|
for j in profile_data["ssid"][mode]:
|
|
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_eap_passpoint_ssid_profile(profile_data=j)
|
|
profile_data["allowed_ssids"].append(creates_profile._id)
|
|
test_cases[j["ssid_name"]] = {"sdk": True}
|
|
allure.attach(body=str(creates_profile), name="SSID Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases[j["ssid_name"]] = {"sdk": 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_eap_passpoint_ssid_profile(profile_data=j)
|
|
profile_data["allowed_ssids"].append(creates_profile._id)
|
|
test_cases[j["ssid_name"]] = {"sdk": True}
|
|
allure.attach(body=str(creates_profile), name="SSID Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases[j["ssid_name"]] = {"sdk": False}
|
|
allure.attach(body=str(e), name="SSID Profile Creation Failed")
|
|
if mode == "wpa2_only_eap":
|
|
for j in profile_data["ssid"][mode]:
|
|
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_only_eap_passpoint_ssid_profile(
|
|
profile_data=j)
|
|
profile_data["allowed_ssids"].append(creates_profile._id)
|
|
test_cases[j["ssid_name"]] = {"sdk": True}
|
|
allure.attach(body=str(creates_profile), name="SSID Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases[j["ssid_name"]] = {"sdk": 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_only_eap_passpoint_ssid_profile(
|
|
profile_data=j)
|
|
profile_data["allowed_ssids"].append(creates_profile._id)
|
|
test_cases[j["ssid_name"]] = {"sdk": True}
|
|
allure.attach(body=str(creates_profile), name="SSID Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases[j["ssid_name"]] = {"sdk": False}
|
|
allure.attach(body=str(e), name="SSID Profile Creation Failed")
|
|
|
|
# Passpoint OSU ID provider profile creation
|
|
passpoint_provider_info = passpoint_provider_info
|
|
test_cases["passpoint_osu_id_provider"] = dict()
|
|
profile_name = testbed + "-Automation-Passpoint-OSU-ID-Provider-Profile"
|
|
passpoint_provider_info["profile_name"] = profile_name
|
|
instantiate_profile.delete_profile_by_name(profile_name=profile_name)
|
|
try:
|
|
creates_profile = instantiate_profile.create_passpoint_osu_id_provider_profile(
|
|
profile_data=passpoint_provider_info)
|
|
allure.attach(body=str(creates_profile), name="Passpoint OSU ID provider Profile Created")
|
|
test_cases["passpoint_osu_id_provider"] = {"sdk": True}
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases["passpoint_osu_id_provider"] = {"sdk": False}
|
|
allure.attach(body=str(e), name="Passpoint OSU ID provider Profile Creation Failed")
|
|
|
|
# Passpoint operator profile creation
|
|
test_cases["passpoint_operator_profile"] = dict()
|
|
passpoint_operator_info = passpoint_operator_info
|
|
profile_name = testbed + "-Automation-Passpoint-Operator-Profile"
|
|
passpoint_operator_info["profile_name"] = profile_name
|
|
instantiate_profile.delete_profile_by_name(profile_name=profile_name)
|
|
try:
|
|
creates_profile = instantiate_profile.create_passpoint_operator_profile(profile_data=passpoint_operator_info)
|
|
allure.attach(body=str(creates_profile), name="Passpoint Operator Profile Created")
|
|
test_cases["passpoint_operator_profile"] = {"sdk": True}
|
|
profile_data["passpoint_operator"] = profile_name
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases["passpoint_operator_profile"] = {"sdk": False}
|
|
allure.attach(body=str(e), name="Passpoint Operator Profile Creation Failed")
|
|
|
|
# Passpoint Venue profile creation
|
|
passpoint_venue_info = passpoint_venue_info
|
|
test_cases["passpoint_venue_profile"] = dict()
|
|
profile_name = testbed + "-Automation-Passpoint-Venue-Profile"
|
|
passpoint_venue_info["profile_name"] = profile_name
|
|
instantiate_profile.delete_profile_by_name(profile_name=profile_name)
|
|
try:
|
|
creates_profile = instantiate_profile.create_passpoint_venue_profile(profile_data=passpoint_venue_info)
|
|
allure.attach(body=str(creates_profile), name="Passpoint Venue Profile Created")
|
|
test_cases["passpoint_venue_profile"] = {"sdk": True}
|
|
profile_data["passpoint_venue"] = profile_name
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases["passpoint_venue"] = {"sdk": False}
|
|
allure.attach(body=str(e), name="Passpoint Venue Profile Creation Failed")
|
|
|
|
# Passpoint profile creation
|
|
passpoint_profile_info = passpoint_profile_info
|
|
profile_name = testbed + "-Automation-Passpoint-Profile"
|
|
passpoint_profile_info["profile_name"] = profile_name
|
|
passpoint_profile_info["allowed_ssids"] = profile_data["allowed_ssids"]
|
|
instantiate_profile.delete_profile_by_name(profile_name=profile_name)
|
|
try:
|
|
creates_profile = instantiate_profile.create_passpoint_profile(profile_data=passpoint_profile_info)
|
|
allure.attach(body=str(creates_profile), name="Passpoint Profile Created")
|
|
test_cases["passpoint"] = {"sdk": True}
|
|
profile_data["passpoint"] = profile_name
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases["passpoint"] = {"sdk": False}
|
|
allure.attach(body=str(e), name="Passpoint Profile Creation Failed")
|
|
|
|
# Update SSID profile with passpoint config
|
|
passpoint_profile_info = passpoint_profile_info
|
|
ssid_to_apply = None
|
|
for ssid_profile in profile_data["ssid"].keys():
|
|
for ssid in profile_data["ssid"][ssid_profile]:
|
|
if ssid["ssid_name"] == "passpoint_profile_download":
|
|
ssid_to_apply = ssid["ssid_name"]
|
|
continue
|
|
if ssid["ssid_name"] in test_cases.keys():
|
|
allure.attach(body=str(ssid), name="Updating SSID profile")
|
|
passpoint_profile_info["ssid_profile_name"] = ssid["profile_name"]
|
|
instantiate_profile.update_ssid_profile(profile_info=passpoint_profile_info)
|
|
|
|
# Equipment AP Profile Creation
|
|
ap_profile_info = dict()
|
|
ap_profile_info["profile_name"] = profile_data["equipment_ap"]["profile_name"]
|
|
ap_profile_info["ssid_names"] = [ssid_to_apply]
|
|
try:
|
|
instantiate_profile.set_ap_profile_custom(profile_data=ap_profile_info)
|
|
test_cases["equipment_ap"] = {"sdk": True}
|
|
allure.attach(body=str(profile_data["equipment_ap"]), name="Equipment AP Profile Created")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases["equipment_ap"] = {"sdk": False}
|
|
allure.attach(body=str(e), name="Equipment AP Profile Creation Failed")
|
|
|
|
|
|
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"])
|
|
instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["passpoint_osu_id_provider"])
|
|
instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["passpoint_operator"])
|
|
instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["passpoint_venue"])
|
|
instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["passpoint"])
|
|
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, instantiate_profile, profile_data
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def push_ap_profile(request, setup_profiles, get_equipment_ref, get_apnos, get_configuration):
|
|
parameter = dict(request.param)
|
|
test_cases, instantiate_profile, profile_data = setup_profiles
|
|
ssid_names = parameter["ssid_names"]
|
|
ap_profile_info = dict()
|
|
ap_profile_info["profile_name"] = profile_data["equipment_ap"]["profile_name"]
|
|
test_cases = {}
|
|
ap_profile_info["ssid_names"] = ssid_names
|
|
try:
|
|
instantiate_profile.update_ap_profile(profile_data=ap_profile_info)
|
|
test_cases["equipment_ap"] = {"sdk": True}
|
|
allure.attach(body=str(ap_profile_info["profile_name"]), name="Equipment AP Profile Updated")
|
|
except Exception as e:
|
|
print(e)
|
|
test_cases["equipment_ap"] = {"sdk": False}
|
|
allure.attach(body=str(e), name="Equipment AP Profile Update Failed")
|
|
|
|
print("Pushing profiles on AP :: ", ap_profile_info)
|
|
allure.attach(body=str(ap_profile_info), name="Pushing profiles on AP :: ")
|
|
# Push the Equipment AP Profile to AP
|
|
try:
|
|
for i in get_equipment_ref:
|
|
instantiate_profile.push_profile_old_method(equipment_id=i)
|
|
except Exception as e:
|
|
print(e)
|
|
print("failed to push AP Profile")
|
|
|
|
# Check the VIF Config and VIF State of SSIDs
|
|
time_start = time.time()
|
|
ap_ssh = get_apnos(get_configuration["access_point"][0], pwd="../libs/apnos/")
|
|
while time.time() - time_start < 240:
|
|
if ((time.time() - time_start) / 10) == 15:
|
|
ap_ssh = get_apnos(get_configuration["access_point"][0], pwd="../libs/apnos/")
|
|
vif_config = list(ap_ssh.get_vif_config_ssids())
|
|
vif_config.sort()
|
|
vif_state = list(ap_ssh.get_vif_state_ssids())
|
|
vif_state.sort()
|
|
for ssid in ssid_names:
|
|
test_cases[ssid] = dict()
|
|
test_cases[ssid]["vif_config"] = True if ssid in vif_config else False
|
|
test_cases[ssid]["vif_state"] = True if ssid in vif_state else False
|
|
ssid_names.sort()
|
|
if vif_config == ssid_names == vif_state:
|
|
print("Waiting for Radios to apply config ")
|
|
time.sleep(200)
|
|
break
|
|
time.sleep(10)
|
|
allure.attach(body=str(vif_config), name="vifC status on AP :: ")
|
|
allure.attach(body=str(vif_state), name="vifS status on AP :: ")
|
|
|
|
yield test_cases
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def passpoint_radius_server_info():
|
|
allure.attach(body=str(PASSPOINT_RADIUS_SERVER_DATA), name="Passpoint RADIUS server Info: ")
|
|
yield PASSPOINT_RADIUS_SERVER_DATA
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def passpoint_radius_accounting_server_info():
|
|
allure.attach(body=str(PASSPOINT_RADIUS_ACCOUNTING_SERVER_DATA), name="Passpoint RADIUS account server Info: ")
|
|
yield PASSPOINT_RADIUS_ACCOUNTING_SERVER_DATA
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def passpoint_provider_info():
|
|
allure.attach(body=str(PASSPOINT_PROVIDER_INFO), name="Passpoint Provider Info: ")
|
|
yield PASSPOINT_PROVIDER_INFO
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def passpoint_operator_info():
|
|
allure.attach(body=str(PASSPOINT_OPERATOR_INFO), name="Passpoint operator Info: ")
|
|
yield PASSPOINT_OPERATOR_INFO
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def passpoint_venue_info():
|
|
allure.attach(body=str(PASSPOINT_VENUE_INFO), name="Passpoint venue Info: ")
|
|
yield PASSPOINT_VENUE_INFO
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def passpoint_profile_info():
|
|
allure.attach(body=str(PASSPOINT_PROFILE_INFO), name="Passpoint profile Info: ")
|
|
yield PASSPOINT_PROFILE_INFO
|