├── .allure-overview ├── generate_overview.py ├── index.html └── overviews.json ├── .ananda ├── api_wrapper.py └── requirements.txt ├── .dockerignore ├── .github ├── actions │ ├── allure-report-to-s3 │ │ └── action.yml │ ├── build-and-push-docker │ │ └── action.yml │ ├── cleanup-docker │ │ └── action.yml │ ├── deploy-sdk-docker-compose │ │ └── action.yml │ ├── deploy-virtual-ap-instance │ │ └── action.yml │ ├── generate-allure-report │ │ └── action.yml │ └── run-tests │ │ └── action.yml ├── tools │ └── generate_directory_index.py └── workflows │ ├── advanced.yml │ ├── cgw-dev-deployment.yaml │ ├── enforce-jira-issue-key.yml │ ├── get_redirector_url.yml │ ├── interop.yml │ ├── interop_modified.yml │ ├── interop_performance.yml │ ├── manual.yml │ ├── ow_docker-compose-upgrade-test.yml │ ├── ow_docker-compose.yml │ ├── ow_k8s.yml │ ├── performance.yml │ ├── quali-advanced.yml │ ├── quali-basic-manual.yml │ ├── quali.yml │ ├── regression.yml │ ├── restart_gw.yml │ ├── uc_loadsim.yml │ ├── ucentralgw-cluster-cleanup.yaml │ ├── ucentralgw-demo-deployment.yaml │ ├── ucentralgw-dev-deployment.yaml │ ├── ucentralgw-qa-deployment.yaml │ ├── ucentralgw-qa2-deployment.yaml │ ├── update-badges.yml │ ├── update-overviews.yml │ └── update-tests.yml ├── .gitignore ├── .img ├── Tools_and_Testing.png ├── automation_overview.png ├── interop-count.svg ├── performance-count.svg ├── sanity-count.svg └── total-count.svg ├── .quali ├── common.py ├── get_configuration.py ├── requirements.txt ├── start_reservation.py └── stop_reservation.py ├── LICENSE ├── NOTES.txt ├── README.md ├── TEST_PLANS.md ├── __init__.py ├── config ├── 5g_ssid.json ├── 5g_ssid1.json ├── 8ssid_2g.json ├── Bridge_6ssid.json ├── Nat.json ├── Ratelimit.json ├── VLAN_2GHz 8ssid.json ├── VLAN_4ssid_2g.json ├── VLAN_4ssid_5g.json ├── VLAN_5GHz 8ssid.json ├── VLAN_6ssid.json ├── nat_testcases.json ├── ratelimit_2.4_noteffect_otherSSID.json ├── ratelimit_2.4disabled_case.json ├── ratelimit_2.4enable_cases.json ├── ratelimit_5_noteffect_otherSSID.json ├── ratelimit_5disable_cases.json ├── ratelimit_5enable_cases.json ├── ratelimit_70mbps.json ├── ratelimt_2ssids.json ├── wpa 2.4 bridge.json ├── wpa2_2.4_bridge.json └── wpa2_nat.json ├── dependencies.bash ├── docker ├── Dockerfile └── README.md ├── dut_lib_template ├── README.md ├── SetupLibrary.py ├── __init__.py ├── ap_lib.py ├── dut_lib_template.py ├── openwrt_ctl.py ├── schemacheck.py └── setup.py ├── grafana └── performance.json ├── libs ├── README.md ├── SetupLibrary.py ├── __init__.py ├── apnos │ ├── README.md │ ├── __init__.py │ ├── apnos.py │ └── openwrt_ctl.py ├── controller │ ├── README.md │ ├── __init__.py │ ├── controller_1x │ │ ├── __init__.py │ │ └── controller.py │ ├── controller_2x │ │ ├── __init__.py │ │ └── controller.py │ └── controller_3x │ │ ├── __init__.py │ │ └── controller.py ├── lanforge │ └── lf_tests.py ├── network_connectivity │ ├── NetworkConnectivity.py │ └── __init__.py ├── openwrt_ctl.py ├── perfecto_interop │ ├── README.md │ ├── __init__.py │ ├── android_libs.py │ ├── android_tests.py │ ├── ios_lib.py │ ├── ios_libs.py │ ├── ios_tests.py │ ├── perfecto_interop.py │ └── setup.py ├── testrails │ ├── __init__.py │ ├── reporting.py │ └── testrail_api.py ├── tip_1x │ ├── __init__.py │ └── controller.py └── tip_2x │ ├── README.md │ ├── SetupLibrary.py │ ├── __init__.py │ ├── ap_lib.py │ ├── controller.py │ ├── openwrt_ctl.py │ ├── schemacheck.py │ ├── setup.py │ └── tip_2x.py ├── requirements.txt ├── setup_env.bash ├── setup_tunnel.bash ├── tests ├── .pylintrc ├── README.md ├── __init__.py ├── access_point_tests │ ├── __init__.py │ └── master_config_tests │ │ ├── __init__.py │ │ ├── master-config-1.json │ │ ├── master-config-2.json │ │ ├── master-config-3.json │ │ └── test_master_config.py ├── configuration.py ├── conftest.py ├── controller_tests │ ├── __init__.py │ ├── conftest.py │ └── ucentral_gateway │ │ ├── __init__.py │ │ ├── test_analyticservice.py │ │ ├── test_fms_service.py │ │ ├── test_gatewayservice.py │ │ ├── test_provisionservice.py │ │ └── test_securityservice.py ├── e2e │ ├── UseCase │ │ ├── __init__.py │ │ └── test_API_provision.py │ ├── __init__.py │ ├── advanced │ │ ├── __init__.py │ │ ├── advanced-config.json │ │ ├── air_time_fairness_test │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ └── test_bridge_air_time_fairness.py │ │ ├── ap_co-existence │ │ │ └── __init__.py │ │ ├── conftest.py │ │ ├── downlink_mu_mimo_test │ │ │ ├── __init__.py │ │ │ ├── open │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ │ ├── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ │ ├── wpa3_personal │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ │ └── wpa_personal │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ ├── maximum_connection │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ └── test_bridge_maximum_connection.py │ │ ├── maximum_throughput_test │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ └── test_bridge_max_throughput.py │ │ ├── multi_association_disassociation │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ └── test_bridge_association_disassociation.py │ │ ├── multi_station_performance │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ └── test_bridge_multi_sta_performance.py │ │ ├── rate_vs_range │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ └── test_bridge_mode.py │ │ ├── receiver_sensitivity │ │ │ ├── __init__.py │ │ │ └── test_rx_sens_bridge_mode.py │ │ ├── roam_test │ │ │ ├── __init__.py │ │ │ ├── hard_roam │ │ │ │ ├── OTA │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── roam-config.json │ │ │ │ │ └── test_roam_ota.py │ │ │ │ ├── OTD │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── roam-config.json │ │ │ │ │ └── test_roam_otd.py │ │ │ │ └── __init__.py │ │ │ └── roam_by_attenuation │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_5g_to_5g.py │ │ │ │ └── test_bridge_single_client.py │ │ └── spatial_consistency │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ ├── __init__.py │ │ │ └── test_bridge_mode.py │ ├── basic │ │ ├── README.md │ │ ├── __init__.py │ │ ├── advanced_captive_portal_tests │ │ │ ├── __init__.py │ │ │ ├── external_captive_portal_tests │ │ │ │ ├── __init__.py │ │ │ │ └── open │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_click_to_continue_bridge.py │ │ │ │ │ ├── test_click_to_continue_nat.py │ │ │ │ │ ├── test_local_user_and_pass_bridge.py │ │ │ │ │ └── test_local_user_and_pass_nat.py │ │ │ └── internal_captive_portal_tests │ │ │ │ ├── __init__.py │ │ │ │ └── open │ │ │ │ ├── __init__.py │ │ │ │ ├── test_click_to_continue_bridge.py │ │ │ │ ├── test_click_to_continue_nat.py │ │ │ │ ├── test_local_user_and_pass_bridge.py │ │ │ │ ├── test_local_user_and_pass_nat.py │ │ │ │ ├── test_radius_user_and_pass_bridge.py │ │ │ │ └── test_radius_user_and_pass_nat.py │ │ ├── configuration_tests │ │ │ ├── __init__.py │ │ │ ├── bridge_mode │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_security_modes_configuration.py │ │ │ │ └── test_general_security_modes_configuration.py │ │ │ ├── nat_mode │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_security_modes_configuration.py │ │ │ │ └── test_general_security_modes_configuration.py │ │ │ └── vlan_mode │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_security_modes_configuration.py │ │ │ │ └── test_general_security_modes_configuration.py │ │ ├── conftest.1 │ │ ├── conftest.py │ │ ├── dfs_test │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ ├── dfs_20MHz │ │ │ │ ├── __init__.py │ │ │ │ └── test_dfs_20_bridge.py │ │ │ │ ├── dfs_40MHz │ │ │ │ ├── __init__.py │ │ │ │ └── test_dfs_40_bridge.py │ │ │ │ └── dfs_80MHz │ │ │ │ ├── __init__.py │ │ │ │ └── test_dfs_80_bridge.py │ │ ├── endurance_test │ │ │ ├── __init__.py │ │ │ ├── bridge_mode │ │ │ │ ├── __init__.py │ │ │ │ └── test_ap_stability.py │ │ │ └── nat_mode │ │ │ │ └── __init__.py │ │ ├── hot_configuration_reloads │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ └── test_hot_config_reload_bridge.py │ │ ├── multi_ssid_tests │ │ │ ├── __init__.py │ │ │ └── bridge_mode │ │ │ │ ├── __init__.py │ │ │ │ └── test_multi_ssid.py │ │ ├── performance_tests │ │ │ ├── AX_capacity │ │ │ │ ├── __init__.py │ │ │ │ └── wpa2_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ ├── __init__.py │ │ │ ├── client_scale_test │ │ │ │ ├── __init__.py │ │ │ │ ├── open │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ └── test_nat_mode.py │ │ │ │ ├── wpa2_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ └── test_nat_mode.py │ │ │ │ ├── wpa3_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_bridge_mode.py │ │ │ │ └── wpa_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_bridge_mode.py │ │ │ ├── dataplane_throughput_test │ │ │ │ ├── __init__.py │ │ │ │ ├── open_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ │ ├── wpa2_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ │ ├── wpa3_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ │ └── wpa_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ ├── dual_band_performance_test │ │ │ │ ├── __init__.py │ │ │ │ ├── open │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ │ ├── wap3_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ │ ├── wpa2_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ │ └── wpa_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ ├── multi_station_throughput │ │ │ │ ├── __init__.py │ │ │ │ └── wpa2_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bridge_mode │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_multi_sta_thpt_2g.py │ │ │ │ │ └── test_mutli_sta_thpt_5g.py │ │ │ │ │ ├── nat_mode │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_multi_sta_thpt_2g.py │ │ │ │ │ └── test_mutli_sta_thpt_5g.py │ │ │ │ │ └── vlan_mode │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_multi_sta_thpt_2g.py │ │ │ │ │ └── test_mutli_sta_thpt_5g.py │ │ │ ├── ofdma_test │ │ │ │ ├── __init__.py │ │ │ │ └── wpa2_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ ├── peak_throughput_tests │ │ │ │ ├── __init__.py │ │ │ │ ├── bridge_mode │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── wpa2_enterprise_encryption │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_20Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_20Mhz_5g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_40Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_40Mhz_5g.py │ │ │ │ │ │ └── test_peak_throughput_wpa2_eap_80Mhz_5g.py │ │ │ │ │ ├── wpa2_personal_encryption │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_20Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_20Mhz_5g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_40Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa2_40Mhz_5g.py │ │ │ │ │ │ └── test_peak_throughput_wpa2_80Mhz_5g.py │ │ │ │ │ ├── wpa3_enterprise_encryption │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_20Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_20Mhz_5g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_40Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_40Mhz_5g.py │ │ │ │ │ │ └── test_peak_throughput_wpa3_eap_80Mhz_5g.py │ │ │ │ │ ├── wpa3_personal_encryption │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_160Mhz_6g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_20Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_20Mhz_5g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_40Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_40Mhz_5g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa3_80Mhz_5g.py │ │ │ │ │ │ └── test_peak_throughput_wpa3_80Mhz_6g.py │ │ │ │ │ └── wpa_encryption │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── test_peak_throughput_wpa_20Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa_20Mhz_5g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa_40Mhz_2g.py │ │ │ │ │ │ ├── test_peak_throughput_wpa_40Mhz_5g.py │ │ │ │ │ │ └── test_peak_throughput_wpa_80Mhz_5g.py │ │ │ │ └── nat_mode │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── open_encryption │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_peak_throughput_open_20Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_open_20Mhz_5g.py │ │ │ │ │ ├── test_peak_throughput_open_40Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_open_40Mhz_5g.py │ │ │ │ │ └── test_peak_throughput_open_80Mhz_5g.py │ │ │ │ │ ├── wpa2_enterprise_encryption │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_20Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_20Mhz_5g.py │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_40Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa2_eap_40Mhz_5g.py │ │ │ │ │ └── test_peak_throughput_wpa2_eap_80Mhz_5g.py │ │ │ │ │ ├── wpa2_personal_encryption │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_peak_throughput_wpa2_20Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa2_20Mhz_5g.py │ │ │ │ │ ├── test_peak_throughput_wpa2_40Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa2_40Mhz_5g.py │ │ │ │ │ └── test_peak_throughput_wpa2_80Mhz_5g.py │ │ │ │ │ ├── wpa3_enterprise_encryption │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_20Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_20Mhz_5g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_40Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_eap_40Mhz_5g.py │ │ │ │ │ └── test_peak_throughput_wpa3_eap_80Mhz_5g.py │ │ │ │ │ ├── wpa3_personal_encryption │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_peak_throughput_wpa3_160Mhz_6g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_20Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_20Mhz_5g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_40Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_40Mhz_5g.py │ │ │ │ │ ├── test_peak_throughput_wpa3_80Mhz_5g.py │ │ │ │ │ └── test_peak_throughput_wpa3_80Mhz_6g.py │ │ │ │ │ └── wpa_encryption │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_peak_throughput_wpa_20Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa_20Mhz_5g.py │ │ │ │ │ ├── test_peak_throughput_wpa_40Mhz_2g.py │ │ │ │ │ ├── test_peak_throughput_wpa_40Mhz_5g.py │ │ │ │ │ └── test_peak_throughput_wpa_80Mhz_5g.py │ │ │ ├── performance_pass_fail.json │ │ │ └── throughput_benchmark │ │ │ │ ├── __init__.py │ │ │ │ ├── tcp_udp_upstream_downstream_bidirection_throughput_test │ │ │ │ ├── __init__.py │ │ │ │ └── wpa2_personal │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_bridge_mode.py │ │ │ │ │ ├── test_nat_mode.py │ │ │ │ │ └── test_vlan_mode.py │ │ │ │ ├── throughput_across_channel_bw │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ │ │ └── throughput_vs_various_pkt_sizes │ │ │ │ ├── __init__.py │ │ │ │ ├── open_security │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ │ │ ├── wpa2_security │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ │ │ ├── wpa3_security │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ │ │ └── wpa_security │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bridge_mode.py │ │ │ │ ├── test_nat_mode.py │ │ │ │ └── test_vlan_mode.py │ │ ├── schema_validation │ │ │ ├── __init__.py │ │ │ ├── master-config-1.json │ │ │ ├── master-config-2.json │ │ │ ├── master-config-3.json │ │ │ └── test_schema_validation.py │ │ ├── strict_forwarding │ │ │ ├── __init__.py │ │ │ └── wpa2_personal │ │ │ │ ├── __init__.py │ │ │ │ └── test_strict_forwarding_bridge.py │ │ ├── test_access_point.py │ │ ├── test_e2e_sdk_ap_tests.py │ │ ├── test_firmware.py │ │ └── validation_of_operating_modes │ │ │ ├── __init__.py │ │ │ ├── bridge_mode │ │ │ ├── __init__.py │ │ │ ├── client_connectivity │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_tls.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ ├── dual_stack │ │ │ │ └── __init__.py │ │ │ ├── multi_psk │ │ │ │ ├── __init__.py │ │ │ │ ├── wpa2_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_multipsk_basic_wpa2.py │ │ │ │ └── wpa_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_multipsk_basic_wpa.py │ │ │ ├── rate_limiting │ │ │ │ ├── __init__.py │ │ │ │ └── test_rate_limiting.py │ │ │ └── rate_limiting_with_radius │ │ │ │ ├── __init__.py │ │ │ │ └── test_rate_limiting_with_radius.py │ │ │ ├── client_isolation │ │ │ ├── __init__.py │ │ │ └── test_client_isolation.py │ │ │ ├── country_code_channel_division │ │ │ ├── __init__.py │ │ │ ├── country_code_CA │ │ │ │ ├── __init__.py │ │ │ │ ├── channel_width_20Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_CA_20Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_CA_20Mhz_2g.py │ │ │ │ ├── channel_width_40Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_CA_40Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_CA_40Mhz_2g.py │ │ │ │ └── channel_width_80Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── fiveg_band │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_CA_80Mhz_5g.py │ │ │ ├── country_code_GB │ │ │ │ ├── __init__.py │ │ │ │ ├── channel_width_20Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_GB_20Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_GB_20Mhz_2g.py │ │ │ │ ├── channel_width_40Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_GB_40Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_GB_40Mhz_2g.py │ │ │ │ └── channel_width_80Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── fiveg_band │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_GB_80Mhz_5g.py │ │ │ ├── country_code_IN │ │ │ │ ├── __init__.py │ │ │ │ ├── channel_width_20Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_IN_20Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_IN_20Mhz_2g.py │ │ │ │ ├── channel_width_40Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_IN_40Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_IN_40Mhz_2g.py │ │ │ │ └── channel_width_80Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── fiveg_band │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_IN_80Mhz_5g.py │ │ │ ├── country_code_JP │ │ │ │ ├── __init__.py │ │ │ │ ├── channel_width_20Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_JP_20Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_JP_20Mhz_2g.py │ │ │ │ ├── channel_width_40Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_JP_40Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_JP_40Mhz_2g.py │ │ │ │ └── channel_width_80Mhz │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── fiveg_band │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_JP_80Mhz_5g.py │ │ │ ├── country_code_RU │ │ │ │ ├── channel_width_20Mhz │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ └── test_RU_20Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ └── test_RU_20Mhz_2g.py │ │ │ │ ├── channel_width_40Mhz │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ └── test_RU_40Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ └── test_RU_40Mhz_2g.py │ │ │ │ └── channel_width_80Mhz │ │ │ │ │ └── fiveg_band │ │ │ │ │ └── test_RU_80Mhz_5g.py │ │ │ ├── country_code_SG │ │ │ │ ├── channel_width_20Mhz │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ └── test_SG_20Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ └── test_SG_20Mhz_2g.py │ │ │ │ ├── channel_width_40Mhz │ │ │ │ │ ├── fiveg_band │ │ │ │ │ │ └── test_SG_40Mhz_5g.py │ │ │ │ │ └── twog_band │ │ │ │ │ │ └── test_SG_40Mhz_2g.py │ │ │ │ └── channel_width_80Mhz │ │ │ │ │ └── fiveg_band │ │ │ │ │ └── test_SG_80Mhz_5g.py │ │ │ └── country_code_US │ │ │ │ ├── __init__.py │ │ │ │ ├── channel_width_20Mhz │ │ │ │ ├── __init__.py │ │ │ │ ├── fiveg_band │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_US_20Mhz_5g.py │ │ │ │ └── twog_band │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_US_20Mhz_2g.py │ │ │ │ ├── channel_width_40Mhz │ │ │ │ ├── fiveg_band │ │ │ │ │ └── test_US_40Mhz_5g.py │ │ │ │ └── twog_band │ │ │ │ │ └── test_US_40Mhz_2g.py │ │ │ │ └── channel_width_80Mhz │ │ │ │ ├── __init__.py │ │ │ │ └── fiveg_band │ │ │ │ ├── __init__.py │ │ │ │ └── test_US_80Mhz_5g.py │ │ │ ├── max_ssid │ │ │ ├── __init__.py │ │ │ └── test_max_ssid.py │ │ │ ├── nat_mode │ │ │ ├── __init__.py │ │ │ ├── client_connectivity │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_tls.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ ├── dual_stack │ │ │ │ └── __init__.py │ │ │ ├── multi_psk │ │ │ │ ├── __init__.py │ │ │ │ ├── wpa2_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_multipsk_basic_wpa2.py │ │ │ │ └── wpa_security │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_multipsk_basic_wpa.py │ │ │ └── rate_limiting │ │ │ │ ├── __init__.py │ │ │ │ └── test_rate_limiting.py │ │ │ └── vlan_mode │ │ │ ├── __init__.py │ │ │ ├── client_connectivity │ │ │ ├── __init__.py │ │ │ ├── test_enterprise_tls.py │ │ │ ├── test_enterprise_ttls.py │ │ │ └── test_general_security_modes.py │ │ │ ├── dual_stack │ │ │ └── __init__.py │ │ │ ├── dynamic_vlan │ │ │ ├── __init__.py │ │ │ ├── wpa2_enterprise │ │ │ │ ├── __init__.py │ │ │ │ ├── fiveg │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_dynamic_over_ssid_fiveg_wpa2.py │ │ │ │ │ └── test_dynamic_vlan_fiveg_wpa2.py │ │ │ │ └── twog │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_dynamic_over_ssid_twog_wpa2.py │ │ │ │ │ └── test_dynamic_vlan_twog_wpa2.py │ │ │ └── wpa3_enterprise │ │ │ │ ├── __init__.py │ │ │ │ ├── fiveg │ │ │ │ ├── __init__.py │ │ │ │ ├── test_dynamic_over_ssid_fiveg_wpa3.py │ │ │ │ └── test_dynamic_vlan_fiveg_wpa3.py │ │ │ │ ├── sixg │ │ │ │ ├── __init__.py │ │ │ │ ├── test_dynamic_over_ssid_sixg_wpa3.py │ │ │ │ └── test_dynamic_vlan_sixg_wpa3.py │ │ │ │ └── twog │ │ │ │ ├── __init__.py │ │ │ │ ├── test_dynamic_over_ssid_twog_wpa3.py │ │ │ │ └── test_dynamic_vlan_twog_wpa3.py │ │ │ ├── multi_psk │ │ │ └── __init__.py │ │ │ ├── multi_vlan │ │ │ ├── __init__.py │ │ │ ├── test_multi_vlan_fiveg.py │ │ │ ├── test_multi_vlan_sixg.py │ │ │ └── test_multi_vlan_twog.py │ │ │ └── rate_limiting │ │ │ ├── __init__.py │ │ │ └── test_rate_limiting.py │ ├── conftest.1 │ ├── interOp │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── openroaming_test │ │ │ ├── __init__.py │ │ │ └── test_openroaming_bridge.py │ │ └── validation_of_operating_modes │ │ │ ├── __init__.py │ │ │ ├── bridge_mode │ │ │ ├── __init__.py │ │ │ ├── client_connect_test │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ ├── rate_limiting │ │ │ │ ├── __init__.py │ │ │ │ └── test_rate_limiting.py │ │ │ ├── toggle_airplane_mode_test │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ └── toggle_wifi_mode_test │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ ├── nat_mode │ │ │ ├── __init__.py │ │ │ ├── client_connect_test │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ ├── rate_limiting │ │ │ │ ├── __init__.py │ │ │ │ └── test_rate_limiting.py │ │ │ ├── toggle_airplane_mode_test │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ └── toggle_wifi_mode_test │ │ │ │ ├── __init__.py │ │ │ │ ├── test_enterprise_ttls.py │ │ │ │ └── test_general_security_modes.py │ │ │ └── vlan_mode │ │ │ ├── __init__.py │ │ │ ├── client_connect_test │ │ │ ├── __init__.py │ │ │ ├── test_enterprise_ttls.py │ │ │ └── test_general_security_modes.py │ │ │ ├── rate_limiting │ │ │ ├── __init__.py │ │ │ └── test_rate_limiting.py │ │ │ ├── toggle_airplane_mode_test │ │ │ ├── __init__.py │ │ │ ├── test_enterprise_ttls.py │ │ │ └── test_general_security_modes.py │ │ │ └── toggle_wifi_mode_test │ │ │ ├── __init__.py │ │ │ ├── test_enterprise_ttls.py │ │ │ └── test_general_security_modes.py │ ├── mdu │ │ ├── __init__.py │ │ └── conftest.py │ ├── mesh │ │ ├── Mesh │ │ │ ├── test_mesh_bridge.py │ │ │ └── test_node_patterns.py │ │ ├── __init__.py │ │ └── conftest.py │ └── scale │ │ ├── __init__.py │ │ └── conftest.py ├── kafka_tests │ ├── __init__.py │ └── ap_events │ │ ├── __init__.py │ │ ├── test-config.json │ │ └── test_kafka_ap_events.py ├── lab_info.json ├── pyproject.toml ├── setup.cfg ├── test_connectivity.py └── tox.ini └── tools ├── ap_tools.py ├── config_test_load.py ├── digicert-change-ap-redirector.sh ├── interop_reboot_devices_thread.py ├── interop_tools.py ├── pdu.json ├── pdu_automation.py ├── pdu_v2.py ├── pdu_v3.py ├── perfecto_device_reservation.py ├── phone_tools.py └── scp_util.py /.allure-overview/generate_overview.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import pathlib 4 | import string 5 | import sys 6 | 7 | base = pathlib.Path(os.path.dirname(os.path.abspath(__file__))) 8 | 9 | def main(): 10 | with open(base / 'index.html', 'r') as f: 11 | overview_template = string.Template(f.read()) 12 | 13 | with open(base / 'overviews.json', 'r') as f: 14 | overview_config = json.load(f)[sys.argv[1]] 15 | 16 | print(overview_template.safe_substitute(**overview_config)) 17 | 18 | if __name__ == '__main__': 19 | main() -------------------------------------------------------------------------------- /.allure-overview/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |

