mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-11-04 04:48:01 +00:00 
			
		
		
		
	initial interop migration to 2.x
Signed-off-by: shivamcandela <shivam.thakur@candelatech.com>
This commit is contained in:
		@@ -434,15 +434,7 @@ CONFIGURATION = {
 | 
			
		||||
                'version': "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap101/20210729-edgecore_eap101-v2.0.0-rc2-02244b8-upgrade.bin"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "traffic_generator": [
 | 
			
		||||
            {
 | 
			
		||||
                "name": "Perfecto",
 | 
			
		||||
                "details": {
 | 
			
		||||
                    "securityToken": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw",
 | 
			
		||||
                    "perfectoURL": "tip"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
        "traffic_generator": {
 | 
			
		||||
                "name": "lanforge",
 | 
			
		||||
                "details": {
 | 
			
		||||
                    "ip": "10.28.3.22",  # 10.28.3.22
 | 
			
		||||
@@ -456,59 +448,14 @@ CONFIGURATION = {
 | 
			
		||||
                    "uplink": "1.1.eth3",
 | 
			
		||||
                    "2.4G-Station-Name": "wlan0",
 | 
			
		||||
                    "5G-Station-Name": "wlan1",
 | 
			
		||||
                    "AX-Station-Name": "ax"
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "interop-03": {
 | 
			
		||||
        "controller": {
 | 
			
		||||
            'url': 'https://sec-ucentral-qa01.cicd.lab.wlan.tip.build:16001',  # API base url for the controller
 | 
			
		||||
            'username': "tip@ucentral.com",
 | 
			
		||||
            'password': 'openwifi',
 | 
			
		||||
        },
 | 
			
		||||
        'access_point': [
 | 
			
		||||
            {
 | 
			
		||||
                'model': 'eap101',
 | 
			
		||||
                'mode': 'wifi5',
 | 
			
		||||
                'serial': '903cb36ae255',
 | 
			
		||||
                'jumphost': True,
 | 
			
		||||
                'ip': "10.28.3.102",
 | 
			
		||||
                'username': "lanforge",
 | 
			
		||||
                'password': "pumpkin77",
 | 
			
		||||
                'port': 22,
 | 
			
		||||
                'jumphost_tty': '/dev/ttyAP5',
 | 
			
		||||
                'version': "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap101/20210729-edgecore_eap101-v2.0.0-rc2-02244b8-upgrade.bin"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "traffic_generator": [
 | 
			
		||||
            {
 | 
			
		||||
                "name": "Perfecto",
 | 
			
		||||
                "details": {
 | 
			
		||||
                    "AX-Station-Name": "ax",
 | 
			
		||||
                    "securityToken": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw",
 | 
			
		||||
                    "perfectoURL": "tip"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "name": "lanforge",
 | 
			
		||||
                "details": {
 | 
			
		||||
                    "ip": "10.28.3.22",  # 10.28.3.22
 | 
			
		||||
                    "port": 8080,  # 8080
 | 
			
		||||
                    "ssh_port": 22,
 | 
			
		||||
                    "2.4G-Radio": ["1.1.wiphy0", "1.1.wiphy2"],
 | 
			
		||||
                    "5G-Radio": ["1.1.wiphy1", "1.1.wiphy3"],
 | 
			
		||||
                    "AX-Radio": ["1.1.wiphy4", "1.1.wiphy5", "1.1.wiphy6", "1.1.wiphy7"],
 | 
			
		||||
                    "upstream": "1.1.eth2",
 | 
			
		||||
                    "upstream_subnet": "10.28.2.1/24",
 | 
			
		||||
                    "uplink": "1.1.eth3",
 | 
			
		||||
                    "2.4G-Station-Name": "wlan0",
 | 
			
		||||
                    "5G-Station-Name": "wlan1",
 | 
			
		||||
                    "AX-Station-Name": "ax"
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    "basic-ext-03-03": {
 | 
			
		||||
        "controller": {
 | 
			
		||||
            'url': "https://wlan-portal-svc-nola-ext-03.cicd.lab.wlan.tip.build",  # API base url for the controller
 | 
			
		||||
 
 | 
			
		||||
@@ -508,7 +508,7 @@ def test_access_point(request, testbed, get_apnos, get_configuration):
 | 
			
		||||
                status = ap_ssh.get_manager_state()
 | 
			
		||||
            mgr_status.append(status)
 | 
			
		||||
    else:
 | 
			
		||||
        # for access_point_info in get_configuration['access_point']:
 | 
			
		||||
        # forgit access_point_info in get_configuration['access_point']:
 | 
			
		||||
        #     ap_ssh = get_apnos(access_point_info)
 | 
			
		||||
        #     status = ap_ssh.get_manager_state()
 | 
			
		||||
        #     if "ACTIVE" not in status:
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ import warnings
 | 
			
		||||
from selenium.common.exceptions import NoSuchElementException
 | 
			
		||||
import urllib3
 | 
			
		||||
from perfecto.model.model import Job, Project
 | 
			
		||||
from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,TestContext, TestResultFactory)
 | 
			
		||||
from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient, TestContext, TestResultFactory)
 | 
			
		||||
import pytest
 | 
			
		||||
import logging
 | 
			
		||||
import re
 | 
			
		||||
@@ -55,6 +55,7 @@ def get_PassPointConniOS_data(request):
 | 
			
		||||
    }
 | 
			
		||||
    yield passPoint_data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="function")
 | 
			
		||||
def get_APToMobileDevice_data(request):
 | 
			
		||||
    passPoint_data = {
 | 
			
		||||
@@ -66,12 +67,13 @@ def get_APToMobileDevice_data(request):
 | 
			
		||||
        "bundleId-iOS-Safari": request.config.getini("bundleId-iOS-Safari"),
 | 
			
		||||
        "downloadMbps": "//*[@id='knowledge-verticals-internetspeedtest__download']/P[@class='spiqle']",
 | 
			
		||||
        "UploadMbps": "//*[@id='knowledge-verticals-internetspeedtest__upload']/P[@class='spiqle']",
 | 
			
		||||
        #Android
 | 
			
		||||
        # Android
 | 
			
		||||
        "platformName-android": request.config.getini("platformName-android"),
 | 
			
		||||
        "appPackage-android": request.config.getini("appPackage-android")
 | 
			
		||||
    }
 | 
			
		||||
    yield passPoint_data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="function")
 | 
			
		||||
def get_AccessPointConn_data(request):
 | 
			
		||||
    passPoint_data = {
 | 
			
		||||
@@ -80,6 +82,7 @@ def get_AccessPointConn_data(request):
 | 
			
		||||
    }
 | 
			
		||||
    yield passPoint_data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="function")
 | 
			
		||||
def get_ToggleAirplaneMode_data(request):
 | 
			
		||||
    passPoint_data = {
 | 
			
		||||
@@ -91,18 +94,19 @@ def get_ToggleAirplaneMode_data(request):
 | 
			
		||||
        "bundleId-iOS-Safari": request.config.getini("bundleId-iOS-Safari"),
 | 
			
		||||
        "downloadMbps": "//*[@id='knowledge-verticals-internetspeedtest__download']/P[@class='spiqle']",
 | 
			
		||||
        "UploadMbps": "//*[@id='knowledge-verticals-internetspeedtest__upload']/P[@class='spiqle']",
 | 
			
		||||
        #Android
 | 
			
		||||
        # Android
 | 
			
		||||
        "platformName-android": request.config.getini("platformName-android"),
 | 
			
		||||
        "appPackage-android": request.config.getini("appPackage-android")
 | 
			
		||||
    }
 | 
			
		||||
    yield passPoint_data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="function")
 | 
			
		||||
def get_ToggleWifiMode_data(request):
 | 
			
		||||
    passPoint_data = {
 | 
			
		||||
        #iOS
 | 
			
		||||
        # iOS
 | 
			
		||||
        "bundleId-iOS-Settings": request.config.getini("bundleId-iOS-Settings"),
 | 
			
		||||
         #Android
 | 
			
		||||
        # Android
 | 
			
		||||
        "platformName-android": request.config.getini("platformName-android"),
 | 
			
		||||
        "appPackage-android": request.config.getini("appPackage-android")
 | 
			
		||||
    }
 | 
			
		||||
@@ -133,6 +137,7 @@ def get_lanforge_data(testbed):
 | 
			
		||||
def instantiate_profile():
 | 
			
		||||
    yield ProfileUtility
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="session")
 | 
			
		||||
def get_equipment_id(setup_controller, testbed, get_configuration):
 | 
			
		||||
    equipment_id_list = []
 | 
			
		||||
@@ -141,6 +146,7 @@ def get_equipment_id(setup_controller, testbed, get_configuration):
 | 
			
		||||
            serial_number=i['serial']))
 | 
			
		||||
    yield equipment_id_list
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@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,
 | 
			
		||||
@@ -192,399 +198,41 @@ def setup_vlan():
 | 
			
		||||
    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, 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
 | 
			
		||||
 | 
			
		||||
    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-" + 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/", sdk="1.x")
 | 
			
		||||
    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/", sdk="1.x")
 | 
			
		||||
 | 
			
		||||
    # 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
 | 
			
		||||
    # VLAN Setup
 | 
			
		||||
    if request.param["mode"] == "VLAN":
 | 
			
		||||
 | 
			
		||||
        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)
 | 
			
		||||
 | 
			
		||||
    # 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="function")
 | 
			
		||||
@@ -601,7 +249,7 @@ def update_ssid(request, instantiate_profile, setup_profile_data):
 | 
			
		||||
    yield status
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#@pytest.fixture(scope="module", autouse=True)
 | 
			
		||||
# @pytest.fixture(scope="module", autouse=True)
 | 
			
		||||
def failure_tracking_fixture(request):
 | 
			
		||||
    tests_failed_before_module = request.session.testsfailed
 | 
			
		||||
    print("\n\ntests_failed_before_module: ")
 | 
			
		||||
@@ -621,12 +269,11 @@ def get_vif_state(get_apnos, get_configuration):
 | 
			
		||||
    yield vif_state
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
 | 
			
		||||
def pytest_runtest_makereport(item, call):
 | 
			
		||||
    outcome = yield
 | 
			
		||||
    result = outcome.get_result()
 | 
			
		||||
    #testCaseStatusValue = ""
 | 
			
		||||
    # testCaseStatusValue = ""
 | 
			
		||||
    testCasePassedStatusValue = ""
 | 
			
		||||
    testCaseFailedStatusValue = ""
 | 
			
		||||
    testCaseNameList = []
 | 
			
		||||
@@ -637,24 +284,24 @@ def pytest_runtest_makereport(item, call):
 | 
			
		||||
    if result.when == 'call':
 | 
			
		||||
        item.session.results[item] = result
 | 
			
		||||
 | 
			
		||||
        #Gets the Current Test Case Name
 | 
			
		||||
        # Gets the Current Test Case Name
 | 
			
		||||
        TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0]
 | 
			
		||||
        nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName)
 | 
			
		||||
        #print("TestCasefullNameTEST: " + TestCaseFullName)
 | 
			
		||||
        # print("TestCasefullNameTEST: " + TestCaseFullName)
 | 
			
		||||
        try:
 | 
			
		||||
            #TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_')
 | 
			
		||||
            # TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_')
 | 
			
		||||
            TestCaseName = nCurrentTestMethodNameSplit.replace('test_', '')
 | 
			
		||||
            #print ("\nTestCaseName: " + TestCaseName)
 | 
			
		||||
            # print ("\nTestCaseName: " + TestCaseName)
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            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/")
 | 
			
		||||
            # print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/")
 | 
			
		||||
 | 
			
		||||
        #exception = call.excinfo.value
 | 
			
		||||
        #exception_class = call.excinfo.type
 | 
			
		||||
        #exception_class_name = call.excinfo.typename
 | 
			
		||||
        # exception = call.excinfo.value
 | 
			
		||||
        # exception_class = call.excinfo.type
 | 
			
		||||
        # exception_class_name = call.excinfo.typename
 | 
			
		||||
 | 
			
		||||
        #exception_traceback = call.excinfo.traceback
 | 
			
		||||
        # exception_traceback = call.excinfo.traceback
 | 
			
		||||
 | 
			
		||||
        if result.outcome == "failed":
 | 
			
		||||
            exception_type_and_message_formatted = call.excinfo.exconly()
 | 
			
		||||
@@ -667,7 +314,8 @@ def pytest_runtest_makereport(item, call):
 | 
			
		||||
 | 
			
		||||
            print("\n     TestStatus: " + testCaseFailedStatusValue)
 | 
			
		||||
            print("     FailureMsg: " + str(testCaseErrorMsg))
 | 
			
		||||
            reportPerfecto(TestCaseName, testCaseFailedStatusValue, testCaseErrorMsg, str(reporting_client.report_url()))
 | 
			
		||||
            reportPerfecto(TestCaseName, testCaseFailedStatusValue, testCaseErrorMsg,
 | 
			
		||||
                           str(reporting_client.report_url()))
 | 
			
		||||
 | 
			
		||||
        if result.outcome == "passed":
 | 
			
		||||
            testCasePassedStatusValue = "PASSED"
 | 
			
		||||
@@ -688,14 +336,14 @@ def pytest_runtest_makereport(item, call):
 | 
			
		||||
            testCaseReportURL.append(reporting_client.report_url())
 | 
			
		||||
            print("\n     TestStatus: " + testCaseSkippedStatusValue)
 | 
			
		||||
            print("     FailureMsg: " + str(testCaseErrorMsg))
 | 
			
		||||
            reportPerfecto(TestCaseName, testCaseSkippedStatusValue, testCaseErrorMsg, str(reporting_client.report_url()))
 | 
			
		||||
            reportPerfecto(TestCaseName, testCaseSkippedStatusValue, testCaseErrorMsg,
 | 
			
		||||
                           str(reporting_client.report_url()))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def pytest_sessionfinish(session, exitstatus):
 | 
			
		||||
 | 
			
		||||
    print()
 | 
			
		||||
    skipped_amount = 0
 | 
			
		||||
    #print('Perfecto TestCase Execution Status:', exitstatus)
 | 
			
		||||
    # print('Perfecto TestCase Execution Status:', 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)
 | 
			
		||||
@@ -712,7 +360,7 @@ def pytest_sessionfinish(session, exitstatus):
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        for index in range(len(testCaseNameList)):
 | 
			
		||||
            print(str(index+1) + ") " + str(testCaseNameList[index]) + " : " + str(testCaseStatusList[index]))
 | 
			
		||||
            print(str(index + 1) + ") " + str(testCaseNameList[index]) + " : " + str(testCaseStatusList[index]))
 | 
			
		||||
            print("     ReportURL: " + str(testCaseReportURL[index]))
 | 
			
		||||
            print("     FailureMsg: " + str(testCaseErrorMsg[index]) + "\n")
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
@@ -720,6 +368,7 @@ def pytest_sessionfinish(session, exitstatus):
 | 
			
		||||
 | 
			
		||||
    print('------------------------------------------------------------------\n\n\n\n')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="function")
 | 
			
		||||
def setup_perfectoMobile_android(request):
 | 
			
		||||
    from appium import webdriver
 | 
			
		||||
@@ -730,29 +379,31 @@ def setup_perfectoMobile_android(request):
 | 
			
		||||
    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"),
 | 
			
		||||
            'useAppiumForWeb' : 'false',
 | 
			
		||||
            'useAppiumForHybrid' : 'false',
 | 
			
		||||
            #'bundleId' : request.config.getini("appPackage-android"),
 | 
			
		||||
        'platformName': request.config.getini("platformName-android"),
 | 
			
		||||
        'model': request.config.getini("model-android"),
 | 
			
		||||
        'browserName': 'mobileOS',
 | 
			
		||||
        # 'automationName' : 'Appium',
 | 
			
		||||
        'securityToken': request.config.getini("securityToken"),
 | 
			
		||||
        'useAppiumForWeb': 'false',
 | 
			
		||||
        'useAppiumForHybrid': 'false',
 | 
			
		||||
        # 'bundleId' : request.config.getini("appPackage-android"),
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
 | 
			
		||||
    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:
 | 
			
		||||
        #TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_')
 | 
			
		||||
        # TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_')
 | 
			
		||||
        TestCaseName = nCurrentTestMethodNameSplit.replace('test_', '')
 | 
			
		||||
        print ("\n\nExecuting TestCase: " + TestCaseName)
 | 
			
		||||
        print("\n\nExecuting TestCase: " + TestCaseName)
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        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/")
 | 
			
		||||
        # print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/")
 | 
			
		||||
 | 
			
		||||
    projectname = request.config.getini("projectName")
 | 
			
		||||
    projectversion = request.config.getini("projectVersion")
 | 
			
		||||
@@ -761,8 +412,9 @@ def setup_perfectoMobile_android(request):
 | 
			
		||||
    tags = request.config.getini("reportTags")
 | 
			
		||||
    testCaseName = TestCaseName
 | 
			
		||||
 | 
			
		||||
    #print("\nSetting Perfecto ReportClient....")
 | 
			
		||||
    perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),Project(projectname, projectversion))
 | 
			
		||||
    # print("\nSetting Perfecto ReportClient....")
 | 
			
		||||
    perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),
 | 
			
		||||
                                                          Project(projectname, projectversion))
 | 
			
		||||
    reporting_client = PerfectoReportiumClient(perfecto_execution_context)
 | 
			
		||||
    reporting_client.test_start(testCaseName, TestContext([], "Perforce"))
 | 
			
		||||
    reportClient(reporting_client)
 | 
			
		||||
