mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2025-11-01 03:17:54 +00:00
287 lines
12 KiB
Python
287 lines
12 KiB
Python
import pytest
|
|
|
|
import datetime
|
|
import sys
|
|
import os
|
|
import time
|
|
|
|
sys.path.append(
|
|
os.path.dirname(
|
|
os.path.realpath(__file__)
|
|
)
|
|
)
|
|
|
|
if 'cloudsdk' not in sys.path:
|
|
sys.path.append(f'../libs/cloudsdk')
|
|
if 'apnos' not in sys.path:
|
|
sys.path.append(f'../libs/apnos')
|
|
if 'testrails' not in sys.path:
|
|
sys.path.append(f'../libs/testrails')
|
|
|
|
from apnos import APNOS
|
|
from cloudsdk import CloudSDK
|
|
from cloudsdk import ProfileUtility
|
|
from cloudsdk import FirmwareUtility
|
|
|
|
from configuration import RADIUS_SERVER_DATA
|
|
from configuration import TEST_CASES
|
|
from configuration import CONFIGURATION
|
|
|
|
"""
|
|
Basic Setup Collector
|
|
"""
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def get_lanforge_data(testbed):
|
|
lanforge_data = {}
|
|
if CONFIGURATION[testbed]['traffic_generator']['name'] == 'lanforge':
|
|
lanforge_data = {
|
|
"lanforge_ip": CONFIGURATION[testbed]['traffic_generator']['details']['ip'],
|
|
"lanforge-port-number": CONFIGURATION[testbed]['traffic_generator']['details']['port'],
|
|
"lanforge_2dot4g": CONFIGURATION[testbed]['traffic_generator']['details']['2.4G-Radio'][0],
|
|
"lanforge_5g": CONFIGURATION[testbed]['traffic_generator']['details']['5G-Radio'][0],
|
|
"lanforge_2dot4g_prefix": CONFIGURATION[testbed]['traffic_generator']['details']['2.4G-Station-Name'],
|
|
"lanforge_5g_prefix": CONFIGURATION[testbed]['traffic_generator']['details']['5G-Station-Name'],
|
|
"lanforge_2dot4g_station": CONFIGURATION[testbed]['traffic_generator']['details']['2.4G-Station-Name'],
|
|
"lanforge_5g_station": CONFIGURATION[testbed]['traffic_generator']['details']['5G-Station-Name'],
|
|
"lanforge_bridge_port": CONFIGURATION[testbed]['traffic_generator']['details']['upstream'],
|
|
"lanforge_vlan_port": "eth1.100",
|
|
"vlan": 100
|
|
}
|
|
yield lanforge_data
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def instantiate_profile(instantiate_cloudsdk):
|
|
try:
|
|
profile_object = ProfileUtility(sdk_client=instantiate_cloudsdk)
|
|
except:
|
|
profile_object = False
|
|
yield profile_object
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def get_equipment_id(instantiate_cloudsdk, testbed):
|
|
equipment_id = 0
|
|
if len(CONFIGURATION[testbed]['access_point']) == 1:
|
|
equipment_id = instantiate_cloudsdk.get_equipment_id(
|
|
serial_number=CONFIGURATION[testbed]['access_point'][0]['serial'])
|
|
yield equipment_id
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def upload_firmware(should_upload_firmware, instantiate_firmware, get_latest_firmware):
|
|
firmware_id = instantiate_firmware.upload_fw_on_cloud(fw_version=get_latest_firmware,
|
|
force_upload=should_upload_firmware)
|
|
yield firmware_id
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def upgrade_firmware(request, instantiate_firmware, get_equipment_id, check_ap_firmware_cloud, get_latest_firmware,
|
|
should_upgrade_firmware):
|
|
if get_latest_firmware != check_ap_firmware_cloud:
|
|
if request.config.getoption("--skip-upgrade"):
|
|
status = "skip-upgrade"
|
|
else:
|
|
status = instantiate_firmware.upgrade_fw(equipment_id=get_equipment_id, force_upload=False,
|
|
force_upgrade=should_upgrade_firmware)
|
|
else:
|
|
if should_upgrade_firmware:
|
|
status = instantiate_firmware.upgrade_fw(equipment_id=get_equipment_id, force_upload=False,
|
|
force_upgrade=should_upgrade_firmware)
|
|
else:
|
|
status = "skip-upgrade"
|
|
yield status
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def check_ap_firmware_cloud(instantiate_cloudsdk, get_equipment_id):
|
|
yield instantiate_cloudsdk.get_ap_firmware_old_method(equipment_id=get_equipment_id)
|
|
|
|
|
|
"""
|
|
|
|
Profiles Related Fixtures
|
|
|
|
"""
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def get_current_profile_cloud(instantiate_profile):
|
|
ssid_names = []
|
|
# print(instantiate_profile.profile_creation_ids["ssid"])
|
|
for i in instantiate_profile.profile_creation_ids["ssid"]:
|
|
ssid_names.append(instantiate_profile.get_ssid_name_by_profile_id(profile_id=i))
|
|
yield ssid_names
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def setup_profiles(request, create_profiles, instantiate_profile, get_equipment_id, get_current_profile_cloud, testbed):
|
|
test_cases = {}
|
|
mode = str(request.param[0]).lower()
|
|
try:
|
|
instantiate_profile.push_profile_old_method(equipment_id=get_equipment_id)
|
|
except:
|
|
print("failed to create AP Profile")
|
|
ap_ssh = APNOS(CONFIGURATION[testbed]['access_point'][0])
|
|
get_current_profile_cloud.sort()
|
|
# This loop will check the VIF Config with cloud profile
|
|
for i in range(0, 18):
|
|
vif_config = list(ap_ssh.get_vif_config_ssids())
|
|
vif_config.sort()
|
|
print(vif_config)
|
|
print(get_current_profile_cloud)
|
|
if get_current_profile_cloud == vif_config:
|
|
test_cases[mode + '_vifc'] = True
|
|
break
|
|
time.sleep(10)
|
|
ap_ssh = APNOS(CONFIGURATION[testbed]['access_point'][0])
|
|
# This loop will check the VIF Config with VIF State
|
|
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[mode + '_vifs'] = True
|
|
break
|
|
time.sleep(10)
|
|
yield test_cases
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def create_profiles(request, get_security_flags, get_markers, instantiate_profile, setup_profile_data):
|
|
profile_id = {"ssid": [], "rf": None, "radius": None, "equipment_ap": None}
|
|
mode = str(request.param[0])
|
|
test_cases = {}
|
|
if mode not in ["BRIDGE", "NAT", "VLAN"]:
|
|
print("Invalid Mode: ", mode)
|
|
yield False
|
|
instantiate_profile.delete_profile_by_name(profile_name="Equipment-AP-" + mode)
|
|
for i in setup_profile_data[mode]:
|
|
for j in setup_profile_data[mode][i]:
|
|
instantiate_profile.delete_profile_by_name(
|
|
profile_name=setup_profile_data[mode][i][j]['profile_name'])
|
|
instantiate_profile.delete_profile_by_name(profile_name="Automation-Radius-Profile-" + mode)
|
|
instantiate_profile.get_default_profiles()
|
|
# if get_markers["wifi5"]:
|
|
# # Create RF Profile
|
|
# pass
|
|
# if get_markers["wifi6"]:
|
|
# # Create RF Profile
|
|
# pass
|
|
|
|
# Create RF Profile Here
|
|
instantiate_profile.set_rf_profile()
|
|
if get_markers["radius"]:
|
|
radius_info = RADIUS_SERVER_DATA
|
|
radius_info["name"] = "Automation-Radius-Profile-" + mode
|
|
try:
|
|
instantiate_profile.create_radius_profile(radius_info=radius_info)
|
|
test_cases['radius_profile'] = True
|
|
except:
|
|
test_cases['radius_profile'] = False
|
|
for i in get_security_flags:
|
|
if get_markers[i] and i == "open":
|
|
if get_markers["twog"]:
|
|
profile_data = setup_profile_data[mode]["OPEN"]["2G"]
|
|
try:
|
|
id = instantiate_profile.create_open_ssid_profile(two4g=True, fiveg=False,
|
|
profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_2g_open_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_2g_open_' + mode.lower()] = False
|
|
if get_markers["fiveg"]:
|
|
profile_data = setup_profile_data[mode]["OPEN"]["5G"]
|
|
try:
|
|
id = instantiate_profile.create_open_ssid_profile(two4g=False, fiveg=True,
|
|
profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_5g_open_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_5g_open_' + mode.lower()] = False
|
|
if get_markers[i] and i == "wpa":
|
|
if get_markers["twog"]:
|
|
profile_data = setup_profile_data[mode]["WPA"]["2G"]
|
|
try:
|
|
id = instantiate_profile.create_wpa_ssid_profile(two4g=True, fiveg=False, profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_2g_wpa_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_5g_wpa_' + mode.lower()] = False
|
|
if get_markers["fiveg"]:
|
|
profile_data = setup_profile_data[mode]["WPA"]["5G"]
|
|
try:
|
|
id = instantiate_profile.create_wpa_ssid_profile(two4g=False, fiveg=True, profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_5g_wpa_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_5g_wpa_' + mode.lower()] = False
|
|
if get_markers[i] and i == "wpa2_personal":
|
|
if get_markers["twog"]:
|
|
profile_data = setup_profile_data[mode]["WPA2_P"]["2G"]
|
|
try:
|
|
id = instantiate_profile.create_wpa2_personal_ssid_profile(two4g=True, fiveg=False,
|
|
profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_2g_wpa2_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_2g_wpa2_' + mode.lower()] = False
|
|
if get_markers["fiveg"]:
|
|
profile_data = setup_profile_data[mode]["WPA2_P"]["5G"]
|
|
try:
|
|
id = instantiate_profile.create_wpa2_personal_ssid_profile(two4g=False, fiveg=True,
|
|
profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_5g_wpa2_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_5g_wpa2_' + mode.lower()] = False
|
|
if get_markers[i] and i == "wpa2_enterprise":
|
|
if get_markers["twog"]:
|
|
profile_data = setup_profile_data[mode]["WPA2_E"]["2G"]
|
|
try:
|
|
id = instantiate_profile.create_wpa2_enterprise_ssid_profile(two4g=True, fiveg=False,
|
|
profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_2g_eap_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_2g_eap_' + mode.lower()] = False
|
|
if get_markers["fiveg"]:
|
|
profile_data = setup_profile_data[mode]["WPA2_E"]["5G"]
|
|
try:
|
|
id = instantiate_profile.create_wpa2_enterprise_ssid_profile(two4g=False, fiveg=True,
|
|
profile_data=profile_data)
|
|
profile_id["ssid"].append(profile_data['ssid_name'])
|
|
test_cases['ssid_5g_eap_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ssid_5g_eap_' + mode.lower()] = False
|
|
|
|
# Create Equipment AP Profile Here
|
|
profile_data = {
|
|
"profile_name": "Equipment-AP-" + mode
|
|
}
|
|
try:
|
|
instantiate_profile.set_ap_profile(profile_data=profile_data)
|
|
test_cases['ap_' + mode.lower()] = True
|
|
except:
|
|
test_cases['ap_' + mode.lower()] = False
|
|
yield test_cases
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def update_ssid(request, instantiate_profile, setup_profile_data):
|
|
requested_profile = str(request.param).replace(" ", "").split(",")
|
|
profile = setup_profile_data[requested_profile[0]][requested_profile[1]][requested_profile[2]]
|
|
status = instantiate_profile.update_ssid_name(profile_name=profile["profile_name"],
|
|
new_profile_name=requested_profile[3])
|
|
setup_profile_data[requested_profile[0]][requested_profile[1]][requested_profile[2]]["profile_name"] = \
|
|
requested_profile[3]
|
|
setup_profile_data[requested_profile[0]][requested_profile[1]][requested_profile[2]]["ssid_name"] = \
|
|
requested_profile[3]
|
|
time.sleep(90)
|
|
yield status
|