15 |
16 |
17 |
18 | 19 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /.allure-overview/overviews.json: -------------------------------------------------------------------------------- 1 | { 2 | "sanity": { 3 | "OVERVIEW_TITLE": "'OpenWifi sanity results'", 4 | "OVERVIEW_TESTBEDS": ["edgecore_eap112","edgecore_eap104","yuncore_fap655","sonicfi_rap630c-311g","edgecore_oap103","hfcl_ion4xe","cig_wf189h","sonicfi_rap7110c-341x","edgecore_eap105","cig_wf189","edgecore_eap101","edgecore_eap111","yuncore_ax820","edgecore_eap102","sercomm_ap72tip","cig_wf196","udaya_a6-id2"] 5 | }, 6 | "interop": { 7 | "OVERVIEW_TITLE": "'OpenWifi interop results'", 8 | "OVERVIEW_TESTBEDS": ["pixel-4","galaxy-s9","galaxy-s10","galaxy-s20","iphone-xr","iphone-7","iphone-11","iphone-12"] 9 | }, 10 | 11 | "advanced": { 12 | "OVERVIEW_TITLE": "'OpenWifi advanced results'", 13 | "OVERVIEW_TESTBEDS": ["edgecore_eap104","edgecore_eap101","edgecore_eap111","hfcl_ion4xe","cig_wf189","edgecore_eap105","sonicfi_rap7110c-341x","cig_wf196","yuncore_fap655","udaya_a6-id2","sonicfi_rap630c-311g"] 14 | }, 15 | 16 | "performance": { 17 | "OVERVIEW_TITLE": "'OpenWifi performance results'", 18 | "OVERVIEW_TESTBEDS": ["edgecore_eap112","edgecore_eap104","yuncore_fap655","sonicfi_rap630c-311g","edgecore_oap103","hfcl_ion4xe","cig_wf189h","sonicfi_rap7110c-341x","edgecore_eap105","cig_wf189","edgecore_eap101","edgecore_eap111","yuncore_ax820","edgecore_eap102","sercomm_ap72tip","cig_wf196","udaya_a6-id2"] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.ananda/requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.27.0 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | -------------------------------------------------------------------------------- /.github/actions/allure-report-to-s3/action.yml: -------------------------------------------------------------------------------- 1 | name: upload report to S3 2 | description: upload an Allure report to AWS S3 and update the latest reference 3 | 4 | inputs: 5 | test_type: 6 | description: test type of the report 7 | required: true 8 | testbed: 9 | description: testbed the report is about 10 | required: true 11 | report_path: 12 | description: path to the Allure report folder 13 | required: true 14 | s3_access_key_id: 15 | description: AWS access key ID to access S3 bucket 16 | required: true 17 | s3_access_key_secret: 18 | description: AWS access key secret to access S3 bucket 19 | required: true 20 | 21 | runs: 22 | using: "composite" 23 | steps: 24 | - name: install AWS cli 25 | uses: unfor19/install-aws-cli-action@v1 26 | 27 | - name: upload report to AWS S3 28 | env: 29 | AWS_S3_BUCKET_NAME: openwifi-allure-reports 30 | AWS_ACCOUNT_ID: "289708231103" 31 | AWS_ACCESS_KEY_ID: ${{ inputs.s3_access_key_id }} 32 | AWS_SECRET_ACCESS_KEY: ${{ inputs.s3_access_key_secret }} 33 | AWS_DEFAULT_REGION: us-east-1 34 | AWS_DEFAULT_OUTPUT: json 35 | shell: bash 36 | run: aws s3 cp --acl public-read --recursive ${{ inputs.report_path }} s3://${AWS_S3_BUCKET_NAME}/${{ inputs.test_type }}/${{ inputs.testbed }}/${{ github.run_number }} 37 | 38 | - name: set annotation 39 | shell: bash 40 | env: 41 | AWS_S3_BUCKET_WEBSITE_BASE_URL: http://openwifi-allure-reports.s3-website-us-east-1.amazonaws.com 42 | run: echo "::notice title=Report uploaded::The test report has been uploaded to ${AWS_S3_BUCKET_WEBSITE_BASE_URL}/${{ inputs.test_type }}/${{ inputs.testbed }}/${{ github.run_number }}/" 43 | 44 | - name: update reference to latest report 45 | env: 46 | AWS_S3_BUCKET_NAME: openwifi-allure-reports 47 | AWS_ACCOUNT_ID: "289708231103" 48 | AWS_ACCESS_KEY_ID: ${{ inputs.s3_access_key_id }} 49 | AWS_SECRET_ACCESS_KEY: ${{ inputs.s3_access_key_secret }} 50 | AWS_DEFAULT_REGION: us-east-1 51 | AWS_DEFAULT_OUTPUT: json 52 | shell: bash 53 | run: | 54 | cat < index.html 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | EOF 63 | 64 | # setting metadata to be able to easily determine latest run number 65 | aws s3 cp --acl public-read --metadata latest=${{ github.run_number }} --content-type text/html index.html s3://${AWS_S3_BUCKET_NAME}/${{ inputs.test_type }}/${{ inputs.testbed }}/latest/index.html 66 | -------------------------------------------------------------------------------- /.github/actions/build-and-push-docker/action.yml: -------------------------------------------------------------------------------- 1 | name: build and push Docker image 2 | description: build and push the wlan-testing Docker image 3 | 4 | inputs: 5 | registry: 6 | description: the registry to push to 7 | required: true 8 | registry_user: 9 | description: the user to authenticate against the registry 10 | required: true 11 | registry_password: 12 | description: the password to authenticate against the registry 13 | required: true 14 | 15 | runs: 16 | using: "composite" 17 | steps: 18 | - name: Checkout Testing repo 19 | uses: actions/checkout@v3 20 | with: 21 | path: wlan-testing 22 | 23 | - name: Checkout LANforge scripts 24 | uses: actions/checkout@v3 25 | with: 26 | path: wlan-lanforge-scripts 27 | repository: Telecominfraproject/wlan-lanforge-scripts 28 | 29 | - name: docker login 30 | shell: bash 31 | run: docker login ${{ inputs.registry }} -u ${{ inputs.registry_user }} -p ${{ inputs.registry_password }} 32 | 33 | - name: build docker image 34 | working-directory: wlan-testing 35 | shell: bash 36 | run: docker build -t ${{ inputs.registry }}/cloud-sdk-nightly:${{ github.run_id }} -f docker/Dockerfile . 37 | 38 | - name: push docker image 39 | shell: bash 40 | run: docker push ${{ inputs.registry }}/cloud-sdk-nightly:${{ github.run_id }} 41 | -------------------------------------------------------------------------------- /.github/actions/cleanup-docker/action.yml: -------------------------------------------------------------------------------- 1 | name: build and push Docker image 2 | description: build and push the wlan-testing Docker image 3 | 4 | inputs: 5 | registry_user: 6 | description: the user to authenticate against the registry 7 | required: true 8 | registry_password: 9 | description: the password to authenticate against the registry 10 | required: true 11 | 12 | runs: 13 | using: "composite" 14 | steps: 15 | - name: cleanup Docker image 16 | shell: bash 17 | run: curl -u ${{ inputs.registry_user }}:${{ inputs.registry_password }} -X DELETE "https://tip.jfrog.io/artifactory/tip-wlan-cloud-docker-repo/cloud-sdk-nightly/${{ github.run_id }}" 18 | -------------------------------------------------------------------------------- /.github/actions/generate-allure-report/action.yml: -------------------------------------------------------------------------------- 1 | name: generate Allure report 2 | description: Generates an Allure report from Allure results and includes metadata 3 | 4 | inputs: 5 | results_path: 6 | description: path to the Allure results folder 7 | required: true 8 | history_path: 9 | description: path to the Allure history folder 10 | required: false 11 | allure_version: 12 | description: version of Allure to use 13 | required: false 14 | default: "2.25.0" 15 | report_path: 16 | description: output path of the Allure report folder 17 | required: false 18 | default: ./allure-report 19 | additional_metadata: 20 | description: metadata that will be added to the environment.properties file 21 | required: false 22 | 23 | runs: 24 | using: "composite" 25 | steps: 26 | - name: install Allure CLI tool 27 | shell: bash 28 | run: | 29 | wget https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/${{ inputs.allure_version }}/allure-commandline-${{ inputs.allure_version }}.tgz 30 | tar -xzf allure-commandline-${{ inputs.allure_version }}.tgz 31 | 32 | - name: copy history into results 33 | shell: bash 34 | run: | 35 | if [ -e "${{ inputs.history_path }}" ] ; then 36 | cp -r "${{ inputs.history_path }}" "${{ inputs.results_path }}/history" 37 | fi 38 | 39 | - name: create executor information 40 | shell: bash 41 | run: | 42 | cat << EOF >> "${{ inputs.results_path }}/executor.json" 43 | { 44 | "reportName": "${{ github.repository }} ${{ github.workflow }} #${{ github.run_number }}", 45 | "buildName": "${{ github.repository }} ${{ github.workflow }} #${{ github.run_number }}", 46 | "buildOrder": ${{ github.run_number }}, 47 | "name": "Github runner", 48 | "reportUrl": "../${{ github.run_number }}/index.html", 49 | "buildUrl": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}", 50 | "type": "github" 51 | } 52 | EOF 53 | 54 | - name: add report metadata 55 | shell: bash 56 | run: | 57 | cat << EOF >> "${{ inputs.results_path }}/environment.properties" 58 | 59 | Tests.CommitId=${{ github.sha }} 60 | EOF 61 | 62 | - name: generate Allure report 63 | shell: bash 64 | run: allure-${{ inputs.allure_version }}/bin/allure generate "${{ inputs.results_path }}" -o "${{ inputs.report_path }}" 65 | 66 | 67 | -------------------------------------------------------------------------------- /.github/workflows/enforce-jira-issue-key.yml: -------------------------------------------------------------------------------- 1 | name: Ensure Jira issue is linked 2 | 3 | on: 4 | pull_request: 5 | types: [opened, edited, reopened, synchronize] 6 | 7 | jobs: 8 | check_for_issue_key: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout actions repo 12 | uses: actions/checkout@v3 13 | with: 14 | repository: Telecominfraproject/.github 15 | path: github 16 | 17 | - name: Run JIRA check 18 | uses: ./github/composite-actions/enforce-jira-issue-key 19 | with: 20 | jira_base_url: ${{ secrets.TIP_JIRA_URL }} 21 | jira_user_email: ${{ secrets.TIP_JIRA_USER_EMAIL }} 22 | jira_api_token: ${{ secrets.TIP_JIRA_API_TOKEN }} 23 | -------------------------------------------------------------------------------- /.github/workflows/get_redirector_url.yml: -------------------------------------------------------------------------------- 1 | name: Get testbeds current redirector urls 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | testbeds: 7 | default: 'basic-01,basic-02,basic-03,basic-04,basic-05,basic-06,basic-07,basic-08' 8 | description: 'Testbed(s) to test' 9 | required: false 10 | 11 | defaults: 12 | run: 13 | shell: bash 14 | 15 | jobs: 16 | generate-matrix: 17 | name: generate testbed matrix 18 | runs-on: ubuntu-latest 19 | outputs: 20 | matrix: ${{ steps.set-matrix.outputs.matrix }} 21 | steps: 22 | - name: generate-matrix 23 | id: set-matrix 24 | run: | 25 | TESTBEDS="${{ github.event.inputs.testbeds || 'basic-01,basic-02,basic-03,basic-04,basic-05,basic-06,basic-07,basic-08' }}" 26 | TESTBEDS=$(echo $TESTBEDS | sed "s/,/\",\"/g" | sed 's/^/[\"/g' | sed 's/$/\"]/g') 27 | TESTBEDS=$(echo "$TESTBEDS" | jq -c 'map({"testbed":.})') 28 | cat >> $GITHUB_OUTPUT << EOF 29 | matrix=${TESTBEDS} 30 | EOF 31 | 32 | get-redirector-url: 33 | needs: [ generate-matrix ] 34 | runs-on: ubuntu-latest 35 | strategy: 36 | matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }} 37 | steps: 38 | - name: checkout testing repo 39 | uses: actions/checkout@v4 40 | with: 41 | repository: Telecominfraproject/wlan-testing 42 | path: wlan-testing 43 | 44 | - name: checkout pki cert scripts repo 45 | uses: actions/checkout@v4 46 | with: 47 | repository: Telecominfraproject/wlan-pki-cert-scripts 48 | path: wlan-pki-cert-scripts 49 | 50 | - name: install dependencies 51 | run: | 52 | sudo apt-get install -y python3-pip 53 | pip install paramiko scp 54 | 55 | - name: create configuration.py file 56 | run: | 57 | cat << EOF > configuration.py 58 | ${{ secrets.LAB_CONFIGURATION_JSON }} 59 | EOF 60 | 61 | - name: Get redirector URL 62 | env: 63 | DIGICERT_API_KEY: ${{ secrets.DIGICERT_API_KEY }} 64 | run: | 65 | for id in $(echo -e 'from configuration import CONFIGURATION\nfor ap in CONFIGURATION["${{ matrix.testbed }}"]["access_point"]: print(ap["serial"])' | python3) 66 | do 67 | ./wlan-pki-cert-scripts/digicert-get-ap-redirector.sh $id 68 | echo "Exit code - $?" 69 | done 70 | -------------------------------------------------------------------------------- /.github/workflows/restart_gw.yml: -------------------------------------------------------------------------------- 1 | name: Restart OWGW 2 | 3 | defaults: 4 | run: 5 | shell: bash 6 | 7 | env: 8 | AWS_EKS_NAME: tip-wlan-main 9 | AWS_DEFAULT_OUTPUT: json 10 | AWS_DEFAULT_REGION: ap-south-1 11 | AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} 12 | AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CLIENT_ID }} 13 | AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CLIENT_KEY }} 14 | 15 | on: 16 | workflow_dispatch: 17 | inputs: 18 | environment: 19 | default: 'qa01' 20 | description: 'In which environment OWGW must be restarted (qa01 will restart OWGW in openwifi-qa01)' 21 | required: true 22 | 23 | jobs: 24 | restart-owgw: 25 | runs-on: ubuntu-latest 26 | steps: 27 | - name: Fetch kubeconfig 28 | run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} 29 | 30 | - name: Install kubectl 31 | run: | 32 | curl -s -LO "https://dl.k8s.io/release/v1.27.14/bin/linux/amd64/kubectl" 33 | sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl 34 | 35 | - name: Restart OWGW in defined namespace 36 | run: kubectl delete pod -n openwifi-${{ github.event.inputs.environment }} -l app.kubernetes.io/name=owgw 37 | -------------------------------------------------------------------------------- /.github/workflows/ucentralgw-cluster-cleanup.yaml: -------------------------------------------------------------------------------- 1 | name: Cleanup OpenWIFI Cloud SDK Namespace 2 | 3 | defaults: 4 | run: 5 | shell: bash 6 | 7 | env: 8 | AWS_EKS_NAME: tip-wlan-main 9 | AWS_DEFAULT_OUTPUT: json 10 | AWS_DEFAULT_REGION: ap-south-1 11 | AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} 12 | AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CLIENT_ID }} 13 | AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CLIENT_KEY }} 14 | 15 | on: 16 | workflow_dispatch: 17 | inputs: 18 | namespace: 19 | default: 'none' 20 | description: 'Namespace to clean up eg. dev01' 21 | required: true 22 | full: 23 | default: 'false' 24 | description: 'Remove namespace if set to true' 25 | required: false 26 | 27 | jobs: 28 | undeploy: 29 | name: Cleanup OpenWIFI Cloud SDK Namespace 30 | runs-on: ubuntu-latest 31 | steps: 32 | 33 | - name: Checkout repo with Helm values 34 | uses: actions/checkout@v4 35 | with: 36 | repository: Telecominfraproject/wlan-cloud-ucentral-deploy 37 | path: wlan-cloud-ucentral-deploy 38 | ref: main 39 | 40 | - name: Fetch kubeconfig 41 | run: | 42 | aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} 43 | 44 | - name: Install kubectl 45 | run: | 46 | curl -s -LO "https://dl.k8s.io/release/v1.27.14/bin/linux/amd64/kubectl" 47 | sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl 48 | 49 | - name: Undeploy OpenWIFI Cloud SDK 50 | working-directory: wlan-cloud-ucentral-deploy/chart/environment-values 51 | run: | 52 | export NAMESPACE=${{ inputs.namespace }} 53 | opts="" 54 | if [[ "${{ inputs.full }}" == "true" ]] ; then 55 | opts="full" 56 | fi 57 | ./cleanup.sh $opts 58 | -------------------------------------------------------------------------------- /.github/workflows/update-badges.yml: -------------------------------------------------------------------------------- 1 | name: Update test number badges 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | paths: 8 | - "tests/**" 9 | workflow_dispatch: 10 | 11 | jobs: 12 | update_badges: 13 | runs-on: ubuntu-latest 14 | container: python:3.8 15 | steps: 16 | - name: Checkout testing repo 17 | uses: actions/checkout@v3 18 | with: 19 | path: wlan-testing 20 | 21 | - uses: actions/checkout@v3 22 | with: 23 | ref: badges 24 | path: wlan-testing/badges 25 | 26 | - name: Run setup_env.bash 27 | working-directory: wlan-testing 28 | env: 29 | CLOUDSDK_LIBRARY: tip_2x 30 | TEST_DEVICE_NAME: all 31 | PYTHON: /usr/local/bin/python3 32 | PIP: /usr/local/bin/pip3 33 | run: | 34 | ./setup_env.bash -t $CLOUDSDK_LIBRARY -d $TEST_DEVICE_NAME -n "TIP Automation" -o TIP -e tip-automation@telecominfraproject.com -i "TIP OpenWIFI Library" && pip3 freeze 35 | 36 | - name: download badges 37 | working-directory: wlan-testing/tests 38 | run: | 39 | mkdir -p ../.img 40 | wget https://img.shields.io/badge/total_tests-$(pytest --collect-only -q | tail -1 | cut -d ' ' -f 1)-green?style=flat-square -O ../badges/total-count.svg 41 | wget https://img.shields.io/badge/interop_tests-$(pytest --collect-only -m "ow_sanity_interop" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../badges/interop-count.svg 42 | wget https://img.shields.io/badge/sanity_tests-$(pytest --collect-only -m "ow_sanity_lf" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../badges/sanity-count.svg 43 | wget https://img.shields.io/badge/performance_tests-$(pytest --collect-only -m "performance" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../badges/performance-count.svg 44 | wget https://img.shields.io/badge/advance_tests-$(pytest --collect-only -m "advance" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../badges/advance-count.svg 45 | wget https://img.shields.io/badge/regression_tests-$(pytest --collect-only -m "ow_regression_lf" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../badges/regression-count.svg 46 | # wget https://img.shields.io/badge/interop_performance_tests-$(pytest --collect-only -m "interop_uc_sanity and client_connectivity" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../badges/performance-interop-count.svg 47 | 48 | - name: commit changes 49 | working-directory: wlan-testing/badges 50 | run: | 51 | git config --global user.name "github-actions[bot]" 52 | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" 53 | 54 | git add . 55 | git diff-index --quiet HEAD || git commit -m "Updating test count badges: $(date -u)" 56 | 57 | - name: push changes 58 | uses: ad-m/github-push-action@master 59 | with: 60 | github_token: ${{ secrets.GITHUB_TOKEN }} 61 | directory: wlan-testing/badges 62 | branch: badges 63 | force: true 64 | -------------------------------------------------------------------------------- /.github/workflows/update-overviews.yml: -------------------------------------------------------------------------------- 1 | name: Update test report overview pages 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | paths: 7 | - ".allure-overview/**" 8 | 9 | jobs: 10 | update_overview: 11 | strategy: 12 | fail-fast: false 13 | matrix: 14 | test_type: ['sanity', 'interop', 'advanced', 'performance'] 15 | 16 | runs-on: ubuntu-latest 17 | container: python:3.8 18 | steps: 19 | - uses: actions/checkout@v3 20 | 21 | - name: generate overview page 22 | run: | 23 | python .allure-overview/generate_overview.py ${{ matrix.test_type }} > index.html 24 | cat index.html 25 | 26 | - name: install aws CLI tool 27 | if: github.ref == 'refs/heads/master' 28 | run: | 29 | curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 30 | unzip awscliv2.zip 31 | ./aws/install 32 | 33 | - name: upload overview page 34 | if: github.ref == 'refs/heads/master' 35 | env: 36 | AWS_S3_BUCKET_NAME: openwifi-allure-reports 37 | AWS_ACCOUNT_ID: "289708231103" 38 | AWS_ACCESS_KEY_ID: ${{ secrets.ALLURE_S3_ACCESS_KEY_ID }} 39 | AWS_SECRET_ACCESS_KEY: ${{ secrets.ALLURE_S3_ACCESS_KEY_SECRET }} 40 | AWS_DEFAULT_REGION: us-east-1 41 | AWS_DEFAULT_OUTPUT: json 42 | run: aws s3 cp --acl public-read --content-type text/html index.html s3://${AWS_S3_BUCKET_NAME}/${{ matrix.test_type }}/overview/index.html 43 | 44 | 45 | -------------------------------------------------------------------------------- /.github/workflows/update-tests.yml: -------------------------------------------------------------------------------- 1 | name: Update tests list from master branch 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'tests/**' 7 | branches: 8 | - master 9 | workflow_dispatch: 10 | 11 | defaults: 12 | run: 13 | shell: bash 14 | 15 | jobs: 16 | build: 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v3 20 | - name: build and push Docker image 21 | uses: ./.github/actions/build-and-push-docker 22 | with: 23 | registry: tip-tip-wlan-cloud-docker-repo.jfrog.io 24 | registry_user: ${{ secrets.DOCKER_USER_NAME }} 25 | registry_password: ${{ secrets.DOCKER_USER_PASSWORD }} 26 | 27 | testsgen: 28 | needs: [build] 29 | runs-on: ubuntu-latest 30 | steps: 31 | - uses: actions/checkout@v3 32 | 33 | - name: Generate tests as allure results 34 | run: | 35 | docker run -v $PWD/allure-results:/allure-results tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} -c "cd tests; pytest -s -vvv --alluredir=/allure-results --skip-all" 36 | sudo chown runner:docker -R $PWD/allure-results 37 | 38 | - name: Generate Allure report 39 | uses: ./.github/actions/generate-allure-report 40 | with: 41 | results_path: ./allure-results 42 | 43 | - name: Update allure report 44 | run: | 45 | mv allure-report tmp-docs 46 | rm -rf allure-* 47 | mkdir -p ~/.ssh 48 | ssh-keyscan -H github.com >> ~/.ssh/known_hosts 49 | echo https://tip-automation:${{ secrets.GIT_PUSH_PAT }}@github.com > ~/.git-credentials 50 | git config --global credential.helper store 51 | git config --global user.email "tip-automation@telecominfraproject.com" 52 | git config --global user.name "TIP Automation User" 53 | git pull 54 | git checkout gh-pages || git checkout -b gh-pages 55 | rm -rf docs/tmp-docs || true 56 | mv tmp-docs docs 57 | git add docs 58 | git commit -m'Update allure report for github pages' 59 | 60 | - name: Publish Allure report to GitHub Pages 61 | uses: ad-m/github-push-action@v0.6.0 62 | with: 63 | github_token: ${{ secrets.GITHUB_TOKEN }} 64 | branch: gh-pages 65 | directory: ./docs 66 | 67 | cleanup: 68 | needs: [build, testsgen] 69 | runs-on: ubuntu-latest 70 | if: always() 71 | steps: 72 | - uses: actions/checkout@v3 73 | - name: cleanup Docker image 74 | uses: ./.github/actions/cleanup-docker 75 | with: 76 | registry_user: ${{ secrets.DOCKER_USER_NAME }} 77 | registry_password: ${{ secrets.DOCKER_USER_PASSWORD }} 78 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 98 | __pypackages__/ 99 | 100 | # Celery stuff 101 | celerybeat-schedule 102 | celerybeat.pid 103 | 104 | # SageMath parsed files 105 | *.sage.py 106 | 107 | # Environments 108 | .env 109 | .venv 110 | env/ 111 | venv/ 112 | ENV/ 113 | env.bak/ 114 | venv.bak/ 115 | 116 | # Spyder project settings 117 | .spyderproject 118 | .spyproject 119 | 120 | # Rope project settings 121 | .ropeproject 122 | 123 | # mkdocs documentation 124 | /site 125 | 126 | # mypy 127 | .mypy_cache/ 128 | .dmypy.json 129 | dmypy.json 130 | 131 | # Pyre type checker 132 | .pyre/ 133 | 134 | # pytype static type analyzer 135 | .pytype/ 136 | 137 | # Cython debug symbols 138 | cython_debug/ 139 | 140 | # nightlies 141 | docker/* 142 | !docker/nightly* 143 | docker/nightly*log 144 | 145 | # nightlies with pytest 146 | pytest/* 147 | !pytest/Dockerfile 148 | !pytest/conftest.py 149 | !pytest/test_*.py 150 | !pytest/helpers 151 | !pytest/pytest.ini 152 | pytest/nightly*log 153 | 154 | test_everything.xml 155 | .vscode 156 | .envrc 157 | .DS_Store 158 | -------------------------------------------------------------------------------- /.img/Tools_and_Testing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/.img/Tools_and_Testing.png -------------------------------------------------------------------------------- /.img/automation_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/.img/automation_overview.png -------------------------------------------------------------------------------- /.img/interop-count.svg: -------------------------------------------------------------------------------- 1 | interop tests: 56interop tests56 -------------------------------------------------------------------------------- /.img/performance-count.svg: -------------------------------------------------------------------------------- 1 | performance tests: 241performance tests241 -------------------------------------------------------------------------------- /.img/sanity-count.svg: -------------------------------------------------------------------------------- 1 | sanity tests: 176sanity tests176 -------------------------------------------------------------------------------- /.img/total-count.svg: -------------------------------------------------------------------------------- 1 | total tests: 519total tests519 -------------------------------------------------------------------------------- /.quali/common.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | 4 | from cloudshell.api.cloudshell_api import CloudShellAPISession 5 | 6 | TIMEOUT=3600 7 | 8 | def get_session() -> CloudShellAPISession: 9 | url = os.environ['CLOUDSHELL_URL'] 10 | user = os.environ['CLOUDSHELL_USER'] 11 | password = os.environ['CLOUDSHELL_PASSWORD'] 12 | 13 | return CloudShellAPISession(url, user, password, "Global") 14 | 15 | def __wait_for_status(session, res_id, field, target_statuses=[], exit_statuses=[]): 16 | timer = 0 17 | sleep_time = 5 18 | while True: 19 | status = session.GetReservationStatus(res_id).ReservationSlimStatus.__dict__[field] 20 | 21 | if status in target_statuses: 22 | print(f'reached target status: {status}') 23 | break 24 | 25 | if status in exit_statuses: 26 | print(f'reached exit status: {status}') 27 | exit(1) 28 | 29 | print(f'current reservation status: {status}') 30 | 31 | if timer >= TIMEOUT: 32 | raise RuntimeError(f'waiting for reservation to reach one of {target_statuses} or {exit_statuses} statuses timed out') 33 | 34 | time.sleep(sleep_time) 35 | timer += sleep_time 36 | 37 | def wait_for_provisioning_status(session, res_id, target_statuses, exit_statuses=[]): 38 | __wait_for_status(session, res_id, 'ProvisioningStatus', target_statuses, exit_statuses) 39 | 40 | def wait_for_reservation_status(session, res_id, target_statuses, exit_statuses=[]): 41 | __wait_for_status(session, res_id, 'Status', target_statuses, exit_statuses) 42 | -------------------------------------------------------------------------------- /.quali/requirements.txt: -------------------------------------------------------------------------------- 1 | cloudshell-automation-api==2021.1.0.181140 -------------------------------------------------------------------------------- /.quali/start_reservation.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | from cloudshell.api.cloudshell_api import UpdateTopologyGlobalInputsRequest 5 | 6 | import argparse 7 | 8 | from common import wait_for_provisioning_status, get_session 9 | 10 | run_number = os.environ.get('GITHUB_RUN_NUMBER', 1) 11 | run_id = os.environ.get('GITHUB_JOB', 'job') 12 | workflow = os.environ.get('GITHUB_WORKFLOW', "workflow") 13 | marker_expression = os.environ.get('MARKER_EXPRESSION', 'sanity') 14 | 15 | def main(): 16 | parser = argparse.ArgumentParser() 17 | parser.add_argument('--global-inputs', help="JSON dictionary that contains global inputs that will be passed to Quali", default="{}") 18 | parser.add_argument('--reservation-duration', help='duration of reservation', default=360) 19 | parser.add_argument('--reservation-id-file', help='file that the reservation ID will be written to', default='./reservation_id.txt') 20 | parser.add_argument('blueprint', help='name of blueprint to create reservation from') 21 | args = parser.parse_args() 22 | 23 | session = get_session() 24 | 25 | global_inputs = {} 26 | try: 27 | global_inputs = json.loads(args.global_inputs) 28 | except json.JSONDecodeError as e: 29 | print(f'failed to decode global inputs: {e}') 30 | exit(1) 31 | 32 | reservation = session.CreateImmediateTopologyReservation( 33 | reservationName=f'{workflow}/{run_number}/{run_id}', 34 | owner=session.username, 35 | durationInMinutes=args.reservation_duration, 36 | topologyFullPath=args.blueprint, 37 | globalInputs=[UpdateTopologyGlobalInputsRequest(key, value) for key, value in global_inputs.items()] 38 | ).Reservation 39 | 40 | with open(args.reservation_id_file, 'w') as f: 41 | f.write(reservation.Id) 42 | 43 | wait_for_provisioning_status(session, reservation.Id, ['Ready'], ['Teardown']) 44 | 45 | if __name__ == '__main__': 46 | main() 47 | -------------------------------------------------------------------------------- /.quali/stop_reservation.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from common import wait_for_reservation_status, get_session 4 | 5 | def main(): 6 | session = get_session() 7 | res_id = sys.argv[1] 8 | session.EndReservation(res_id) 9 | wait_for_reservation_status(session, res_id, ['Completed']) 10 | 11 | if __name__ == '__main__': 12 | main() 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2020, Telecom Infra Project 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /NOTES.txt: -------------------------------------------------------------------------------- 1 | Notes for TIP WiFi testing related topics. 2 | 3 | 4 | # To pull the latest upstream lanforge-scripts repo into the wlan-lanforge-scripts 5 | # repository, use this or similar command. This action will probably only be done 6 | # by whoever is curating the wlan-lanforge-scripts repository. 7 | 8 | git pull git@github.com:greearb/lanforge-scripts.git 9 | 10 | 11 | # Testbed setup 12 | 13 | Test-Controller system must be able to ssh into the LANforge system w/out a password 14 | (use authorized_keys ssh setup) as both user lanforge and user root. 15 | 16 | Test-Controller will need to be able to access the Cloud-SDK machines. Not sure 17 | exact details on this yet. 18 | 19 | Serial ports must be make available to non-root users, command like this for each serial port: 20 | chmod a+rwx /dev/ttyUSB0 21 | 22 | For each new test-bed hardware config (including LANforge and AP hardware types and radio 23 | layouts), a new directory in testbeds/ should be created, and populated with test-bed specific 24 | LANforge scenario and test configuration files. See 'ben-home' for examples. 25 | See lanforge/lanforge-scripts/gui/README.txt for details on ways to grab the appropriate text, 26 | but you will also need familiarity with LANforge to accomplish this easily. 27 | 28 | 29 | # Test controller setup. Assuming Fedora-30 or similar is installed. 30 | 31 | # Enable vnc, install some things, disable selinux so vnc will work. 32 | ./lf_kinstall.pl --do_vnc --do_pkgs --do_selinux 0 33 | 34 | # As user lanforge (or other user should work too) 35 | # You will need to put the proper keys in ~/.ssh/ in order to 36 | # do the clone. 37 | mkdir ~/git 38 | cd ~/git 39 | git clone git@github.com:Telecominfraproject/wlan-testing.git 40 | git clone git@github.com:Telecominfraproject/wlan-lanforge-scripts.git 41 | cd wlan-testing/lanforge 42 | ln -s ../../wlan-lanforge-scripts lanforge-scripts 43 | 44 | # Make a copy of a test bed similar to what you have, for instance: 45 | cd ~/git/wlan-testing/testbeds 46 | cp -ar example_test_bed my_new_test_bed 47 | 48 | # Edit the new test bed details as needed, this may be somewhat tricky 49 | # if your test bed is different from others. 50 | # See ~/git/wlan-lanforge-scripts/gui/README.txt for some hints on setting up 51 | # scenarios and such. 52 | 53 | 54 | 55 | # On LANforge machine, make sure GUI is in auto-start mode: 56 | https://www.candelatech.com/cookbook/misc/autostart 57 | 58 | * Create uplink-nat profile. 59 | * Create upstream DUT 60 | * Create AP DUT 61 | * Create scenario that uses uplink-nat profile and upstream-dhcp to provide VR+NAT access to the world. 62 | * Add stations for the radios, properly linked to DUT radio(s). 63 | 64 | * Create WCT test, verify it works OK, save scenario 65 | * Interleave sort, set pass/fail limits 66 | 67 | * Create AP-Auto test 68 | * configure DUT 69 | * configure radios 70 | * configure advanced (dual-band only in our case) 71 | * configure stability settings 72 | -------------------------------------------------------------------------------- /TEST_PLANS.md: -------------------------------------------------------------------------------- 1 | ## Test Plans and Markers associated with them are provided in this file :ledger: 2 | 3 | :speaking_head: SANITY 4 | 5 | 1. Client Connectivity Tests 6 | client_connectivity_tests and tls and bridge 7 | client_connectivity_tests and ttls and nat 8 | client_connectivity_tests and general and vlan 9 | 2. DFS Test 10 | dfs_tests and wpa2_personal and bandwidth_80MHz 11 | 3. Dynamic Vlan Test 12 | dynamic_vlan_tests and wpa2_enterprise and dynamic_precedence_over_ssid or absence_of_radius_vlan_identifier and wpa2_enterprise 13 | 4. MULTI VLAN Test 14 | multi_vlan_tests and wpa2_personal or multi_vlan_tests and wpa 15 | 5. Rate Limiting Tests 16 | rate_limiting_tests and upload_download and batch_size_125 and twog 17 | 6. Rate Limiting With Radius Test 18 | rate_limiting_with_radius_tests and twog_upload_per_ssid or twog_download_perssid_persta 19 | 7. MultiPsk Test 20 | multi_psk_tests 21 | 8. Throughput Benchmark Test 22 | peak_throughput_tests and channel_11 and tcp_download and bridge and twog and channel_width_40 and wpa2_personal or peak_throughput_tests and channel_36 and tcp_download and bridge and fiveg and channel_width_80 and wpa2_personal 23 | 9. Test Connectivity 24 | test_resources 25 | 10. SDK Tests 26 | ow_sanity_lf and ow_sdk_tests 27 | 28 | 29 | :speaking_head: INTEROP 30 | 31 | 1. Client Connect Tests 32 | client_connect_tests and general and bridge 33 | client_connect_tests and general and nat 34 | client_connect_tests and general and vlan 35 | client_connect_tests and enterprise and bridge 36 | client_connect_tests and enterprise and nat 37 | client_connect_tests and enterprise and vlan 38 | 2. Client Connectivity Tests 39 | client_connectivity_tests and general and bridge 40 | client_connectivity_tests and general and nat 41 | client_connectivity_tests and general and vlan 42 | client_connectivity_tests and enterprise and bridge 43 | client_connectivity_tests and enterprise and nat 44 | client_connectivity_tests and enterprise and vlan 45 | 3. Rate Limiting Tests 46 | rate_limiting_tests and bridge 47 | rate_limiting_tests and nat 48 | rate_limiting_tests and vlan 49 | 4. Toggle Airplane mode Tests (Client Reconnect Tests) 50 | toggle_airplane_tests and general and bridge 51 | toggle_airplane_tests and general and nat 52 | toggle_airplane_tests and general and vlan 53 | toggle_airplane_tests and enterprise and bridge 54 | toggle_airplane_tests and enterprise and nat 55 | toggle_airplane_tests and enterprise and vlan 56 | 5. Toggle Wifi mode Tests (Client Reconnect Tests) 57 | toggle_wifi_mode and general and bridge 58 | toggle_wifi_mode and general and nat 59 | toggle_wifi_mode and general and vlan 60 | toggle_wifi_mode and enterprise and bridge 61 | toggle_wifi_mode and enterprise and nat 62 | toggle_wifi_mode and enterprise and vlan 63 | 64 | 65 | 66 | More Markers related to other test plans will be added soon in the future -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/__init__.py -------------------------------------------------------------------------------- /config/Nat.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | { 5 | "band": "5G", 6 | "channel": 52, 7 | "channel-mode": "HE", 8 | "channel-width": 80, 9 | "country": "CA" 10 | }, 11 | { 12 | "band": "2G", 13 | "channel": 11, 14 | "channel-mode": "HE", 15 | "channel-width": 20, 16 | "country": "CA" 17 | } 18 | ], 19 | 20 | "interfaces": [ 21 | { 22 | "name": "WAN", 23 | "role": "upstream", 24 | "services": [ "lldp" ], 25 | "ethernet": [ 26 | { 27 | "select-ports": [ 28 | "WAN*" 29 | ] 30 | } 31 | ], 32 | "ipv4": { 33 | "addressing": "dynamic" 34 | } 35 | }, 36 | { 37 | "name": "LAN", 38 | "role": "downstream", 39 | "services": [ "ssh", "lldp" ], 40 | "ethernet": [ 41 | { 42 | "select-ports": [ 43 | "LAN*" 44 | ] 45 | } 46 | ], 47 | "ipv4": { 48 | "addressing": "static", 49 | "subnet": "192.168.1.1/24", 50 | "dhcp": { 51 | "lease-first": 10, 52 | "lease-count": 100, 53 | "lease-time": "6h" 54 | } 55 | }, 56 | "ssids": [ 57 | { 58 | "name": "OpenWifi", 59 | "role": "downstream", 60 | "wifi-bands": [ 61 | "2G", "5G" 62 | ], 63 | "bss-mode": "ap", 64 | "encryption": { 65 | "proto": "psk2", 66 | "key": "OpenWifi", 67 | "ieee80211w": "optional" 68 | } 69 | } 70 | ] 71 | 72 | } 73 | ], 74 | "metrics": { 75 | "statistics": { 76 | "interval": 120, 77 | "types": [ "ssids", "lldp", "clients" ] 78 | }, 79 | "health": { 80 | "interval": 120 81 | }, 82 | "wifi-frames": { 83 | "filters": [ "probe", "auth" ] 84 | } 85 | }, 86 | "services": { 87 | "lldp": { 88 | "describe": "uCentral", 89 | "location": "universe" 90 | }, 91 | "ssh": { 92 | "port": 22 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /config/nat_testcases.json: -------------------------------------------------------------------------------- 1 | Create SSID Profile - 2.4 GHz WPA - NAT Mode 2 | Create SSID Profile - 2.4 GHz WPA2 - NAT Mode 3 | Create SSID Profile - 5 GHz WPA - NAT Mode 4 | Create SSID Profile - 5 GHz WPA2 - NAT Mode 5 | Validate client connectivity to 2.4 GHz WPA SSID - NAT Mode 6 | Validate client connectivity to 2.4 GHz WPA2 SSID - NAT Mode 7 | Validate client connectivity to 5 GHz WPA SSID - NAT Mode 8 | Validate client connectivity to 5 GHz WPA2 SSID - - NAT Mode 9 | Validate client connectivity to 5 GHz Open SSID - NAT Mode 10 | Validate client connectivity to 2.4 GHz Open SSID - NAT Mode -------------------------------------------------------------------------------- /config/ratelimit_2.4_noteffect_otherSSID.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | 5 | { 6 | "band": "2G", 7 | "channel": 6, 8 | "channel-mode": "HE", 9 | "channel-width": 20, 10 | "country": "CA" 11 | } 12 | ], 13 | 14 | "interfaces": [ 15 | { 16 | "name": "WAN", 17 | "role": "upstream", 18 | "services": [ "lldp" ], 19 | "ethernet": [ 20 | { 21 | "select-ports": [ 22 | "WAN*" 23 | ] 24 | } 25 | ], 26 | "ipv4": { 27 | "addressing": "dynamic" 28 | }, 29 | "ssids": [ 30 | { 31 | "name": "SSID1", 32 | "wifi-bands": [ 33 | "2G" 34 | ], 35 | "bss-mode": "ap", 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "OpenWifi", 39 | "ieee80211w": "optional" 40 | }, 41 | "rate-limit": { 42 | "ingress-rate": 30, 43 | "egress-rate": 30 44 | } 45 | }, 46 | { 47 | "name": "SSID2", 48 | "wifi-bands": [ 49 | "2G" 50 | ], 51 | "bss-mode": "ap", 52 | "encryption": { 53 | "proto": "psk2", 54 | "key": "OpenWifi", 55 | "ieee80211w": "optional" 56 | }, 57 | "rate-limit": { 58 | "ingress-rate": 0, 59 | "egress-rate": 0 60 | } 61 | } 62 | ] 63 | }, 64 | { 65 | "name": "LAN", 66 | "role": "downstream", 67 | "services": [ "ssh", "lldp" ], 68 | "ethernet": [ 69 | { 70 | "select-ports": [ 71 | "LAN*" 72 | ] 73 | } 74 | ], 75 | "ipv4": { 76 | "addressing": "static", 77 | "subnet": "192.168.1.1/24", 78 | "dhcp": { 79 | "lease-first": 10, 80 | "lease-count": 100, 81 | "lease-time": "6h" 82 | } 83 | } 84 | } 85 | ], 86 | "metrics": { 87 | "statistics": { 88 | "interval": 120, 89 | "types": [ "ssids", "lldp", "clients" ] 90 | }, 91 | "health": { 92 | "interval": 120 93 | }, 94 | "wifi-frames": { 95 | "filters": [ "probe", "auth" ] 96 | } 97 | }, 98 | "services": { 99 | "lldp": { 100 | "describe": "uCentral", 101 | "location": "universe" 102 | }, 103 | "ssh": { 104 | "port": 22 105 | } 106 | } 107 | } -------------------------------------------------------------------------------- /config/ratelimit_2.4disabled_case.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | 5 | { 6 | "band": "2G", 7 | "channel": 11, 8 | "channel-mode": "HE", 9 | "channel-width": 20, 10 | "country": "CA" 11 | } 12 | ], 13 | 14 | "interfaces": [ 15 | { 16 | "name": "WAN", 17 | "role": "upstream", 18 | "services": [ "lldp" ], 19 | "ethernet": [ 20 | { 21 | "select-ports": [ 22 | "WAN*" 23 | ] 24 | } 25 | ], 26 | "ipv4": { 27 | "addressing": "dynamic" 28 | }, 29 | "ssids": [ 30 | { 31 | "name": "SSID1", 32 | "wifi-bands": [ 33 | "2G" 34 | ], 35 | "bss-mode": "ap", 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "OpenWifi", 39 | "ieee80211w": "optional" 40 | }, 41 | "rate-limit": { 42 | "ingress-rate": 0, 43 | "egress-rate": 0 44 | } 45 | } 46 | ] 47 | }, 48 | { 49 | "name": "LAN", 50 | "role": "downstream", 51 | "services": [ "ssh", "lldp" ], 52 | "ethernet": [ 53 | { 54 | "select-ports": [ 55 | "LAN*" 56 | ] 57 | } 58 | ], 59 | "ipv4": { 60 | "addressing": "static", 61 | "subnet": "192.168.1.1/24", 62 | "dhcp": { 63 | "lease-first": 10, 64 | "lease-count": 100, 65 | "lease-time": "6h" 66 | } 67 | } 68 | } 69 | ], 70 | "metrics": { 71 | "statistics": { 72 | "interval": 120, 73 | "types": [ "ssids", "lldp", "clients" ] 74 | }, 75 | "health": { 76 | "interval": 120 77 | }, 78 | "wifi-frames": { 79 | "filters": [ "probe", "auth" ] 80 | } 81 | }, 82 | "services": { 83 | "lldp": { 84 | "describe": "uCentral", 85 | "location": "universe" 86 | }, 87 | "ssh": { 88 | "port": 22 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /config/ratelimit_2.4enable_cases.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | 5 | { 6 | "band": "2G", 7 | "channel": 11, 8 | "channel-mode": "HE", 9 | "channel-width": 20, 10 | "country": "CA" 11 | } 12 | ], 13 | 14 | "interfaces": [ 15 | { 16 | "name": "WAN", 17 | "role": "upstream", 18 | "services": [ "lldp" ], 19 | "ethernet": [ 20 | { 21 | "select-ports": [ 22 | "WAN*" 23 | ] 24 | } 25 | ], 26 | "ipv4": { 27 | "addressing": "dynamic" 28 | }, 29 | "ssids": [ 30 | { 31 | "name": "SSID1", 32 | "wifi-bands": [ 33 | "2G" 34 | ], 35 | "bss-mode": "ap", 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "OpenWifi", 39 | "ieee80211w": "optional" 40 | }, 41 | "rate-limit": { 42 | "ingress-rate": 50, 43 | "egress-rate": 50 44 | } 45 | } 46 | ] 47 | }, 48 | { 49 | "name": "LAN", 50 | "role": "downstream", 51 | "services": [ "ssh", "lldp" ], 52 | "ethernet": [ 53 | { 54 | "select-ports": [ 55 | "LAN*" 56 | ] 57 | } 58 | ], 59 | "ipv4": { 60 | "addressing": "static", 61 | "subnet": "192.168.1.1/24", 62 | "dhcp": { 63 | "lease-first": 10, 64 | "lease-count": 100, 65 | "lease-time": "6h" 66 | } 67 | } 68 | } 69 | ], 70 | "metrics": { 71 | "statistics": { 72 | "interval": 120, 73 | "types": [ "ssids", "lldp", "clients" ] 74 | }, 75 | "health": { 76 | "interval": 120 77 | }, 78 | "wifi-frames": { 79 | "filters": [ "probe", "auth" ] 80 | } 81 | }, 82 | "services": { 83 | "lldp": { 84 | "describe": "uCentral", 85 | "location": "universe" 86 | }, 87 | "ssh": { 88 | "port": 22 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /config/ratelimit_5_noteffect_otherSSID.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | { 5 | "band": "5G", 6 | "channel": 149, 7 | "channel-mode": "HE", 8 | "channel-width": 80, 9 | "country": "CA" 10 | } 11 | ], 12 | 13 | "interfaces": [ 14 | { 15 | "name": "WAN", 16 | "role": "upstream", 17 | "services": [ "lldp" ], 18 | "ethernet": [ 19 | { 20 | "select-ports": [ 21 | "WAN*" 22 | ] 23 | } 24 | ], 25 | "ipv4": { 26 | "addressing": "dynamic" 27 | }, 28 | "ssids": [ 29 | { 30 | "name": "SSID1", 31 | "wifi-bands": [ 32 | "5G" 33 | ], 34 | "bss-mode": "ap", 35 | "encryption": { 36 | "proto": "psk2", 37 | "key": "OpenWifi", 38 | "ieee80211w": "optional" 39 | }, 40 | "rate-limit": { 41 | "ingress-rate": 20, 42 | "egress-rate": 20 43 | } 44 | }, 45 | { 46 | "name": "SSID2", 47 | "wifi-bands": [ 48 | "5G" 49 | ], 50 | "bss-mode": "ap", 51 | "encryption": { 52 | "proto": "psk2", 53 | "key": "OpenWifi", 54 | "ieee80211w": "optional" 55 | }, 56 | "rate-limit": { 57 | "ingress-rate": 0, 58 | "egress-rate": 0 59 | } 60 | } 61 | ] 62 | }, 63 | { 64 | "name": "LAN", 65 | "role": "downstream", 66 | "services": [ "ssh", "lldp" ], 67 | "ethernet": [ 68 | { 69 | "select-ports": [ 70 | "LAN*" 71 | ] 72 | } 73 | ], 74 | "ipv4": { 75 | "addressing": "static", 76 | "subnet": "192.168.1.1/24", 77 | "dhcp": { 78 | "lease-first": 10, 79 | "lease-count": 100, 80 | "lease-time": "6h" 81 | } 82 | } 83 | } 84 | ], 85 | "metrics": { 86 | "statistics": { 87 | "interval": 120, 88 | "types": [ "ssids", "lldp", "clients" ] 89 | }, 90 | "health": { 91 | "interval": 120 92 | }, 93 | "wifi-frames": { 94 | "filters": [ "probe", "auth" ] 95 | } 96 | }, 97 | "services": { 98 | "lldp": { 99 | "describe": "uCentral", 100 | "location": "universe" 101 | }, 102 | "ssh": { 103 | "port": 22 104 | } 105 | } 106 | } -------------------------------------------------------------------------------- /config/ratelimit_5disable_cases.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | { 5 | "band": "5G", 6 | "channel": 149, 7 | "channel-mode": "HE", 8 | "channel-width": 80, 9 | "country": "CA" 10 | } 11 | ], 12 | 13 | "interfaces": [ 14 | { 15 | "name": "WAN", 16 | "role": "upstream", 17 | "services": [ "lldp" ], 18 | "ethernet": [ 19 | { 20 | "select-ports": [ 21 | "WAN*" 22 | ] 23 | } 24 | ], 25 | "ipv4": { 26 | "addressing": "dynamic" 27 | }, 28 | "ssids": [ 29 | 30 | { 31 | "name": "SSID1", 32 | "wifi-bands": [ 33 | "5G" 34 | ], 35 | "bss-mode": "ap", 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "OpenWifi", 39 | "ieee80211w": "optional" 40 | }, 41 | "rate-limit": { 42 | "ingress-rate": 0, 43 | "egress-rate": 0 44 | } 45 | } 46 | ] 47 | }, 48 | { 49 | "name": "LAN", 50 | "role": "downstream", 51 | "services": [ "ssh", "lldp" ], 52 | "ethernet": [ 53 | { 54 | "select-ports": [ 55 | "LAN*" 56 | ] 57 | } 58 | ], 59 | "ipv4": { 60 | "addressing": "static", 61 | "subnet": "192.168.1.1/24", 62 | "dhcp": { 63 | "lease-first": 10, 64 | "lease-count": 100, 65 | "lease-time": "6h" 66 | } 67 | } 68 | } 69 | ], 70 | "metrics": { 71 | "statistics": { 72 | "interval": 120, 73 | "types": [ "ssids", "lldp", "clients" ] 74 | }, 75 | "health": { 76 | "interval": 120 77 | }, 78 | "wifi-frames": { 79 | "filters": [ "probe", "auth" ] 80 | } 81 | }, 82 | "services": { 83 | "lldp": { 84 | "describe": "uCentral", 85 | "location": "universe" 86 | }, 87 | "ssh": { 88 | "port": 22 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /config/ratelimit_5enable_cases.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | { 5 | "band": "5G", 6 | "channel": 149, 7 | "channel-mode": "HE", 8 | "channel-width": 80, 9 | "country": "CA" 10 | } 11 | ], 12 | 13 | "interfaces": [ 14 | { 15 | "name": "WAN", 16 | "role": "upstream", 17 | "services": [ "lldp" ], 18 | "ethernet": [ 19 | { 20 | "select-ports": [ 21 | "WAN*" 22 | ] 23 | } 24 | ], 25 | "ipv4": { 26 | "addressing": "dynamic" 27 | }, 28 | "ssids": [ 29 | 30 | { 31 | "name": "SSID1", 32 | "wifi-bands": [ 33 | "5G" 34 | ], 35 | "bss-mode": "ap", 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "OpenWifi", 39 | "ieee80211w": "optional" 40 | }, 41 | "rate-limit": { 42 | "ingress-rate": 50, 43 | "egress-rate": 50 44 | } 45 | } 46 | ] 47 | }, 48 | { 49 | "name": "LAN", 50 | "role": "downstream", 51 | "services": [ "ssh", "lldp" ], 52 | "ethernet": [ 53 | { 54 | "select-ports": [ 55 | "LAN*" 56 | ] 57 | } 58 | ], 59 | "ipv4": { 60 | "addressing": "static", 61 | "subnet": "192.168.1.1/24", 62 | "dhcp": { 63 | "lease-first": 10, 64 | "lease-count": 100, 65 | "lease-time": "6h" 66 | } 67 | } 68 | } 69 | ], 70 | "metrics": { 71 | "statistics": { 72 | "interval": 120, 73 | "types": [ "ssids", "lldp", "clients" ] 74 | }, 75 | "health": { 76 | "interval": 120 77 | }, 78 | "wifi-frames": { 79 | "filters": [ "probe", "auth" ] 80 | } 81 | }, 82 | "services": { 83 | "lldp": { 84 | "describe": "uCentral", 85 | "location": "universe" 86 | }, 87 | "ssh": { 88 | "port": 22 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /config/ratelimit_70mbps.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | 5 | { 6 | "band": "2G", 7 | "channel": 6, 8 | "channel-mode": "HE", 9 | "channel-width": 20, 10 | "country": "CA" 11 | } 12 | ], 13 | 14 | "interfaces": [ 15 | { 16 | "name": "WAN", 17 | "role": "upstream", 18 | "services": [ "lldp" ], 19 | "ethernet": [ 20 | { 21 | "select-ports": [ 22 | "WAN*" 23 | ] 24 | } 25 | ], 26 | "ipv4": { 27 | "addressing": "dynamic" 28 | }, 29 | "ssids": [ 30 | { 31 | "name": "SSID1", 32 | "wifi-bands": [ 33 | "2G" 34 | ], 35 | "bss-mode": "ap", 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "OpenWifi", 39 | "ieee80211w": "optional" 40 | }, 41 | "rate-limit": { 42 | "ingress-rate": 70, 43 | "egress-rate": 70 44 | } 45 | } 46 | ] 47 | }, 48 | { 49 | "name": "LAN", 50 | "role": "downstream", 51 | "services": [ "ssh", "lldp" ], 52 | "ethernet": [ 53 | { 54 | "select-ports": [ 55 | "LAN*" 56 | ] 57 | } 58 | ], 59 | "ipv4": { 60 | "addressing": "static", 61 | "subnet": "192.168.1.1/24", 62 | "dhcp": { 63 | "lease-first": 10, 64 | "lease-count": 100, 65 | "lease-time": "6h" 66 | } 67 | } 68 | } 69 | ], 70 | "metrics": { 71 | "statistics": { 72 | "interval": 120, 73 | "types": [ "ssids", "lldp", "clients" ] 74 | }, 75 | "health": { 76 | "interval": 120 77 | }, 78 | "wifi-frames": { 79 | "filters": [ "probe", "auth" ] 80 | } 81 | }, 82 | "services": { 83 | "lldp": { 84 | "describe": "uCentral", 85 | "location": "universe" 86 | }, 87 | "ssh": { 88 | "port": 22 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /config/ratelimt_2ssids.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | 5 | { 6 | "band": "2G", 7 | "channel": 6, 8 | "channel-mode": "HE", 9 | "channel-width": 20, 10 | "country": "CA" 11 | } 12 | ], 13 | 14 | "interfaces": [ 15 | { 16 | "name": "WAN", 17 | "role": "upstream", 18 | "services": [ "lldp" ], 19 | "ethernet": [ 20 | { 21 | "select-ports": [ 22 | "WAN*" 23 | ] 24 | } 25 | ], 26 | "ipv4": { 27 | "addressing": "dynamic" 28 | }, 29 | "ssids": [ 30 | { 31 | "name": "SSID1", 32 | "wifi-bands": [ 33 | "2G" 34 | ], 35 | "bss-mode": "ap", 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "OpenWifi", 39 | "ieee80211w": "optional" 40 | }, 41 | "rate-limit": { 42 | "ingress-rate": 20, 43 | "egress-rate": 20 44 | } 45 | }, 46 | { 47 | "name": "SSID2", 48 | "wifi-bands": [ 49 | "2G" 50 | ], 51 | "bss-mode": "ap", 52 | "encryption": { 53 | "proto": "psk2", 54 | "key": "OpenWifi", 55 | "ieee80211w": "optional" 56 | }, 57 | "rate-limit": { 58 | "ingress-rate": 0, 59 | "egress-rate": 0 60 | } 61 | } 62 | ] 63 | }, 64 | { 65 | "name": "LAN", 66 | "role": "downstream", 67 | "services": [ "ssh", "lldp" ], 68 | "ethernet": [ 69 | { 70 | "select-ports": [ 71 | "LAN*" 72 | ] 73 | } 74 | ], 75 | "ipv4": { 76 | "addressing": "static", 77 | "subnet": "192.168.1.1/24", 78 | "dhcp": { 79 | "lease-first": 10, 80 | "lease-count": 100, 81 | "lease-time": "6h" 82 | } 83 | } 84 | } 85 | ], 86 | "metrics": { 87 | "statistics": { 88 | "interval": 120, 89 | "types": [ "ssids", "lldp", "clients" ] 90 | }, 91 | "health": { 92 | "interval": 120 93 | }, 94 | "wifi-frames": { 95 | "filters": [ "probe", "auth" ] 96 | } 97 | }, 98 | "services": { 99 | "lldp": { 100 | "describe": "uCentral", 101 | "location": "universe" 102 | }, 103 | "ssh": { 104 | "port": 22 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /config/wpa 2.4 bridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "configuration": { 3 | "uuid": 1, 4 | "radios": [ 5 | { 6 | "band": "2G", 7 | "country": "US", 8 | "channel-width": 20 9 | } 10 | ], 11 | "interfaces": [ 12 | { 13 | "name": "WAN", 14 | "role": "upstream", 15 | "services": [ 16 | "lldp" 17 | ], 18 | "ethernet": [ 19 | { 20 | "select-ports": [ 21 | "WAN*" 22 | ] 23 | } 24 | ], 25 | "ipv4": { 26 | "addressing": "dynamic" 27 | }, 28 | "ssids": [ 29 | 30 | { 31 | "name": "ssid_wpa_2g", 32 | "bss-mode": "ap", 33 | "wifi-bands": [ 34 | "2G" 35 | ], 36 | "encryption": { 37 | "proto": "psk", 38 | "key": "something", 39 | "ieee80211w": "optional" 40 | } 41 | } 42 | ] 43 | } 44 | ], 45 | "metrics": { 46 | "statistics": { 47 | "interval": 120, 48 | "types": [ 49 | "ssids", 50 | "lldp", 51 | "clients" 52 | ] 53 | }, 54 | "health": { 55 | "interval": 120 56 | } 57 | }, 58 | "services": { 59 | "lldp": { 60 | "describe": "uCentral", 61 | "location": "universe" 62 | }, 63 | "ssh": { 64 | "port": 22 65 | } 66 | } 67 | }, 68 | "serialNumber": "903cb39d6918", 69 | "UUID": 0 70 | } -------------------------------------------------------------------------------- /config/wpa2_2.4_bridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 1, 3 | "radios": [ 4 | { 5 | "band": "2G", 6 | "country": "US", 7 | "channel-width": 20 8 | } 9 | ], 10 | "interfaces": [ 11 | { 12 | "name": "WAN", 13 | "role": "upstream", 14 | "services": [ 15 | "lldp" 16 | ], 17 | "ethernet": [ 18 | { 19 | "select-ports": [ 20 | "WAN*" 21 | ] 22 | } 23 | ], 24 | "ipv4": { 25 | "addressing": "dynamic" 26 | }, 27 | "ssids": [ 28 | 29 | 30 | { 31 | "name": "ssid_wpa2_2g", 32 | "bss-mode": "ap", 33 | "wifi-bands": [ 34 | "2G" 35 | ], 36 | "encryption": { 37 | "proto": "psk2", 38 | "key": "something", 39 | "ieee80211w": "optional" 40 | } 41 | 42 | } 43 | ] 44 | } 45 | ], 46 | "metrics": { 47 | "statistics": { 48 | "interval": 120, 49 | "types": [ 50 | "ssids", 51 | "lldp", 52 | "clients" 53 | ] 54 | }, 55 | "health": { 56 | "interval": 120 57 | } 58 | }, 59 | "services": { 60 | "lldp": { 61 | "describe": "uCentral", 62 | "location": "universe" 63 | }, 64 | "ssh": { 65 | "port": 22 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /config/wpa2_nat.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 1, 3 | "radios": [ 4 | { 5 | "band": "2G", 6 | "country": "US", 7 | "channel-width": 20 8 | }, 9 | { 10 | "band": "5G", 11 | "country": "US", 12 | "channel-width": 80 13 | } 14 | ], 15 | "interfaces": [ 16 | { 17 | "name": "WAN", 18 | "role": "upstream", 19 | "services": [ 20 | "lldp" 21 | ], 22 | "ethernet": [ 23 | { 24 | "select-ports": [ 25 | "WAN*" 26 | ] 27 | } 28 | ], 29 | "ipv4": { 30 | "addressing": "dynamic" 31 | } 32 | }, 33 | { 34 | "name": "LAN", 35 | "role": "downstream", 36 | "services": [ 37 | "ssh", 38 | "lldp" 39 | ], 40 | "ethernet": [ 41 | { 42 | "select-ports": [ 43 | "LAN*" 44 | ] 45 | } 46 | ], 47 | "ipv4": { 48 | "addressing": "static", 49 | "subnet": "192.168.1.1/16", 50 | "dhcp": { 51 | "lease-first": 10, 52 | "lease-count": 10000, 53 | "lease-time": "6h" 54 | } 55 | }, 56 | "ssids": [ 57 | 58 | { 59 | "name": "ssid_wpa2_2g", 60 | "bss-mode": "ap", 61 | "wifi-bands": [ 62 | "2G" 63 | ], 64 | "encryption": { 65 | "proto": "psk2", 66 | "key": "something", 67 | "ieee80211w": "optional" 68 | } 69 | }, 70 | { 71 | "name": "ssid_wpa2_5g", 72 | "bss-mode": "ap", 73 | "wifi-bands": [ 74 | "5G" 75 | ], 76 | "encryption": { 77 | "proto": "psk2", 78 | "key": "something", 79 | "ieee80211w": "optional" 80 | } 81 | } 82 | ] 83 | } 84 | ], 85 | "metrics": { 86 | "statistics": { 87 | "interval": 120, 88 | "types": [ 89 | "ssids", 90 | "lldp", 91 | "clients" 92 | ] 93 | }, 94 | "health": { 95 | "interval": 120 96 | } 97 | }, 98 | "services": { 99 | "lldp": { 100 | "describe": "uCentral", 101 | "location": "universe" 102 | }, 103 | "ssh": { 104 | "port": 22 105 | } 106 | } 107 | } -------------------------------------------------------------------------------- /dependencies.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | if [ -d ../lanforge-scripts ] 5 | then 6 | rm -fr lanforge/lanforge-scripts 7 | 8 | cp -a ../lanforge-scripts lanforge/lanforge-scripts 9 | fi -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.8 2 | # Version of cloudsdk to be tested 3 | ARG CLOUDSDK_LIBRARY=tip_2x 4 | ARG TEST_DEVICE_NAME=all 5 | 6 | RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ 7 | tshark \ 8 | && rm -rf /var/lib/apt/lists/* 9 | RUN mkdir ~/.pip 10 | RUN echo "[global]" > ~/.pip/pip.conf 11 | RUN echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf 12 | RUN echo "extra-index-url = https://tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple/" >> ~/.pip/pip.conf 13 | COPY requirements.txt /wlan-testing/requirements.txt 14 | RUN pip3 install -r /wlan-testing/requirements.txt 15 | COPY tests /wlan-testing/tests 16 | COPY libs /wlan-testing/libs 17 | COPY setup_env.bash /wlan-testing/setup_env.bash 18 | ENV PYTHON=/usr/local/bin/python3 19 | ENV PIP=/usr/local/bin/pip3 20 | RUN /wlan-testing/setup_env.bash -t $CLOUDSDK_LIBRARY -d $TEST_DEVICE_NAME -n "TIP Automation" -o TIP -e tip-automation@telecominfraproject.com -i "TIP OpenWIFI Library" && pip3 freeze 21 | WORKDIR /wlan-testing 22 | ENTRYPOINT ["/bin/bash"] 23 | -------------------------------------------------------------------------------- /docker/README.md: -------------------------------------------------------------------------------- 1 | ## Docker based environment 2 | 3 | ### Building a docker image 4 | 5 | From the root directory of this repository (wlan-testing) run the following command: 6 | 7 | ```bash 8 | docker build -f ./docker/Dockerfile -t wlantest . 9 | ``` 10 | 11 | This will produce a docker image, which you can verify by running docker images command. 12 | 13 | By default image will run [setup_env.bash](../setup_env.bash) that will install all required dependencies for tests against all supported devices and version 2 of Cloud SDK (see https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/ for details). 14 | 15 | If you want to modify this logic, you may pass different build arguments to the build. Supported arguments: 16 | 17 | - CLOUDSDK_LIBRARY - Cloud SDK library that should be used for tests (by default `tip_2x` will be used); 18 | - TEST_DEVICE_NAME - device type that should be installed as a depencency (by default `all` will be used). 19 | 20 | Check [setup_env.bash](../setup_env.bash) for more details on supported parameters. 21 | 22 | Example on how to pass build arguments: 23 | 24 | ```bash 25 | docker build -f ./docker/Dockerfile -t wlantest --build-arg TEST_DEVICE_NAME=lanforge . 26 | ``` 27 | 28 | ### Running a docker image 29 | 30 | From the root directory of this repository (wlan-testing) run the following command. This command executes 31 | connectivity tests on a specific lab. **NOTE:** Use appropriate marker for your pytest execution, 32 | configuration.py and replace ${YOUR_ALLURE_RESULTS_DIR} with your allure result dir. 33 | 34 | ```bash 35 | docker run -i -t -v $(YOUR_ALLURE_RESULT_DIR):/allure-results -v $(pwd)/configuration.py:/wlan-testing/configuration.py wlantest -c "cd tests; pytest -s -vvv --testbed=basic-02 -m client_connectivity_test --skip-testrail --alluredir=/allure-result" 36 | ``` 37 | -------------------------------------------------------------------------------- /dut_lib_template/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/dut_lib_template/README.md -------------------------------------------------------------------------------- /dut_lib_template/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/dut_lib_template/__init__.py -------------------------------------------------------------------------------- /dut_lib_template/setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name='dut_lib_template', 8 | version='0.1', 9 | scripts=['dut_lib_template.py', 'controller.py', 'ap_lib.py', 'SetupLibrary.py', 'openwrt_ctl.py'], 10 | author="Shivam Thakur", 11 | author_email="shivam.thakur@candelatech.com", 12 | description="TIP OpenWIFI 2.X Library", 13 | long_description=long_description, 14 | long_description_content_type="text/markdown", 15 | packages=setuptools.find_packages(), 16 | classifiers=[ 17 | "Programming Language :: Python :: 3", 18 | "License :: OSI Approved :: MIT License", 19 | "Operating System :: OS Independent", 20 | ], 21 | ) 22 | -------------------------------------------------------------------------------- /libs/README.md: -------------------------------------------------------------------------------- 1 | ## Libraries 2 | This directory contains all the relevant libraries for APNOS, Cloud Controller, LANForge, Perfecto and others 3 | -------------------------------------------------------------------------------- /libs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/__init__.py -------------------------------------------------------------------------------- /libs/apnos/README.md: -------------------------------------------------------------------------------- 1 | ## AP NOS Library 2 | ###apnos.py : This Library Consists of the following- 3 | 1. class APNOS : Library to SSH and Pull the information from AP 4 | 5 | -------------------------------------------------------------------------------- /libs/apnos/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/apnos/__init__.py -------------------------------------------------------------------------------- /libs/controller/README.md: -------------------------------------------------------------------------------- 1 | # Controller Library 2 | 3 | ###cloudsdk.py : This Library Consists of the following- 4 | 1. class ConfigureController : Base Configuration Class 5 | 2. class Controller(ConfigureController) : Main Cloudsdk Class 6 | 3. class ProfileUtility : Used to CRUD over CloudSDK Profiles Utility 7 | 4. class JFrogUtility : Used for Artifactory Utils, Get latest Build, Upload Firmware etc. 8 | 9 | ###Note: cloudsdk.py has libraries that uses Swagger Autogenerated Code. 10 | ### Setup The Environment For using the cloudsdk library 11 | 12 | Using Swagger Autogenerated CloudSDK Library pypi package (implemented with [swagger codegen](https://github.com/swagger-api/swagger-codegen)). 13 | Using [pytest] as the test execution framework. 14 | Using [pylint](http://pylint.pycqa.org) for code quality monitoring. 15 | Using [allure](https://docs.qameta.io/allure/#_about) with Github Pages to report test outcome. 16 | 17 | ### Follow the setps below to setup the environment for your development Environment 18 | 19 | ```shell 20 | mkdir ~/.pip 21 | echo "[global]" > ~/.pip/pip.conf 22 | echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf 23 | echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf 24 | ``` 25 | 26 | after that do the following in this folder 27 | ```shell 28 | pip3 install -r requirements.txt 29 | ``` 30 | 31 | Now your cloud sdk code is downloaded with all of the dependencies and you can start working on the solution 32 | 33 | ### Docker 34 | 35 | Alternatively you can use provided dockerfiles to develop\lint your code: 36 | 37 | ```shell 38 | docker build -t wlan-cloud-test -f Dockerfile . 39 | docker build -t wlan-cloud-lint -f Dockerfile-lint . 40 | ``` 41 | 42 | and then you can do something like this to lint your code: 43 | 44 | ```shell 45 | docker run -it --rm -v %path_to_this_dir%/old_pytest wlan-tip-lint -d protected-access *py # for now 46 | docker run -it --rm -v %path_to_this_dir%/old_pytest wlan-tip-lint *py # for future 47 | ``` 48 | 49 | to have a better output (sorted by line numbers) you can do something like this: 50 | 51 | ```shell 52 | docker run -it --rm --entrypoint sh -v %path_to_this_dir%/old_pytest wlan-tip-lint -- -c 'pylint *py | sort -t ":" -k 2,2n' 53 | ``` 54 | 55 | and you can use something like this to develop your code: 56 | 57 | ```shell 58 | docker run -it -v %path_to_this_dir%/old_pytest wlan-tip-test 59 | ``` -------------------------------------------------------------------------------- /libs/controller/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/controller/__init__.py -------------------------------------------------------------------------------- /libs/controller/controller_1x/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/controller/controller_1x/__init__.py -------------------------------------------------------------------------------- /libs/controller/controller_2x/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/controller/controller_2x/__init__.py -------------------------------------------------------------------------------- /libs/controller/controller_3x/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/controller/controller_3x/__init__.py -------------------------------------------------------------------------------- /libs/network_connectivity/NetworkConnectivity.py: -------------------------------------------------------------------------------- 1 | REMOTE_SERVER_IP = "3.130.51.163" 2 | import subprocess 3 | import time 4 | import threading 5 | 6 | 7 | class SshTunnel(threading.Thread): 8 | def __init__(self, localport, remoteport, remoteuser, remotehost): 9 | threading.Thread.__init__(self) 10 | self.localport = localport # Local port to listen to 11 | self.remoteport = remoteport # Remote port on remotehost 12 | self.remoteuser = remoteuser # Remote user on remotehost 13 | self.remotehost = remotehost # What host do we send traffic to 14 | self.daemon = True # So that thread will exit when 15 | # main non-daemon thread finishes 16 | 17 | def run(self): 18 | a = subprocess.call([ 19 | 'ssh', '-C', 20 | '-L', str(self.localport) + ':' + "10.28.3.10" + ':' + str(self.remoteport), 21 | self.remoteuser + '@' + self.remotehost]) 22 | 23 | 24 | 25 | if __name__ == '__main__': 26 | tunnel = SshTunnel(8800, 8080, 'ubuntu', REMOTE_SERVER_IP) 27 | tunnel.start() 28 | tunnel.join() 29 | # subprocess.call(['curl', 'http://10.28.3.10:8800']) 30 | -------------------------------------------------------------------------------- /libs/network_connectivity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/network_connectivity/__init__.py -------------------------------------------------------------------------------- /libs/perfecto_interop/README.md: -------------------------------------------------------------------------------- 1 | ## Perfecto libraries 2 | #Initial Check in - Raj 3 | -------------------------------------------------------------------------------- /libs/perfecto_interop/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/perfecto_interop/__init__.py -------------------------------------------------------------------------------- /libs/perfecto_interop/setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name='perfecto_interop', 8 | version='0.1', 9 | scripts=["perfecto_interop.py", "android_libs.py", "ios_libs.py", "android_tests.py", "ios_tests.py"], 10 | author="Shivam Thakur", 11 | author_email="shivam.thakur@candelatech.com", 12 | description="TIP OpenWIFI Perfecto Test Automation", 13 | long_description=long_description, 14 | long_description_content_type="text/markdown", 15 | packages=setuptools.find_packages(), 16 | classifiers=[ 17 | "Programming Language :: Python :: 3", 18 | "License :: OSI Approved :: MIT License", 19 | "Operating System :: OS Independent", 20 | ], 21 | ) 22 | 23 | -------------------------------------------------------------------------------- /libs/testrails/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/testrails/__init__.py -------------------------------------------------------------------------------- /libs/testrails/reporting.py: -------------------------------------------------------------------------------- 1 | import allure 2 | 3 | 4 | class Reporting: 5 | 6 | def __init__(self): 7 | self.rid = None 8 | pass 9 | 10 | def update_testrail(self, case_id=None, run_id=None, status_id=1, msg=None): 11 | allure.attach(name=str(msg), body="") 12 | pass 13 | -------------------------------------------------------------------------------- /libs/tip_1x/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/tip_1x/__init__.py -------------------------------------------------------------------------------- /libs/tip_2x/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/libs/tip_2x/README.md -------------------------------------------------------------------------------- /libs/tip_2x/setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name='tip_2x', 8 | version='0.1', 9 | scripts=['tip_2x.py', 'controller.py', 'ap_lib.py', 'SetupLibrary.py', 'openwrt_ctl.py'], 10 | author="Shivam Thakur", 11 | author_email="shivam.thakur@candelatech.com", 12 | description="TIP OpenWIFI 2.X Library", 13 | long_description=long_description, 14 | long_description_content_type="text/markdown", 15 | packages=setuptools.find_packages(), 16 | classifiers=[ 17 | "Programming Language :: Python :: 3", 18 | "License :: OSI Approved :: MIT License", 19 | "Operating System :: OS Independent", 20 | ], 21 | ) 22 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | allure-pytest 2 | Appium-Python-Client==1.2.0 3 | bs4 4 | influxdb 5 | influxdb-client 6 | pandas 7 | paramiko 8 | perfecto-py37 9 | pyshark 10 | pytest==6.2.2 11 | requests 12 | scp 13 | selenium 14 | tip-wlan-cloud 15 | xlsxwriter 16 | tabulate 17 | pdfkit 18 | matplotlib 19 | kafka-python 20 | jsonschema -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/__init__.py -------------------------------------------------------------------------------- /tests/access_point_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/access_point_tests/__init__.py -------------------------------------------------------------------------------- /tests/access_point_tests/master_config_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/access_point_tests/master_config_tests/__init__.py -------------------------------------------------------------------------------- /tests/configuration.py: -------------------------------------------------------------------------------- 1 | """ 2 | ec420 basic-03 3 | ecw5410 basic-04 4 | ecw5211 not available in basic 5 | wf188n config 6 | eap102 basic-06 7 | eap101 basic-02 8 | wf194c baisc-08-02 9 | 10 | ssh -C -L 8800:lf1:4002 -L 8801:lf1:5901 -L 8802:lf1:8080 -L 8803:lab-ctlr:22 \ # basic-01 11 | -L 8720:lf2:4002 -L 8721:lf2:5901 -L 8722:lf2:8080 -L 8723:lab-ctlr:22 \ # basic-02 12 | -L 8830:lf3:4002 -L 8831:lf3:5901 -L 8832:lf3:8080 -L 8833:lab-ctlr:22 \ # basic-03 13 | -L 8810:lf4:4002 -L 8811:lf4:5901 -L 8812:lf4:8080 -L 8813:lab-ctlr:22 \ # basic-04 14 | -L 8850:lf12:4002 -L 8851:lf12:5901 -L 8852:lf12:8080 -L 8853:lab-ctlr4:22 \ # config 15 | -L 8860:lf13:4002 -L 8861:lf13:5901 -L 8862:lf13:8080 -L 8863:lab-ctlr4:22 \ # basic-06 16 | -L 8870:lf14:4002 -L 8871:lf14:5901 -L 8872:lf14:8080 -L 8873:lab-ctlr4:22 \ # basic-07 17 | -L 8880:lf15:4002 -L 8881:lf15:5901 -L 8882:lf15:8080 -L 8883:lab-ctlr4:22 \ # basic-08 18 | ubuntu@3.130.51.163 19 | 20 | 21 | 22 | ssh -C -L 8800:lf1:4002 -L 8801:lf1:5901 -L 8802:lf1:8080 -L 8803:lab-ctlr:22 \ 23 | -L 8720:lf2:4002 -L 8721:lf2:5901 -L 8722:lf2:8080 -L 8723:lab-ctlr:22 \ 24 | -L 8830:lf3:4002 -L 8831:lf3:5901 -L 8832:lf3:8080 -L 8833:lab-ctlr:22 \ 25 | -L 8810:lf4:4002 -L 8811:lf4:5901 -L 8812:lf4:8080 -L 8813:lab-ctlr:22 \ 26 | -L 8850:lf12:4002 -L 8851:lf12:5901 -L 8852:lf12:8080 -L 8853:lab-ctlr4:22 \ 27 | -L 8860:lf13:4002 -L 8861:lf13:5901 -L 8862:lf13:8080 -L 8863:lab-ctlr4:22 \ 28 | -L 8870:lf14:4002 -L 8871:lf14:5901 -L 8872:lf14:8080 -L 8873:lab-ctlr4:22 \ 29 | -L 8880:lf15:4002 -L 8881:lf15:5901 -L 8882:lf15:8080 -L 8883:lab-ctlr4:22 \ 30 | ubuntu@3.130.51.163 31 | 32 | """ 33 | 34 | import json 35 | with open('lab_info.json', 'r') as f: 36 | data = json.load(f) 37 | 38 | CONFIGURATION = data["CONFIGURATION"] 39 | 40 | PERFECTO_DETAILS = data["PERFECTO_DETAILS"] 41 | 42 | RADIUS_SERVER_DATA = data["RADIUS_SERVER_DATA"] 43 | 44 | RADIUS_ACCOUNTING_DATA = data["RADIUS_ACCOUNTING_DATA"] 45 | 46 | RATE_LIMITING_RADIUS_SERVER_DATA = data["RATE_LIMITING_RADIUS_SERVER_DATA"] 47 | 48 | RATE_LIMITING_RADIUS_ACCOUNTING_DATA = data["RATE_LIMITING_RADIUS_ACCOUNTING_DATA"] 49 | 50 | DYNAMIC_VLAN_RADIUS_SERVER_DATA = data["DYNAMIC_VLAN_RADIUS_SERVER_DATA"] 51 | 52 | DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA = data["DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA"] 53 | 54 | PASSPOINT_RADIUS_SERVER_DATA = data["PASSPOINT_RADIUS_SERVER_DATA"] 55 | 56 | PASSPOINT_RADIUS_ACCOUNTING_SERVER_DATA = data["PASSPOINT_RADIUS_ACCOUNTING_SERVER_DATA"] 57 | 58 | PASSPOINT = data["PASSPOINT"] 59 | 60 | PASSPOINT = data["PASSPOINT"] 61 | 62 | open_flow = data["open_flow"] 63 | 64 | influx_params = data["influx_params"] -------------------------------------------------------------------------------- /tests/controller_tests/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/controller_tests/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/controller_tests/conftest.py -------------------------------------------------------------------------------- /tests/controller_tests/ucentral_gateway/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/controller_tests/ucentral_gateway/__init__.py -------------------------------------------------------------------------------- /tests/e2e/UseCase/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/UseCase/__init__.py -------------------------------------------------------------------------------- /tests/e2e/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/air_time_fairness_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/air_time_fairness_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/air_time_fairness_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/air_time_fairness_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/ap_co-existence/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/ap_co-existence/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/conftest.py: -------------------------------------------------------------------------------- 1 | import allure 2 | import pytest 3 | import logging 4 | 5 | @pytest.fixture(scope="class") 6 | def setup_configuration(request, get_markers, get_target_object, run_lf): 7 | # Predefined selected markers and selected configuration 8 | 9 | conf = dict(request.param) 10 | configuration = conf.copy() 11 | requested_combination = [] 12 | for key in get_markers: 13 | if get_markers[key]: 14 | requested_combination.append(get_markers[key]) 15 | 16 | # Method to setup the basic configuration 17 | data = {} 18 | if not run_lf: 19 | data = get_target_object.setup_basic_configuration(configuration=configuration, 20 | requested_combination=requested_combination) 21 | logging.info("dut_data after config applied: " + str(data)) 22 | yield data 23 | 24 | 25 | @pytest.fixture(scope="function") 26 | def check_connectivity(request, get_testbed_details, get_target_object, run_lf): 27 | def collect_logs(): 28 | for i in range(len(get_testbed_details["device_under_tests"])): 29 | ret_val = get_target_object.get_dut_library_object().ubus_call_ucentral_status(idx=i, attach_allure=True, 30 | retry=10) 31 | if not ret_val["connected"] or ret_val["connected"] is None: 32 | ap_logs = get_target_object.get_dut_library_object().get_dut_logs() 33 | allure.attach(name='Logs - ' + get_testbed_details["device_under_tests"][i]["identifier"], 34 | body=str(ap_logs)) 35 | 36 | allure.attach(name='Device : ' + get_testbed_details["device_under_tests"][i]["identifier"] + 37 | " is connected after Test", body="") 38 | 39 | if not run_lf: 40 | request.addfinalizer(collect_logs) -------------------------------------------------------------------------------- /tests/e2e/advanced/downlink_mu_mimo_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/downlink_mu_mimo_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/downlink_mu_mimo_test/open/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/downlink_mu_mimo_test/open/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/downlink_mu_mimo_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/downlink_mu_mimo_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/downlink_mu_mimo_test/wpa3_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/downlink_mu_mimo_test/wpa3_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/downlink_mu_mimo_test/wpa_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/downlink_mu_mimo_test/wpa_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/maximum_connection/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/maximum_connection/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/maximum_connection/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/maximum_connection/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/maximum_throughput_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/maximum_throughput_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/maximum_throughput_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/maximum_throughput_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/multi_association_disassociation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/multi_association_disassociation/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/multi_association_disassociation/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/multi_association_disassociation/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/multi_station_performance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/multi_station_performance/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/multi_station_performance/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/multi_station_performance/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/rate_vs_range/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/rate_vs_range/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/receiver_sensitivity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/receiver_sensitivity/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/roam_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/roam_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/roam_test/hard_roam/OTA/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/roam_test/hard_roam/OTA/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/roam_test/hard_roam/OTA/roam-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | { 5 | "band": "2G", 6 | "channel": 11, 7 | "channel-mode": "HE", 8 | "channel-width": 40, 9 | "country": "CA" 10 | }, 11 | { 12 | "band": "5G", 13 | "channel": 36, 14 | "channel-mode": "HE", 15 | "channel-width": 80, 16 | "country": "CA" 17 | } 18 | ], 19 | "interfaces": [ 20 | { 21 | "name": "WAN", 22 | "role": "upstream", 23 | "services": [ 24 | "lldp" 25 | ], 26 | "ethernet": [ 27 | { 28 | "select-ports": [ 29 | "WAN*" 30 | ] 31 | } 32 | ], 33 | "ipv4": { 34 | "addressing": "dynamic" 35 | }, 36 | "ssids": [ 37 | { 38 | "name": "OpenWifi", 39 | "wifi-bands": [ 40 | "2G","5G" 41 | ], 42 | "bss-mode": "ap", 43 | "encryption": { 44 | "proto": "psk2", 45 | "key": "Openwifi", 46 | "ieee80211w": "optional" 47 | }, 48 | "roaming": true, 49 | "services": [ 50 | "wifi-steering" 51 | ] 52 | } 53 | ] 54 | }, 55 | { 56 | "name": "LAN", 57 | "role": "downstream", 58 | "services": [ 59 | "ssh", 60 | "lldp" 61 | ], 62 | "ethernet": [ 63 | { 64 | "select-ports": [ 65 | "LAN*" 66 | ] 67 | } 68 | ], 69 | "ipv4": { 70 | "addressing": "static", 71 | "subnet": "192.168.1.1/24", 72 | "dhcp": { 73 | "lease-first": 10, 74 | "lease-count": 100, 75 | "lease-time": "6h" 76 | } 77 | } 78 | } 79 | ], 80 | "metrics": { 81 | "statistics": { 82 | "interval": 120, 83 | "types": [ 84 | "ssids", 85 | "lldp", 86 | "clients" 87 | ] 88 | }, 89 | "health": { 90 | "interval": 120 91 | }, 92 | "wifi-frames": { 93 | "filters": [ 94 | "probe", 95 | "auth" 96 | ] 97 | } 98 | }, 99 | "services": { 100 | "wifi-steering": { 101 | "mode": "local", 102 | "network": "upstream", 103 | "assoc-steering": true, 104 | "required-snr": -85, 105 | "required-probe-snr": -80, 106 | "required-roam-snr": -80, 107 | "load-kick-threshold": 90 108 | }, 109 | "ssh": { 110 | "port": 22 111 | } 112 | } 113 | } -------------------------------------------------------------------------------- /tests/e2e/advanced/roam_test/hard_roam/OTD/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/roam_test/hard_roam/OTD/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/roam_test/hard_roam/OTD/roam-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | { 5 | "band": "2G", 6 | "channel": 11, 7 | "channel-mode": "HE", 8 | "channel-width": 40, 9 | "country": "CA" 10 | }, 11 | { 12 | "band": "5G", 13 | "channel": 36, 14 | "channel-mode": "HE", 15 | "channel-width": 80, 16 | "country": "CA" 17 | } 18 | ], 19 | "interfaces": [ 20 | { 21 | "name": "WAN", 22 | "role": "upstream", 23 | "services": [ 24 | "lldp" 25 | ], 26 | "ethernet": [ 27 | { 28 | "select-ports": [ 29 | "WAN*" 30 | ] 31 | } 32 | ], 33 | "ipv4": { 34 | "addressing": "dynamic" 35 | }, 36 | "ssids": [ 37 | { 38 | "name": "OpenWifi", 39 | "wifi-bands": [ 40 | "2G","5G" 41 | ], 42 | "bss-mode": "ap", 43 | "encryption": { 44 | "proto": "psk2", 45 | "key": "OpenWifi", 46 | "ieee80211w": "optional" 47 | }, 48 | "roaming": { 49 | "message-exchange": "ds", 50 | "generate-psk": true 51 | }, 52 | "services": [ 53 | "wifi-steering" 54 | ] 55 | } 56 | ] 57 | }, 58 | { 59 | "name": "LAN", 60 | "role": "downstream", 61 | "services": [ 62 | "ssh", 63 | "lldp" 64 | ], 65 | "ethernet": [ 66 | { 67 | "select-ports": [ 68 | "LAN*" 69 | ] 70 | } 71 | ], 72 | "ipv4": { 73 | "addressing": "static", 74 | "subnet": "192.168.1.1/24", 75 | "dhcp": { 76 | "lease-first": 10, 77 | "lease-count": 100, 78 | "lease-time": "6h" 79 | } 80 | } 81 | } 82 | ], 83 | "metrics": { 84 | "statistics": { 85 | "interval": 120, 86 | "types": [ 87 | "ssids", 88 | "lldp", 89 | "clients" 90 | ] 91 | }, 92 | "health": { 93 | "interval": 120 94 | }, 95 | "wifi-frames": { 96 | "filters": [ 97 | "probe", 98 | "auth" 99 | ] 100 | } 101 | }, 102 | "services": { 103 | "wifi-steering": { 104 | "mode": "local", 105 | "network": "upstream", 106 | "assoc-steering": true, 107 | "required-snr": -85, 108 | "required-probe-snr": -80, 109 | "required-roam-snr": -80, 110 | "load-kick-threshold": 90 111 | }, 112 | "ssh": { 113 | "port": 22 114 | } 115 | } 116 | } -------------------------------------------------------------------------------- /tests/e2e/advanced/roam_test/hard_roam/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/roam_test/hard_roam/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/roam_test/roam_by_attenuation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/roam_test/roam_by_attenuation/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/spatial_consistency/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/spatial_consistency/__init__.py -------------------------------------------------------------------------------- /tests/e2e/advanced/spatial_consistency/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/advanced/spatial_consistency/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/advanced_captive_portal_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/advanced_captive_portal_tests/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/advanced_captive_portal_tests/external_captive_portal_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/advanced_captive_portal_tests/external_captive_portal_tests/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/advanced_captive_portal_tests/external_captive_portal_tests/open/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/advanced_captive_portal_tests/external_captive_portal_tests/open/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/advanced_captive_portal_tests/internal_captive_portal_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/advanced_captive_portal_tests/internal_captive_portal_tests/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/advanced_captive_portal_tests/internal_captive_portal_tests/open/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/advanced_captive_portal_tests/internal_captive_portal_tests/open/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/configuration_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/configuration_tests/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/configuration_tests/bridge_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/configuration_tests/bridge_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/configuration_tests/nat_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/configuration_tests/nat_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/configuration_tests/vlan_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/configuration_tests/vlan_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/conftest.py: -------------------------------------------------------------------------------- 1 | import allure 2 | import pytest 3 | import logging 4 | 5 | @pytest.fixture(scope="class") 6 | def setup_configuration(request, get_markers, get_target_object, run_lf): 7 | # Predefined selected markers and selected configuration 8 | 9 | conf = dict(request.param) 10 | configuration = conf.copy() 11 | requested_combination = [] 12 | for key in get_markers: 13 | if get_markers[key]: 14 | requested_combination.append(get_markers[key]) 15 | 16 | # Method to setup the basic configuration 17 | data = {} 18 | if not run_lf: 19 | data = get_target_object.setup_basic_configuration(configuration=configuration, 20 | requested_combination=requested_combination) 21 | logging.info("dut_data after config applied: " + str(data)) 22 | yield data 23 | -------------------------------------------------------------------------------- /tests/e2e/basic/dfs_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/dfs_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/dfs_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/dfs_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/dfs_test/wpa2_personal/dfs_20MHz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/dfs_test/wpa2_personal/dfs_20MHz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/dfs_test/wpa2_personal/dfs_40MHz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/dfs_test/wpa2_personal/dfs_40MHz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/dfs_test/wpa2_personal/dfs_80MHz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/dfs_test/wpa2_personal/dfs_80MHz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/endurance_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/endurance_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/endurance_test/bridge_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/endurance_test/bridge_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/endurance_test/bridge_mode/test_ap_stability.py: -------------------------------------------------------------------------------- 1 | """ 2 | 3 | Stability Test: Bridge Mode 4 | pytest -m "regression and bridge" 5 | 6 | """ 7 | 8 | import os 9 | import allure 10 | import pytest 11 | 12 | pytestmark = [pytest.mark.ow_stability_lf, 13 | pytest.mark.bridge] 14 | 15 | setup_params_general = { 16 | "mode": "BRIDGE", 17 | "ssid_modes": { 18 | "wpa2_personal": [ 19 | {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}, 20 | {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}]}, 21 | "rf": {}, 22 | "radius": False 23 | } 24 | 25 | 26 | @pytest.mark.regression 27 | @pytest.mark.wifi5 28 | @pytest.mark.wifi6 29 | @pytest.mark.parametrize( 30 | 'setup_configuration', 31 | [setup_params_general], 32 | indirect=True, 33 | scope="class" 34 | ) 35 | @pytest.mark.usefixtures("setup_configuration") 36 | class TestAPStabilityBridge(object): 37 | """ 38 | pytest -m "regression and bridge and wpa2_personal and twog and fiveg" 39 | """ 40 | 41 | @pytest.mark.wpa2_personal 42 | @pytest.mark.twog 43 | @pytest.mark.fiveg 44 | @allure.testcase(name="test_ap_stability_wpa2_personal", 45 | url="https://telecominfraproject.atlassian.net/browse/WIFI-3035") 46 | def test_ap_stability_wpa2_personal(self, lf_tools, 47 | create_lanforge_chamberview_dut, lf_test, get_configuration): 48 | profile_data = setup_params_general["ssid_modes"]["wpa2_personal"] 49 | ssid_2G = profile_data[0]["ssid_name"] 50 | ssid_5G = profile_data[0]["ssid_name"] 51 | dut_name = create_lanforge_chamberview_dut 52 | mode = "BRIDGE" 53 | vlan = 1 54 | print(lf_tools.dut_idx_mapping) 55 | dut_5g = "" 56 | dut_2g = "" 57 | for i in lf_tools.dut_idx_mapping: 58 | if lf_tools.dut_idx_mapping[i][3] == "5G": 59 | dut_5g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] 60 | print(dut_5g) 61 | if lf_tools.dut_idx_mapping[i][3] == "2G": 62 | dut_2g = dut_name + ' ' + lf_tools.dut_idx_mapping[i][0] + ' ' + lf_tools.dut_idx_mapping[i][4] 63 | print(dut_2g) 64 | apstab_obj = lf_test.apstabilitytest(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, 65 | instance_name="stability_instance_wpa2p_bridge", 66 | vlan_id=vlan, dut_5g=dut_5g, dut_2g=dut_2g) 67 | 68 | report_name = apstab_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] 69 | lf_tools.attach_report_graphs(report_name=report_name, pdf_name="AP Stability Test") 70 | assert True 71 | -------------------------------------------------------------------------------- /tests/e2e/basic/endurance_test/nat_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/endurance_test/nat_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/hot_configuration_reloads/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/hot_configuration_reloads/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/hot_configuration_reloads/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/hot_configuration_reloads/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/multi_ssid_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/multi_ssid_tests/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/multi_ssid_tests/bridge_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/multi_ssid_tests/bridge_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/AX_capacity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/AX_capacity/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/AX_capacity/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/AX_capacity/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/client_scale_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/client_scale_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/client_scale_test/open/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/client_scale_test/open/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/client_scale_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/client_scale_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/client_scale_test/wpa3_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/client_scale_test/wpa3_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/client_scale_test/wpa_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/client_scale_test/wpa_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dataplane_throughput_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dataplane_throughput_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dataplane_throughput_test/open_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dataplane_throughput_test/open_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dataplane_throughput_test/wpa2_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dataplane_throughput_test/wpa2_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dataplane_throughput_test/wpa3_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dataplane_throughput_test/wpa3_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dataplane_throughput_test/wpa_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dataplane_throughput_test/wpa_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dual_band_performance_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/open/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dual_band_performance_test/open/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_bridge_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : BRIDGE Mode 3 | pytest -m "performance and dual_band_tests and bridge" 4 | 5 | 6 | """ 7 | 8 | import allure 9 | import pytest 10 | 11 | pytestmark = [pytest.mark.dual_band_tests, pytest.mark.bridge, pytest.mark.performance_release] 12 | 13 | setup_params_general = { 14 | "mode": "BRIDGE", 15 | "ssid_modes": { 16 | "open": [ 17 | {"ssid_name": "ssid_openp_2g", "appliedRadios": ["2G", "5G"], "security_key": "something"} 18 | ]}, 19 | "rf": {}, 20 | "radius": False 21 | } 22 | 23 | 24 | @pytest.mark.dual_band_tests 25 | @pytest.mark.wifi5 26 | @pytest.mark.wifi6 27 | @pytest.mark.parametrize( 28 | 'setup_configuration', 29 | [setup_params_general], 30 | indirect=True, 31 | scope="class" 32 | ) 33 | @allure.parent_suite("Dual Band Tests") 34 | @allure.suite("Dual Band Tests: Bridge mode") 35 | @allure.sub_suite("Open security") 36 | @allure.feature("Dual band performance test") 37 | @pytest.mark.usefixtures("setup_configuration") 38 | class TestOpenDualbandPerformanceBridge(object): 39 | """ 40 | pytest -m "performance and dual_band_tests and bridge and open and twog and fiveg" 41 | """ 42 | 43 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3724", name="WIFI-3724") 44 | @pytest.mark.open 45 | @pytest.mark.twog 46 | @pytest.mark.fiveg 47 | @allure.title("Test Dual Band with ApAuto test of bridge mode") 48 | def test_client_open_bridge(self, get_test_library, setup_configuration, check_connectivity): 49 | """ 50 | Dual Band Test with open encryption 51 | pytest -m "dual_band_tests and open" 52 | """ 53 | profile_data = setup_params_general["ssid_modes"]["open"] 54 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 55 | dut_name = list(setup_configuration.keys())[0] 56 | mode = "BRIDGE" 57 | vlan = 1 58 | dut_5g, dut_2g = "", "" 59 | influx_tags = "dual-band-bridge-open" 60 | for i in setup_configuration[dut_name]['ssid_data']: 61 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 62 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 63 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 64 | get_test_library.dut_idx_mapping[str(i)][4] 65 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 66 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 67 | get_test_library.dut_idx_mapping[str(i)][4] 68 | 69 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 70 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 71 | move_to_influx=False, dut_data=setup_configuration) 72 | assert True 73 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_nat_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : NAT Mode 3 | pytest -m "performance and dual_band_tests and nat" 4 | 5 | 6 | """ 7 | 8 | import allure 9 | import pytest 10 | 11 | pytestmark = [pytest.mark.dual_band_tests, pytest.mark.nat, pytest.mark.performance_release]#, 12 | 13 | setup_params_general = { 14 | "mode": "NAT", 15 | "ssid_modes": { 16 | "open": [ 17 | {"ssid_name": "ssid_wpa2p_2g", "appliedRadios": ["2G", "5G"], "security_key": "something"} 18 | ]}, 19 | "rf": {}, 20 | "radius": False 21 | } 22 | 23 | 24 | @pytest.mark.dual_band_tests 25 | @pytest.mark.wifi5 26 | @pytest.mark.wifi6 27 | @pytest.mark.parametrize( 28 | 'setup_configuration', 29 | [setup_params_general], 30 | indirect=True, 31 | scope="class" 32 | ) 33 | @allure.parent_suite("Dual Band Tests") 34 | @allure.suite("Dual Band Tests: NAT mode") 35 | @allure.sub_suite("Open security") 36 | @allure.feature("Dual band performance test") 37 | @pytest.mark.usefixtures("setup_configuration") 38 | class TestOpenDualbandPerformanceNat(object): 39 | """ 40 | pytest -m "performance and dual_band_tests and nat and open and twog and fiveg" 41 | """ 42 | 43 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3724", name="WIFI-3724") 44 | @pytest.mark.open 45 | @pytest.mark.twog 46 | @pytest.mark.fiveg 47 | @allure.title("Test Dual Band with ApAuto test of NAT mode") 48 | def test_client_open_bridge(self, get_test_library, setup_configuration, check_connectivity): 49 | """ 50 | Dual Band Test with open encryption 51 | pytest -m "dual_band_tests and open" 52 | """ 53 | profile_data = setup_params_general["ssid_modes"]["open"] 54 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 55 | dut_name = list(setup_configuration.keys())[0] 56 | mode = "NAT-WAN" 57 | vlan = 1 58 | dut_5g, dut_2g = "", "" 59 | influx_tags = "dual-band-bridge-open" 60 | for i in setup_configuration[dut_name]['ssid_data']: 61 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 62 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 63 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 64 | get_test_library.dut_idx_mapping[str(i)][4] 65 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 66 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 67 | get_test_library.dut_idx_mapping[str(i)][4] 68 | 69 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 70 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 71 | move_to_influx=False, dut_data=setup_configuration) 72 | 73 | assert True 74 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_vlan_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : VLAN Mode 3 | pytest -m "performance and dual_band_tests and vlan" 4 | 5 | 6 | """ 7 | 8 | import os 9 | import allure 10 | import pytest 11 | 12 | pytestmark = [pytest.mark.dual_band_tests, pytest.mark.vlan, pytest.mark.performance_release] 13 | 14 | setup_params_general = { 15 | "mode": "VLAN", 16 | "ssid_modes": { 17 | "open": [ 18 | {"ssid_name": "ssid_openp_2g", "appliedRadios": ["2G", "5G"], "security_key": "something", "vlan": 100} 19 | ]}, 20 | "rf": {}, 21 | "radius": False 22 | } 23 | 24 | 25 | @pytest.mark.dual_band_tests 26 | @pytest.mark.wifi5 27 | @pytest.mark.wifi6 28 | @pytest.mark.parametrize( 29 | 'setup_configuration', 30 | [setup_params_general], 31 | indirect=True, 32 | scope="class" 33 | ) 34 | @allure.parent_suite("Dual Band Tests") 35 | @allure.suite("Dual Band Tests: VLAN mode") 36 | @allure.sub_suite("Open security") 37 | @allure.feature("Dual band performance test") 38 | @pytest.mark.usefixtures("setup_configuration") 39 | class TestOpenDualbandPerformanceVLAN(object): 40 | """ 41 | pytest -m "performance and dual_band_tests and vlan and open and twog and fiveg" 42 | """ 43 | 44 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3724", name="WIFI-3724") 45 | @pytest.mark.open 46 | @pytest.mark.twog 47 | @pytest.mark.fiveg 48 | @allure.title("Test Dual Band with ApAuto test of and VLAN mode") 49 | def test_client_open_bridge(self, get_test_library, setup_configuration, check_connectivity): 50 | """ 51 | Dual Band Test with open encryption 52 | pytest -m "dual_band_tests and open" 53 | """ 54 | profile_data = setup_params_general["ssid_modes"]["open"] 55 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 56 | dut_name = list(setup_configuration.keys())[0] 57 | mode = "VLAN" 58 | vlan = [100] 59 | dut_5g, dut_2g = "", "" 60 | influx_tags = "dual-band-bridge-open" 61 | for i in setup_configuration[dut_name]['ssid_data']: 62 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 63 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 64 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 65 | get_test_library.dut_idx_mapping[str(i)][4] 66 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 67 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 68 | get_test_library.dut_idx_mapping[str(i)][4] 69 | 70 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 71 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 72 | move_to_influx=False, dut_data=setup_configuration) 73 | 74 | assert True 75 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wap3_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dual_band_performance_test/wap3_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wap3_personal/test_nat_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : NAT Mode 3 | pytest -m "performance and dual_band_tests and nat" 4 | 5 | 6 | """ 7 | 8 | import allure 9 | import pytest 10 | 11 | pytestmark = [pytest.mark.nat, pytest.mark.dual_band_tests] 12 | 13 | setup_params_general = { 14 | "mode": "NAT", 15 | "ssid_modes": { 16 | "wpa3_personal": [ 17 | {"ssid_name": "ssid_wpa3_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} 18 | ]}, 19 | "rf": {}, 20 | "radius": False 21 | } 22 | 23 | 24 | @pytest.mark.dual_band_tests 25 | @pytest.mark.wifi5 26 | @pytest.mark.wifi6 27 | @pytest.mark.parametrize( 28 | 'setup_configuration', 29 | [setup_params_general], 30 | indirect=True, 31 | scope="class" 32 | ) 33 | @allure.parent_suite("Dual Band Tests") 34 | @allure.suite("Dual Band Tests: NAT mode") 35 | @allure.sub_suite("wpa3_personal security") 36 | @allure.feature("Dual band performance test") 37 | @pytest.mark.usefixtures("setup_configuration") 38 | class TestWpa3DualbandPerformanceNat(object): 39 | """ 40 | pytest -m "performance and dual_band_tests and nat and wpa3_personal and twog and fiveg." 41 | """ 42 | 43 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728") 44 | @pytest.mark.wpa3_personal 45 | @pytest.mark.twog 46 | @pytest.mark.fiveg 47 | @allure.title("Test Dual Band with ApAuto test of NAT mode") 48 | def test_client_wpa3_personal_nat(self, get_test_library, setup_configuration, check_connectivity): 49 | """ 50 | Dual Band Test with wpa3_personal encryption 51 | pytest -m "dual_band_tests and wpa3_personal" 52 | """ 53 | profile_data = setup_params_general["ssid_modes"]["wpa3_personal"] 54 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 55 | dut_name = list(setup_configuration.keys())[0] 56 | mode = "NAT-WAN" 57 | vlan = 1 58 | dut_5g, dut_2g = "", "" 59 | influx_tags = "dual-band-nat-wpa3" 60 | for i in setup_configuration[dut_name]['ssid_data']: 61 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 62 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 63 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 64 | get_test_library.dut_idx_mapping[str(i)][4] 65 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 66 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 67 | get_test_library.dut_idx_mapping[str(i)][4] 68 | 69 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 70 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 71 | move_to_influx=False, dut_data=setup_configuration) 72 | 73 | assert True 74 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wap3_personal/test_vlan_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : VLAN Mode 3 | pytest -m "performance and dual_band_tests and vlan" 4 | 5 | 6 | """ 7 | 8 | import allure 9 | import pytest 10 | 11 | pytestmark = [pytest.mark.vlan, pytest.mark.dual_band_tests] 12 | 13 | setup_params_general = { 14 | "mode": "VLAN", 15 | "ssid_modes": { 16 | "wpa3_personal": [ 17 | {"ssid_name": "ssid_wpa3_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something", 18 | "vlan": 100} 19 | ]}, 20 | "rf": {}, 21 | "radius": False 22 | } 23 | 24 | 25 | @pytest.mark.dual_band_tests 26 | @pytest.mark.wifi5 27 | @pytest.mark.wifi6 28 | @pytest.mark.parametrize( 29 | 'setup_configuration', 30 | [setup_params_general], 31 | indirect=True, 32 | scope="class" 33 | ) 34 | @allure.parent_suite("Dual Band Tests") 35 | @allure.suite("Dual Band Tests: VLAN mode") 36 | @allure.sub_suite("wpa3_personal security") 37 | @allure.feature("Dual band performance test") 38 | @pytest.mark.usefixtures("setup_configuration") 39 | class TestWpa3DualbandPerformanceVlan(object): 40 | """ 41 | pytest -m "performance and dual_band_tests and vlan and wpa3_personal and twog and fiveg" 42 | """ 43 | 44 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728") 45 | @pytest.mark.wpa3_personal 46 | @pytest.mark.twog 47 | @pytest.mark.fiveg 48 | @allure.title("Test Dual Band with ApAuto test of VLAN mode") 49 | def test_client_wpa3_personal_vlan(self, get_test_library, setup_configuration, check_connectivity): 50 | """ 51 | Dual Band Test with wpa3_personal encryption 52 | pytest -m "dual_band_tests and wpa3_personal" 53 | """ 54 | profile_data = setup_params_general["ssid_modes"]["wpa3_personal"] 55 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 56 | dut_name = list(setup_configuration.keys())[0] 57 | mode = "VLAN" 58 | vlan = [100] 59 | dut_5g, dut_2g = "", "" 60 | influx_tags = "dual-band-vlan-wpa3" 61 | for i in setup_configuration[dut_name]['ssid_data']: 62 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 63 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 64 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 65 | get_test_library.dut_idx_mapping[str(i)][4] 66 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 67 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 68 | get_test_library.dut_idx_mapping[str(i)][4] 69 | 70 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 71 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 72 | move_to_influx=False, dut_data=setup_configuration) 73 | 74 | assert True 75 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_vlan_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : VLAN Mode 3 | pytest -m "performance and dual_band_tests and vlan" 4 | 5 | 6 | """ 7 | 8 | import os 9 | import allure 10 | import pytest 11 | 12 | pytestmark = [pytest.mark.performance, pytest.mark.vlan] 13 | 14 | setup_params_general = { 15 | "mode": "VLAN", 16 | "ssid_modes": { 17 | "wpa2_personal": [ 18 | {"ssid_name": "ssid_wpa2_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something", 19 | "vlan": 100} 20 | ]}, 21 | "rf": {}, 22 | "radius": False 23 | } 24 | 25 | 26 | @pytest.mark.wifi5 27 | @pytest.mark.wifi6 28 | @pytest.mark.parametrize( 29 | 'setup_configuration', 30 | [setup_params_general], 31 | indirect=True, 32 | scope="class" 33 | ) 34 | @allure.parent_suite("Dual Band Tests") 35 | @allure.suite("Dual Band Tests: VLAN mode") 36 | @allure.sub_suite("wpa2_personal security") 37 | @allure.feature("Dual band performance test") 38 | @pytest.mark.usefixtures("setup_configuration") 39 | class TestWpa2DualbandPerformanceVLAN(object): 40 | """ 41 | pytest -m "performance and dual_band_tests and VLAN and wpa2_personal and twog and fiveg" 42 | """ 43 | 44 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3918", name="WIFI-3918") 45 | @pytest.mark.wpa2_personal 46 | @pytest.mark.twog 47 | @pytest.mark.fiveg 48 | @allure.title("Test Dual Band with ApAuto test of VLAN mode") 49 | def test_client_wpa2_personal_bridge(self, get_test_library, setup_configuration, check_connectivity): 50 | """ 51 | Dual Band Test with wpa2_personal encryption 52 | pytest -m "dual_band_tests and wpa2_personal" 53 | """ 54 | profile_data = setup_params_general["ssid_modes"]["wpa2_personal"] 55 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 56 | dut_name = list(setup_configuration.keys())[0] 57 | mode = "VLAN" 58 | vlan = [100] 59 | dut_5g, dut_2g = "", "" 60 | influx_tags = "dual-band-vlan-wpa2" 61 | for i in setup_configuration[dut_name]['ssid_data']: 62 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 63 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 64 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 65 | get_test_library.dut_idx_mapping[str(i)][4] 66 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 67 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 68 | get_test_library.dut_idx_mapping[str(i)][4] 69 | 70 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 71 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 72 | move_to_influx=False, dut_data=setup_configuration) 73 | 74 | assert True 75 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wpa_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wpa_personal/test_bridge_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : BRIDGE Mode 3 | pytest -m "performance and dual_band_tests and bridge" 4 | 5 | 6 | """ 7 | 8 | import os 9 | import allure 10 | import pytest 11 | 12 | pytestmark = [pytest.mark.dual_band_tests, pytest.mark.bridge, 13 | pytest.mark.single_station_dual_band_throughput] 14 | 15 | setup_params_general = { 16 | "mode": "BRIDGE", 17 | "ssid_modes": { 18 | "wpa": [ 19 | {"ssid_name": "ssid_wpa_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} 20 | ]}, 21 | "rf": {}, 22 | "radius": False 23 | } 24 | 25 | 26 | @pytest.mark.dual_band_tests 27 | @pytest.mark.wifi5 28 | @pytest.mark.wifi6 29 | @pytest.mark.parametrize( 30 | 'setup_configuration', 31 | [setup_params_general], 32 | indirect=True, 33 | scope="class" 34 | ) 35 | @allure.parent_suite("Dual Band Tests") 36 | @allure.suite("Dual Band Tests: Bridge mode") 37 | @allure.sub_suite("wpa security") 38 | @allure.feature("Dual band performance test") 39 | @pytest.mark.usefixtures("setup_configuration") 40 | @pytest.mark.usefixtures("setup_configuration") 41 | class TestWpaDualbandPerformanceBridge(object): 42 | """ 43 | pytest -m "performance and dual_band_tests and bridge and wpa_personal and twog and fiveg" 44 | """ 45 | 46 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3726", name="WIFI-3726") 47 | @pytest.mark.wpa 48 | @pytest.mark.twog 49 | @pytest.mark.fiveg 50 | @allure.title("Test Dual Band with ApAuto test of bridge mode") 51 | def test_client_wpa_personal_bridge(self, get_test_library, setup_configuration, check_connectivity): 52 | """ 53 | Dual Band Test with wpa encryption 54 | pytest -m "dual_band_tests and wpa" 55 | """ 56 | profile_data = setup_params_general["ssid_modes"]["wpa"] 57 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 58 | dut_name = list(setup_configuration.keys())[0] 59 | mode = "BRIDGE" 60 | vlan = 1 61 | dut_5g, dut_2g = "", "" 62 | influx_tags = "dual-band-bridge-wpa" 63 | for i in setup_configuration[dut_name]['ssid_data']: 64 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 65 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 66 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 67 | get_test_library.dut_idx_mapping[str(i)][4] 68 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 69 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 70 | get_test_library.dut_idx_mapping[str(i)][4] 71 | 72 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 73 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 74 | move_to_influx=False, dut_data=setup_configuration) 75 | 76 | assert True 77 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wpa_personal/test_nat_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : NAT Mode 3 | pytest -m "performance and dual_band_tests and nat" 4 | 5 | 6 | """ 7 | 8 | import os 9 | import allure 10 | import pytest 11 | 12 | pytestmark = [pytest.mark.dual_band_tests, pytest.mark.nat, 13 | pytest.mark.single_station_dual_band_throughput] 14 | setup_params_general = { 15 | "mode": "NAT", 16 | "ssid_modes": { 17 | "wpa": [ 18 | {"ssid_name": "ssid_wpa_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} 19 | ]}, 20 | "rf": {}, 21 | "radius": False 22 | } 23 | 24 | 25 | @pytest.mark.dual_band_tests 26 | @pytest.mark.wifi5 27 | @pytest.mark.wifi6 28 | @pytest.mark.parametrize( 29 | 'setup_configuration', 30 | [setup_params_general], 31 | indirect=True, 32 | scope="class" 33 | ) 34 | @allure.parent_suite("Dual Band Tests") 35 | @allure.suite("Dual Band Tests: NAT mode") 36 | @allure.sub_suite("wpa security") 37 | @allure.feature("Dual band performance test") 38 | @pytest.mark.usefixtures("setup_configuration") 39 | class TestWpaDualbandPerformanceNat(object): 40 | """ 41 | pytest -m "performance and dual_band_tests and nat and wpa_personal and twog and fiveg" 42 | """ 43 | 44 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3726", name="WIFI-3726") 45 | @pytest.mark.wpa 46 | @pytest.mark.twog 47 | @pytest.mark.fiveg 48 | @allure.title("Test Dual Band with ApAuto test of NAT mode") 49 | def test_client_wpa_personal_nat(self, get_test_library, setup_configuration, check_connectivity): 50 | """ 51 | Dual Band Test with wpa encryption 52 | pytest -m "dual_band_tests and wpa" 53 | """ 54 | profile_data = setup_params_general["ssid_modes"]["wpa"] 55 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 56 | dut_name = list(setup_configuration.keys())[0] 57 | mode = "NAT-WAN" 58 | vlan = 1 59 | dut_5g, dut_2g = "", "" 60 | influx_tags = "dual-band-bridge-wpa" 61 | for i in setup_configuration[dut_name]['ssid_data']: 62 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 63 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 64 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 65 | get_test_library.dut_idx_mapping[str(i)][4] 66 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 67 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 68 | get_test_library.dut_idx_mapping[str(i)][4] 69 | 70 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 71 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 72 | move_to_influx=False, dut_data=setup_configuration) 73 | 74 | assert True 75 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/dual_band_performance_test/wpa_personal/test_vlan_mode.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dual Band Performance Test : VLAN Mode 3 | pytest -m "performance and dual_band_tests and vlan" 4 | 5 | 6 | """ 7 | 8 | import os 9 | import allure 10 | import pytest 11 | 12 | pytestmark = [pytest.mark.vlan, pytest.mark.dual_band_tests] 13 | 14 | setup_params_general = { 15 | "mode": "VLAN", 16 | "ssid_modes": { 17 | "wpa": [ 18 | {"ssid_name": "ssid_wpa_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something", 19 | "vlan": 100} 20 | ]}, 21 | "rf": {}, 22 | "radius": False 23 | } 24 | 25 | 26 | @pytest.mark.dual_band_tests 27 | @pytest.mark.wifi5 28 | @pytest.mark.wifi6 29 | @pytest.mark.parametrize( 30 | 'setup_configuration', 31 | [setup_params_general], 32 | indirect=True, 33 | scope="class" 34 | ) 35 | @allure.parent_suite("Dual Band Tests") 36 | @allure.suite("Dual Band Tests: VLAN mode") 37 | @allure.sub_suite("wpa security") 38 | @allure.feature("Dual band performance test") 39 | @pytest.mark.usefixtures("setup_configuration") 40 | class TestWpaDualbandPerformanceVLAN(object): 41 | """ 42 | pytest -m "performance and dual_band_tests and vlan and wpa_personal and twog and fiveg" 43 | """ 44 | 45 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3726", name="WIFI-3726") 46 | @pytest.mark.wpa 47 | @pytest.mark.twog 48 | @pytest.mark.fiveg 49 | @allure.title("Test Dual Band with ApAuto test of VLAN mode") 50 | def test_client_wpa_personal_vlan(self, get_test_library, setup_configuration, check_connectivity): 51 | """ 52 | Dual Band Test with wpa encryption 53 | pytest -m "dual_band_tests and wpa" 54 | """ 55 | profile_data = setup_params_general["ssid_modes"]["wpa"] 56 | ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] 57 | dut_name = list(setup_configuration.keys())[0] 58 | mode = "BRIDGE" 59 | vlan = [100] 60 | dut_5g, dut_2g = "", "" 61 | influx_tags = "dual-band-bridge-wpa" 62 | for i in setup_configuration[dut_name]['ssid_data']: 63 | get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) 64 | if get_test_library.dut_idx_mapping[str(i)][3] == "5G": 65 | dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 66 | get_test_library.dut_idx_mapping[str(i)][4] 67 | if get_test_library.dut_idx_mapping[str(i)][3] == "2G": 68 | dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ 69 | get_test_library.dut_idx_mapping[str(i)][4] 70 | 71 | get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, 72 | dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, 73 | move_to_influx=False, dut_data=setup_configuration) 74 | 75 | assert True 76 | -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/multi_station_throughput/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/multi_station_throughput/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/bridge_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/bridge_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/nat_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/nat_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/vlan_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/multi_station_throughput/wpa2_personal/vlan_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/ofdma_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/ofdma_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/ofdma_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/ofdma_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa2_enterprise_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa2_enterprise_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa2_personal_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa2_personal_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa3_enterprise_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa3_enterprise_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa3_personal_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa3_personal_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/bridge_mode/wpa_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/open_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/open_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa2_enterprise_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa2_enterprise_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa2_personal_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa2_personal_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa3_enterprise_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa3_enterprise_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa3_personal_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa3_personal_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa_encryption/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/peak_throughput_tests/nat_mode/wpa_encryption/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/tcp_udp_upstream_downstream_bidirection_throughput_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/tcp_udp_upstream_downstream_bidirection_throughput_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/tcp_udp_upstream_downstream_bidirection_throughput_test/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/tcp_udp_upstream_downstream_bidirection_throughput_test/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/throughput_across_channel_bw/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/throughput_across_channel_bw/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/open_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/open_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/wpa2_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/wpa2_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/wpa3_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/wpa3_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/wpa_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/performance_tests/throughput_benchmark/throughput_vs_various_pkt_sizes/wpa_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/schema_validation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/schema_validation/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/strict_forwarding/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/strict_forwarding/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/strict_forwarding/wpa2_personal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/strict_forwarding/wpa2_personal/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/test_firmware.py: -------------------------------------------------------------------------------- 1 | # """ 2 | # Test Case Module: setup test cases for basic test cases 3 | # Details: Firmware Upgrade 4 | # 5 | # """ 6 | # import allure 7 | # import pytest 8 | # 9 | # pytestmark = [pytest.mark.firmware, pytest.mark.sanity, pytest.mark.sanity_light, 10 | # pytest.mark.usefixtures("setup_test_run")] 11 | # 12 | # 13 | # @allure.testcase("firmware upgrade from Cloud") 14 | # @pytest.mark.firmware_cloud 15 | # class TestFirmware(object): 16 | # 17 | # @pytest.mark.firmware_create 18 | # def test_firmware_create(self, upload_firmware, update_report, test_cases): 19 | # if upload_firmware != 0: 20 | # PASS = True 21 | # else: 22 | # PASS = False 23 | # assert PASS 24 | # 25 | # @pytest.mark.firmware_upgrade 26 | # def test_firmware_upgrade_request(self, upgrade_firmware, update_report, test_cases): 27 | # print(upgrade_firmware) 28 | # if not upgrade_firmware: 29 | # PASS = False 30 | # else: 31 | # PASS = True 32 | # assert PASS 33 | # 34 | # @pytest.mark.check_active_firmware_cloud 35 | # def test_active_version_cloud(self, get_latest_firmware, get_equipment_ref, setup_controller, 36 | # update_report, test_cases): 37 | # ap_fw_list = [] 38 | # for i in get_equipment_ref: 39 | # ap_fw_list.append(setup_controller.get_ap_firmware_old_method(equipment_id=i)) 40 | # 41 | # assert get_latest_firmware == ap_fw_list 42 | # 43 | # 44 | # @pytest.mark.firmware_ap 45 | # def test_ap_firmware(get_configuration, get_apnos, get_latest_firmware, update_report, 46 | # test_cases): 47 | # """yields the active version of firmware on ap""" 48 | # active_fw_list = [] 49 | # try: 50 | # for access_point in get_configuration['access_point']: 51 | # ap_ssh = get_apnos(access_point, sdk="1.x") 52 | # active_fw = ap_ssh.get_active_firmware() 53 | # active_fw_list.append(active_fw) 54 | # except Exception as e: 55 | # print(e) 56 | # active_fw_list = [] 57 | # assert active_fw_list == get_latest_firmware 58 | -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/client_connectivity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/client_connectivity/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/dual_stack/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/dual_stack/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/wpa2_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/wpa2_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/wpa_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/multi_psk/wpa_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting_with_radius/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/bridge_mode/rate_limiting_with_radius/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/client_isolation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/client_isolation/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_20Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_40Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_40Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_40Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_40Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_40Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_40Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_80Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_80Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_80Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_CA/channel_width_80Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_20Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_20Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_20Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_20Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_20Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_20Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_40Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_40Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_40Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_40Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_40Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_40Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_80Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_80Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_80Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_GB/channel_width_80Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_20Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_20Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_20Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_20Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_20Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_20Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_40Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_80Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_80Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_80Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_IN/channel_width_80Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_20Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_20Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_20Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_20Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_20Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_20Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_40Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_40Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_40Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_40Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_40Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_40Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_80Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_80Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_80Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_JP/channel_width_80Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_20Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_20Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_20Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_20Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_20Mhz/twog_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_20Mhz/twog_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_80Mhz/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_80Mhz/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_80Mhz/fiveg_band/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/country_code_channel_division/country_code_US/channel_width_80Mhz/fiveg_band/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/max_ssid/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/max_ssid/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/nat_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/nat_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/nat_mode/client_connectivity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/nat_mode/client_connectivity/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/nat_mode/dual_stack/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/nat_mode/dual_stack/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/wpa2_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/wpa2_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/wpa_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/nat_mode/multi_psk/wpa_security/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/nat_mode/rate_limiting/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/nat_mode/rate_limiting/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/client_connectivity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/client_connectivity/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dual_stack/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dual_stack/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa2_enterprise/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa2_enterprise/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa2_enterprise/fiveg/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa2_enterprise/fiveg/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa2_enterprise/twog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa2_enterprise/twog/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/fiveg/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/fiveg/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/sixg/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/sixg/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/twog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/dynamic_vlan/wpa3_enterprise/twog/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/multi_psk/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/multi_psk/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/multi_vlan/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/multi_vlan/__init__.py -------------------------------------------------------------------------------- /tests/e2e/basic/validation_of_operating_modes/vlan_mode/rate_limiting/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/basic/validation_of_operating_modes/vlan_mode/rate_limiting/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/conftest.py: -------------------------------------------------------------------------------- 1 | import allure 2 | import pytest 3 | import logging 4 | 5 | @pytest.fixture(scope="class") 6 | def setup_configuration(request, get_markers, get_target_object, run_lf): 7 | # Predefined selected markers and selected configuration 8 | 9 | conf = dict(request.param) 10 | configuration = conf.copy() 11 | requested_combination = [] 12 | for key in get_markers: 13 | if get_markers[key]: 14 | requested_combination.append(get_markers[key]) 15 | 16 | # Method to setup the basic configuration 17 | data = {} 18 | if not run_lf: 19 | data = get_target_object.setup_basic_configuration(configuration=configuration, 20 | requested_combination=requested_combination) 21 | logging.info("dut_data after config applied: " + str(data)) 22 | yield data 23 | 24 | @pytest.fixture(scope="class") 25 | def setup_open_roaming_configuration(request, get_markers, get_target_object, run_lf): 26 | # Predefined selected markers and selected configuration 27 | 28 | conf = dict(request.param) 29 | configuration = conf.copy() 30 | requested_combination = [] 31 | for key in get_markers: 32 | if get_markers[key]: 33 | requested_combination.append(get_markers[key]) 34 | 35 | # Method to setup the basic configuration 36 | data = {} 37 | if not run_lf: 38 | data = get_target_object.setup_basic_configuration(configuration=configuration, requested_combination= 39 | requested_combination, open_roaming=True) 40 | logging.info("dut_data after config applied: " + str(data)) 41 | yield data -------------------------------------------------------------------------------- /tests/e2e/interOp/openroaming_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/openroaming_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/openroaming_test/test_openroaming_bridge.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dummy Testcase for checking 3 | Client Connect : BRIDGE Mode 4 | pytest -m "client_connect_tests and nat and enterprise" 5 | 6 | """ 7 | import logging 8 | import random 9 | import string 10 | import time 11 | 12 | import allure 13 | import pytest 14 | 15 | pytestmark = [pytest.mark.open_roaming, pytest.mark.bridge, pytest.mark.enterprise] 16 | 17 | setup_params_enterprise_two_br = { 18 | "mode": "BRIDGE", 19 | "ssid_modes": { 20 | "open": [{"ssid_name": "pass_point", "appliedRadios": ["5G"]}], 21 | "wpa_wpa2_enterprise_mixed": [ 22 | {"ssid_name": "wpa_wpa2_eap_2g", "appliedRadios": ["2G"]}, 23 | {"ssid_name": "Meta_secure", "appliedRadios": ["5G"]}], 24 | "wpa3_enterprise_mixed": [ 25 | {"ssid_name": "wpa3_m_eap_2g", "appliedRadios": ["2G"]}, 26 | {"ssid_name": "wpa3_m_eap_5g", "appliedRadios": ["5G"]}] 27 | }, 28 | "rf": {}, 29 | "radius": True 30 | } 31 | @allure.feature("BRIDGE MODE CLIENT CONNECT") 32 | @allure.parent_suite("Client Connect Tests") 33 | @allure.suite(suite_name="BRIDGE Mode") 34 | @allure.sub_suite(sub_suite_name="Enterprise security mode Client Connect") 35 | @pytest.mark.parametrize( 36 | 'setup_open_roaming_configuration', 37 | [setup_params_enterprise_two_br], 38 | indirect=True, 39 | scope="class" 40 | ) 41 | @pytest.mark.usefixtures("setup_open_roaming_configuration") 42 | class TestBridgeModeConnectSuiteTwo(object): 43 | @pytest.mark.wpa_wpa2_enterprise_mixed 44 | @pytest.mark.fiveg 45 | @allure.story('wpa_wpa2_enterprise_mixed 5 GHZ Band') 46 | @pytest.mark.usefixtures("setup_open_roaming_configuration") 47 | @allure.title("BRIDGE Mode Client Connect Test with wpa_wpa2_enterprise_mixed encryption 5 GHz Band") 48 | @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-4572", name="JIRA LINK") 49 | def test_bridge_wpa_wpa2_eap_mixed_5g_client_connect(self, 50 | num_stations, setup_open_roaming_configuration): 51 | print("1.Config:", setup_open_roaming_configuration) 52 | assert True 53 | -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/bridge_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/bridge_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/bridge_mode/client_connect_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/bridge_mode/client_connect_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/bridge_mode/rate_limiting/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/bridge_mode/rate_limiting/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/bridge_mode/toggle_airplane_mode_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/bridge_mode/toggle_airplane_mode_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/bridge_mode/toggle_wifi_mode_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/bridge_mode/toggle_wifi_mode_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/nat_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/nat_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/nat_mode/client_connect_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/nat_mode/client_connect_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/nat_mode/rate_limiting/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/nat_mode/rate_limiting/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/nat_mode/toggle_airplane_mode_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/nat_mode/toggle_airplane_mode_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/nat_mode/toggle_wifi_mode_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/nat_mode/toggle_wifi_mode_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/vlan_mode/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/vlan_mode/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/vlan_mode/client_connect_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/vlan_mode/client_connect_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/vlan_mode/rate_limiting/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/vlan_mode/rate_limiting/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/vlan_mode/toggle_airplane_mode_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/vlan_mode/toggle_airplane_mode_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/interOp/validation_of_operating_modes/vlan_mode/toggle_wifi_mode_test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/interOp/validation_of_operating_modes/vlan_mode/toggle_wifi_mode_test/__init__.py -------------------------------------------------------------------------------- /tests/e2e/mdu/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/mdu/__init__.py -------------------------------------------------------------------------------- /tests/e2e/mdu/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/mdu/conftest.py -------------------------------------------------------------------------------- /tests/e2e/mesh/Mesh/test_mesh_bridge.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | import allure 3 | import os 4 | 5 | pytestmark = [pytest.mark.mesh, pytest.mark.bridge] 6 | 7 | setup_params_general = { 8 | "mode": "BRIDGE", 9 | "ssid_modes": { 10 | "wpa2_personal": [ 11 | {"ssid_name": "ssid_wpa2_5g_1", "appliedRadios": ["5G"], "security_key": "something"}, 12 | {"ssid_name": "ssid_wpa2_2g_1", "appliedRadios": ["2G"], "security_key": "something"} 13 | ] 14 | }, 15 | "mesh": "yes", 16 | "rf": {}, 17 | "radius": False 18 | } 19 | 20 | 21 | @allure.feature("MESH BASIC") 22 | # @pytest.mark.parametrize( 23 | # 'setup_mesh_profile_fix', 24 | # [setup_params_general], 25 | # indirect=True, 26 | # scope="class" 27 | # ) 28 | # @pytest.mark.usefixtures("setup_configuration") 29 | class TestMesh(object): 30 | 31 | @pytest.mark.wpa2_personal 32 | def testmesh_2g(self): 33 | raw_lines = [['selected_dut2: tip-node-2 ssid_wpa2_2g_1 90:3c:b3:9d:69:2f (2)'], ['selected_dut5: tip-node-2 ssid_wpa2_5g_1 90:3c:b3:9d:69:2e (1)'], ['sta_amount-2: 2'], ['radios-2-0: 1.4.6 wiphy0'], 34 | ['ap_arrangements: Current Position'], ['sta_position: Current Position'],['chamber-0: RootAP'],['chamber-1: Node1'], 35 | ['chamber-2: Node2'],['chamber-4: MobileStations'], 36 | ['path: Orbit Current'], ['traffic_types: TCP'], ['direction: Both'], ['tests: Throughput'], ['traf_combo: N2'], 37 | ["skip_dhcp: 1"], ["skip_5: 1"] ] 38 | 39 | # mesh_o = lf_test.mesh_test(instance_name="test_mesh1_1", raw_lines=raw_lines,duration="5m") 40 | # report_name = mesh_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] 41 | # print("report name ", report_name) 42 | # entries = os.listdir("../reports/" + report_name + '/') 43 | # print("entries", entries) 44 | # lf_tools.attach_report_graphs(report_name=report_name, pdf_name="Basic Mesh Test") 45 | 46 | assert True 47 | -------------------------------------------------------------------------------- /tests/e2e/mesh/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/mesh/__init__.py -------------------------------------------------------------------------------- /tests/e2e/scale/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/scale/__init__.py -------------------------------------------------------------------------------- /tests/e2e/scale/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/e2e/scale/conftest.py -------------------------------------------------------------------------------- /tests/kafka_tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/kafka_tests/__init__.py -------------------------------------------------------------------------------- /tests/kafka_tests/ap_events/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Telecominfraproject/wlan-testing/ae0fb31623c5b1c93d82d6d6ba4cc94771a07d92/tests/kafka_tests/ap_events/__init__.py -------------------------------------------------------------------------------- /tests/kafka_tests/ap_events/test-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "uuid": 2, 3 | "radios": [ 4 | { 5 | "band": "5G", 6 | "channel": 52, 7 | "channel-mode": "HE", 8 | "channel-width": 80, 9 | "country": "CA" 10 | }, 11 | { 12 | "band": "2G", 13 | "channel": 11, 14 | "channel-mode": "HE", 15 | "channel-width": 20, 16 | "country": "CA" 17 | } 18 | ], 19 | "interfaces": [ 20 | { 21 | "name": "WAN", 22 | "role": "upstream", 23 | "services": [ "lldp", "dhcp-snooping" ], 24 | "ethernet": [ 25 | { 26 | "select-ports": [ 27 | "WAN*" 28 | ] 29 | } 30 | ], 31 | "ipv4": { 32 | "addressing": "dynamic" 33 | }, 34 | "ssids": [ 35 | { 36 | "name": "OpenWifi", 37 | "wifi-bands": [ 38 | "2G", "5G" 39 | ], 40 | "bss-mode": "ap", 41 | "encryption": { 42 | "proto": "psk2", 43 | "key": "OpenWifi@123", 44 | "ieee80211w": "optional" 45 | } 46 | } 47 | ] 48 | }, 49 | { 50 | "name": "LAN", 51 | "role": "downstream", 52 | "services": [ "ssh", "lldp" ], 53 | "ethernet": [ 54 | { 55 | "select-ports": [ 56 | "LAN*" 57 | ] 58 | } 59 | ], 60 | "ipv4": { 61 | "addressing": "static", 62 | "subnet": "192.168.1.1/24", 63 | "dhcp": { 64 | "lease-first": 10, 65 | "lease-count": 100, 66 | "lease-time": "6h" 67 | } 68 | } 69 | } 70 | ], 71 | "metrics": { 72 | "statistics": { 73 | "interval": 120, 74 | "types": [ "ssids", "lldp", "clients" ] 75 | }, 76 | "dhcp-snooping": { 77 | "filters": [ "ack", "discover", "offer", "request", "solicit", "reply", "renew" ] 78 | }, 79 | "wifi-frames": { 80 | "filters": [ "probe", "auth", "assoc", "disassoc", "deauth", "local-deauth", "inactive-deauth", "key-mismatch", "beacon-report", "radar-detected"] 81 | }, 82 | "telemetry": { 83 | "interval": 15, 84 | "types": [ "ssh" ] 85 | }, 86 | "realtime": { 87 | "types": [ "wifi.start"] 88 | }, 89 | "health": { 90 | "interval": 120 91 | } 92 | }, 93 | "services": { 94 | "lldp": { 95 | "describe": "uCentral", 96 | "location": "universe" 97 | }, 98 | "ssh": { 99 | "port": 22 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /tests/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.pytest.ini_options] 2 | minversion = "6.0" 3 | addopts = "-ra -q" 4 | testpaths = [ 5 | "tests", 6 | "integration", 7 | ] 8 | -------------------------------------------------------------------------------- /tests/setup.cfg: -------------------------------------------------------------------------------- 1 | # setup.cfg 2 | [tool:pytest] 3 | minversion = 6.0 4 | addopts = -ra -q 5 | testpaths = 6 | tests 7 | integration -------------------------------------------------------------------------------- /tests/tox.ini: -------------------------------------------------------------------------------- 1 | # tox.ini 2 | [pytest] 3 | minversion = 6.0 4 | addopts = -ra -q 5 | testpaths = 6 | tests 7 | integration -------------------------------------------------------------------------------- /tools/digicert-change-ap-redirector.sh: -------------------------------------------------------------------------------- 1 | # normalizes a MAC address by removing all non alphanumeric and uppercasing all characters 2 | function normalize_mac() { 3 | local mac=$1 4 | echo "$mac" | tr -d ":" | tr -d "-" | tr "[:lower:]" "[:upper:]" 5 | } 6 | 7 | DIGICERT_BASE_URL="https://one.digicert.com/iot/api/" 8 | 9 | set -e 10 | 11 | # Print usage 12 | if [ $# -lt 2 ]; then 13 | echo "Not enough arguments provided!" 14 | echo "This script changes the redirector URL for an AP identified by the provided MAC address." 15 | echo "Usage: $0 " 16 | echo "mac-address - the primary MAC address of your AP device" 17 | echo "redirector - the new redirector URL" 18 | exit 1 19 | fi 20 | 21 | mac="$(normalize_mac "$1")" 22 | redirector="$2" 23 | 24 | device_details=$(curl \ 25 | --silent \ 26 | --request GET "${DIGICERT_BASE_URL}v2/device?limit=1&device_identifier=${mac}" \ 27 | --header "x-api-key: $DIGICERT_API_KEY" | jq --raw-output .records[0]) 28 | 29 | device_id=$(echo "$device_details" | jq --raw-output .id) 30 | current_fields=$(echo "$device_details" | jq --raw-output .fields) 31 | new_fields=$(echo "$current_fields" | jq --raw-output "(.[] | select(.name == \"Redirector\") | .value) |= \"$redirector\"") 32 | 33 | curl \ 34 | --request PUT "${DIGICERT_BASE_URL}v2/device/$device_id" \ 35 | --header "x-api-key: $DIGICERT_API_KEY" -H "Content-Type: application/json" -d "{\"fields\":$new_fields}" -------------------------------------------------------------------------------- /tools/scp_util.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import argparse 3 | 4 | import paramiko 5 | from scp import SCPClient 6 | 7 | 8 | class SCP_File: 9 | def __init__(self, ip="localhost", port=22, username="lanforge", password="lanforge", remote_path="/home/lanforge/", 10 | local_path="."): 11 | self.ip = ip 12 | self.port = port 13 | self.remote_path = remote_path 14 | self.local_path = local_path 15 | self.username = username 16 | self.password = password 17 | 18 | def pull_file(self): 19 | ssh = paramiko.SSHClient() 20 | ssh.load_system_host_keys() 21 | ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 22 | ssh.connect(hostname=self.ip, username=self.username, password=self.password, port=self.port, allow_agent=False, 23 | look_for_keys=False) 24 | # ssh.close() 25 | 26 | with SCPClient(ssh.get_transport()) as scp: 27 | scp.get(remote_path=self.remote_path, local_path=self.local_path, recursive=True) 28 | scp.close() 29 | 30 | 31 | def main(): 32 | parser = argparse.ArgumentParser(prog="lf_utils", 33 | formatter_class=argparse.RawTextHelpFormatter, 34 | allow_abbrev=True, 35 | epilog="About lf_tools.py", 36 | description="Tools for LANforge System") 37 | parser.add_argument('--host', type=str, help=' --host : IP Address f LANforge System', default="localhost") 38 | parser.add_argument('--port', type=int, help='--passwd of dut', default=22) 39 | parser.add_argument('--username', type=str, help='--username to use on LANforge', default="lanforge") 40 | parser.add_argument('--password', type=str, help='--password to use on LANforge', default="lanforge") 41 | parser.add_argument('--remote_path', type=str, help='--password to the given username', 42 | default="/home/lanforge/lf_kinstall.pl") 43 | parser.add_argument('--local_path', type=str, help='--action to perform' 44 | 'reboot | run_cmd', default=".") 45 | args = parser.parse_args() 46 | lf_tools = SCP_File(ip=args.host, port=args.port, 47 | username=args.username, password=args.password, 48 | remote_path=args.remote_path, local_path=args.local_path) 49 | lf_tools.pull_file() 50 | 51 | 52 | 53 | 54 | if __name__ == '__main__': 55 | main() 56 | --------------------------------------------------------------------------------