@@ -776,27 +428,29 @@ def setup_perfectoMobile_android(request):
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            print(" -- Exception While Tear Down --")
 | 
			
		||||
            driver.close()
 | 
			
		||||
            print (e)
 | 
			
		||||
            print(e)
 | 
			
		||||
        finally:
 | 
			
		||||
            try:
 | 
			
		||||
                driver.quit()
 | 
			
		||||
            except Exception as e:
 | 
			
		||||
                print(" -- Exception Not Able To Quit --")
 | 
			
		||||
                print (e)
 | 
			
		||||
                print(e)
 | 
			
		||||
 | 
			
		||||
    request.addfinalizer(teardown)
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
    global reporting_client  # declare a to be a global
 | 
			
		||||
    reporting_client = value  # this sets the global value of a
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def reportPerfecto(testCaseName, testCaseStatus, testErrorMsg, reportURL):
 | 
			
		||||
    global testCaseNameList   # declare a to be a global
 | 
			
		||||
    global testCaseNameList  # declare a to be a global
 | 
			
		||||
    global testCaseStatusList
 | 
			
		||||
    global testCaseErrorMsg
 | 
			
		||||
    global testCaseReportURL
 | 
			
		||||
@@ -806,6 +460,7 @@ def reportPerfecto(testCaseName, testCaseStatus, testErrorMsg, reportURL):
 | 
			
		||||
    testCaseErrorMsg.append(str(testErrorMsg))
 | 
			
		||||
    testCaseReportURL.append(reportURL)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="class")
 | 
			
		||||
