mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2025-11-26 15:54:54 +00:00
367 lines
15 KiB
Python
367 lines
15 KiB
Python
"""
|
|
conftest.py : Contains fixtures that are specific to basic testbed environment
|
|
|
|
Basic Test Scenario : 1 AP, 1 LANforge, 1 Controller Instance
|
|
|
|
Includes:
|
|
|
|
Setup:
|
|
setup_profiles
|
|
create_profiles
|
|
|
|
Utilities:
|
|
update_ssid
|
|
|
|
Information:
|
|
Setup Fixtures: Every Test case Needs to use setup fixtures
|
|
Setup Fixtures can be customised for all different levels of execution:
|
|
session level
|
|
package level
|
|
module level
|
|
class level
|
|
function level
|
|
|
|
"""
|
|
|
|
|
|
|
|
import sys
|
|
import os
|
|
import time
|
|
|
|
for folder in 'py-json', 'py-scripts':
|
|
if folder not in sys.path:
|
|
sys.path.append(f'../lanforge/lanforge-scripts/{folder}')
|
|
|
|
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')
|
|
|
|
|
|
sys.path.append(
|
|
os.path.dirname(
|
|
os.path.realpath(__file__)
|
|
)
|
|
)
|
|
if "libs" not in sys.path:
|
|
sys.path.append(f'../libs')
|
|
|
|
from apnos.apnos import APNOS
|
|
from controller.controller import Controller
|
|
from controller.controller import ProfileUtility
|
|
from controller.controller import FirmwareUtility
|
|
import pytest
|
|
import logging
|
|
from configuration import RADIUS_SERVER_DATA
|
|
from configuration import TEST_CASES
|
|
from configuration import CONFIGURATION
|
|
from configuration import FIRMWARE
|
|
from testrails.testrail_api import APIClient
|
|
from testrails.reporting import Reporting
|
|
from cv_test_manager import cv_test
|
|
from create_chamberview import CreateChamberview
|
|
from create_chamberview_dut import DUT
|
|
|
|
"""
|
|
Basic Setup Collector
|
|
"""
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
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": CONFIGURATION[testbed]['traffic_generator']['details']['upstream'] + ".100",
|
|
"vlan": 100
|
|
}
|
|
yield lanforge_data
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def instantiate_profile(instantiate_controller):
|
|
try:
|
|
profile_object = ProfileUtility(sdk_client=instantiate_controller)
|
|
except:
|
|
profile_object = False
|
|
yield profile_object
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def get_equipment_id(instantiate_controller, testbed):
|
|
equipment_id = 0
|
|
if len(CONFIGURATION[testbed]['access_point']) == 1:
|
|
equipment_id = instantiate_controller.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="function")
|
|
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="function")
|
|
def check_ap_firmware_cloud(instantiate_controller, get_equipment_id):
|
|
yield instantiate_controller.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 = []
|
|
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, testbed, 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()
|
|
profile_data = {
|
|
"name": "RF-Profile-"+CONFIGURATION[testbed]['access_point'][0]['mode']+CONFIGURATION[testbed]['access_point'][0]['model'] + mode
|
|
}
|
|
instantiate_profile.delete_profile_by_name(profile_name=profile_data['name'])
|
|
instantiate_profile.set_rf_profile(profile_data=profile_data, mode=CONFIGURATION[testbed]['access_point'][0]['mode'])
|
|
# Create RF Profile Here
|
|
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
|
|
|
|
@pytest.fixture(scope="package")
|
|
def create_lanforge_chamberview(get_lanforge_data):
|
|
ip = get_lanforge_data["lanforge_ip"]
|
|
port = get_lanforge_data["lanforge-port-number"]
|
|
upstream_port = get_lanforge_data["lanforge_bridge_port"]#eth2
|
|
eth_vlan = get_lanforge_data["lanforge_vlan_port"]#eth2.100
|
|
vlan = get_lanforge_data["vlan"]
|
|
scenario_name = "TIP-test"
|
|
|
|
print(ip)
|
|
print(upstream_port)
|
|
print(eth_vlan)
|
|
print(vlan)
|
|
# "profile_link 1.1 upstream-dhcp 1 NA NA eth2,AUTO -1 NA"
|
|
# "profile_link 1.1 uplink-nat 1 'DUT: upstream LAN 10.28.2.1/24' NA eth1,eth2 -1 NA"
|
|
raw_line = [
|
|
["profile_link 1.1 upstream-dhcp 1 NA NA "+ upstream_port +",AUTO -1 NA"]
|
|
# ["profile_link 1.1 uplink-nat 1 'DUT: upstream LAN 10.28.2.1/24' NA eth1,eth2 -1 NA"]
|
|
]
|
|
Create_Chamberview = CreateChamberview(ip, port)
|
|
Create_Chamberview.clean_cv_scenario(type="Network-Connectivity", scenario_name=scenario_name)
|
|
|
|
Create_Chamberview.setup_scenario(create_scenario=scenario_name,
|
|
raw_line=raw_line)
|
|
|
|
Create_Chamberview.build_scenario(scenario_name)
|
|
Create_Chamberview.show_text_blob(None, None, True) # Show changes on GUI
|
|
yield Create_Chamberview
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def create_lanforge_chamberview_dut(get_lanforge_data):
|
|
ip = get_lanforge_data["lanforge_ip"]
|
|
port = get_lanforge_data["lanforge-port-number"]
|
|
dut = DUT(lfmgr=ip,
|
|
port=port,
|
|
dut_name="TIP-Test",
|
|
sw_version="pending-d89798e",
|
|
hw_version="ECW5410",
|
|
model_num="ECW5410"
|
|
)
|
|
yield dut
|