mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-11-03 20:38:05 +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
 |