def setup_perfectoMobileWeb(request):
 | 
			
		||||
    from selenium import webdriver
 | 
			
		||||
@@ -816,13 +471,15 @@ def setup_perfectoMobileWeb(request):
 | 
			
		||||
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
 | 
			
		||||
 | 
			
		||||
    capabilities = {
 | 
			
		||||
            'platformName': request.config.getini("platformName-iOS"),
 | 
			
		||||
            'model': request.config.getini("model-iOS"),
 | 
			
		||||
            'browserName': request.config.getini("browserType-iOS"),
 | 
			
		||||
            'securityToken' : request.config.getini("securityToken"),
 | 
			
		||||
        'platformName': request.config.getini("platformName-iOS"),
 | 
			
		||||
        'model': request.config.getini("model-iOS"),
 | 
			
		||||
        'browserName': request.config.getini("browserType-iOS"),
 | 
			
		||||
        'securityToken': request.config.getini("securityToken"),
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    rdriver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
 | 
			
		||||
    rdriver = webdriver.Remote(
 | 
			
		||||
        'https://' + request.config.getini("perfectoURL") + '.perfectomobile.com/nexperience/perfectomobile/wd/hub',
 | 
			
		||||
        capabilities)
 | 
			
		||||
    rdriver.implicitly_wait(35)
 | 
			
		||||
 | 
			
		||||
    projectname = request.config.getini("projectName")
 | 
			
		||||
@@ -833,7 +490,8 @@ def setup_perfectoMobileWeb(request):
 | 
			
		||||
    testCaseName = request.config.getini("jobName")
 | 
			
		||||
 | 
			
		||||
    print("Setting Perfecto ReportClient....")
 | 
			
		||||
    perfecto_execution_context = PerfectoExecutionContext(rdriver, tags, Job(jobname, jobnumber),Project(projectname, projectversion))
 | 
			
		||||
    perfecto_execution_context = PerfectoExecutionContext(rdriver, tags, Job(jobname, jobnumber),
 | 
			
		||||
                                                          Project(projectname, projectversion))
 | 
			
		||||
    reporting_client = PerfectoReportiumClient(perfecto_execution_context)
 | 
			
		||||
    reporting_client.test_start(testCaseName, TestContext([], "Perforce"))
 | 
			
		||||
 | 
			
		||||
@@ -845,20 +503,21 @@ def setup_perfectoMobileWeb(request):
 | 
			
		||||
            rdriver.close()
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            print(" -- Exception Not Able To close --")
 | 
			
		||||
            print (e.message)
 | 
			
		||||
            print(e.message)
 | 
			
		||||
        finally:
 | 
			
		||||
            try:
 | 
			
		||||
                rdriver.quit()
 | 
			
		||||
            except Exception as e:
 | 
			
		||||
                print(" -- Exception Not Able To Quit --")
 | 
			
		||||
                print (e.message)
 | 
			
		||||
                print(e.message)
 | 
			
		||||
 | 
			
		||||
    request.addfinalizer(teardown)
 | 
			
		||||
 | 
			
		||||
    if rdriver is None:
 | 
			
		||||
        yield -1
 | 
			
		||||
    else:
 | 
			
		||||
        yield rdriver,reporting_client
 | 
			
		||||
        yield rdriver, reporting_client
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture(scope="function")
 | 
			
		||||
def setup_perfectoMobile_iOS(request):
 | 
			
		||||
@@ -870,30 +529,32 @@ def setup_perfectoMobile_iOS(request):
 | 
			
		||||
    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',
 | 
			
		||||
            'autoAcceptAlerts' : 'true',
 | 
			
		||||
            #'bundleId' : request.config.getini("bundleId-iOS"),
 | 
			
		||||
            'useAppiumForHybrid' : 'false',
 | 
			
		||||
        'platformName': request.config.getini("platformName-iOS"),
 | 
			
		||||
        'model': request.config.getini("model-iOS"),
 | 
			
		||||
        'browserName': 'safari',
 | 
			
		||||
        # 'automationName' : 'Appium',
 | 
			
		||||
        'securityToken': request.config.getini("securityToken"),
 | 
			
		||||
        'useAppiumForWeb': 'false',
 | 
			
		||||
        'autoAcceptAlerts': 'true',
 | 
			
		||||
        # 'bundleId' : request.config.getini("bundleId-iOS"),
 | 
			
		||||
        'useAppiumForHybrid': 'false',
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities)
 | 
			
		||||
    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:
 | 
			
		||||
        #TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_')
 | 
			
		||||
        # TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_')
 | 
			
		||||
        TestCaseName = nCurrentTestMethodNameSplit.replace('test_', '')
 | 
			
		||||
        print ("\n\nExecuting TestCase: " + TestCaseName)
 | 
			
		||||
        print("\n\nExecuting TestCase: " + TestCaseName)
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        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/")
 | 
			
		||||
        # print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/")
 | 
			
		||||
 | 
			
		||||
    projectname = request.config.getini("projectName")
 | 
			
		||||
    projectversion = request.config.getini("projectVersion")
 | 
			
		||||
@@ -903,7 +564,8 @@ def setup_perfectoMobile_iOS(request):
 | 
			
		||||
    testCaseName = TestCaseName
 | 
			
		||||
 | 
			
		||||
    print("\nSetting Perfecto ReportClient....")
 | 
			
		||||
    perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),Project(projectname, projectversion))
 | 
			
		||||
    perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),
 | 
			
		||||
                                                          Project(projectname, projectversion))
 | 
			
		||||
    reporting_client = PerfectoReportiumClient(perfecto_execution_context)
 | 
			
		||||
    reporting_client.test_start(testCaseName, TestContext([], "Perforce"))
 | 
			
		||||
    reportClient(reporting_client)
 | 
			
		||||
@@ -917,18 +579,17 @@ def setup_perfectoMobile_iOS(request):
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            print(" -- Exception While Tear Down --")
 | 
			
		||||
            driver.close()
 | 
			
		||||
            print (e)
 | 
			
		||||
            print(e)
 | 
			
		||||
        finally:
 | 
			
		||||
            try:
 | 
			
		||||
                driver.quit()
 | 
			
		||||
            except Exception as e:
 | 
			
		||||
                print(" -- Exception Not Able To Quit --")
 | 
			
		||||
                print (e)
 | 
			
		||||
                print(e)
 | 
			
		||||
 | 
			
		||||
    request.addfinalizer(teardown)
 | 
			
		||||
 | 
			
		||||
    if driver is None:
 | 
			
		||||
        yield -1
 | 
			
		||||
    else:
 | 
			
		||||
        yield driver,reporting_client
 | 
			
		||||
 | 
			
		||||
        yield driver, reporting_client
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user