mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-10-30 18:38:06 +00:00 
			
		
		
		
	Merged WIFI-7 branches (#1053)
* Added sanity marker for 6g test cases Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Add logic for better error handling * Add detailed error logging * Add fix for broken Dynamic VLAN 6GHz test cases * Configured channel mode to EHT for wifi7 * Removed sercomm_ap72tip and Added sonicfi_rap7110c-341x AP in the sanity, performance and regression workflows Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Replaced HE mode with EHT mode for the AP config Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Increased sleep time after config push * Replaced 2g test case with 5g test case in the sanity suite Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Swapped the testbed basic-4a and basic-5a Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Increased the sleep time after the config push Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Update sleep time for all interfaces to come up * Removed sonicfi_rap7110c-341x AP from basic-4 and added it in advanced-2 testbed Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Updated the DFS path for WiFi 7 APs Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Add BE capacity tests and BE client scale tests * Rename client_scale tests into ax_client_scale tests * Rename client_scale_tests into ax_client_scale_tests * Remove bidirectional tests from ax_client_scale tests * Add configuraion data * Provide pass fail criteria for 2G 2x2 40MHz * Modified the marker name Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Added be_client_scale_tests, wifi_capacity_be_tests and ax_client_scale_tests for new performance suite Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Increased the wait time after config push Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Added the ax capacity marker Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Change upload and download rate for BE client scale * Added pass fail values for BE mode Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Modified the markers for the test cases Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Added be mode pass fail Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Added pass-fail values for 6g 2x2 160MHz Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Added pass-fail values for 6g 2x2 160MHz Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Replaced basic-4a with adv-2a Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Add Multiband testcases * Add multi_band_tests marker * Replaced dual band with multi band test Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Update sleep time after config push * Update sleep time after config push * ADD EMPSK 6G testcase * Update dataplane tests * Modified the namespace name for sonicfi_rap630c-311g Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> * Replaced advanced-2a with advanced-2c Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> * Replaced advanced-2a with advanced-2c Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> * Updated code as per master Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> * Replaced advanced-2c with basic-5b Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> * Added jsonschema module Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> * Replace basic-5b with advanced-2c * Add EAP112 & OAP103-BR to all automation workflows * Add EAP112 & OAP103-BR to all automation workflows * Update workflows * Update workflows * Add CIG189H in workflows * Add CIG189H to performance workflow and add pass/fail criteria for performance testing * Add CIG189H in AP models in a workflow * Add Advance Captive Portal testcases on 5GHz and 6GHz * Change sonicfi-rap7110c-341x AP from advance-2c to basic-4a in sanity and regression workflows * Modify the namespace name for sonicfi_rap7110c-341x * Update logic to assign channel mode in controller.py Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update performance workflow and add sanity marker to a be_capacity test Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Add pass fail criteria for perforamnce for CIG189H AP Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Added sets parameter to enable the UDP-Burst,UDP-GRO and Multiple Endpoints options Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> * Remove regression marker from EMPSK testcase Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update DFS path for the EAP112 AP Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update pass fail criteria for CIG189H AP for AX mode Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update pass fail criteria for cig189h AP Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Modify tedtbed from basic-4a to basic-5a for cig_wf189 AP in sanity workflow Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update dfs path for WIFI7 AP Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update dfs path Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update EMPSK test case Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Enable 320MHz from client side for EMPSK test case Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Add EMPSK test case into sanity test suite * Remove EMPSK from sanity Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Fix typos: replaced wap with wpa encryption Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update EMPSK testcase Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update the testbed name for sonicfi_rap7110c-341x AP to basic-4a in performance workflow Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update radio config for DFS testcases Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Update DFS testcase to verify configured channel Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> * Add get_dut_logs_per_test_case and get_test_device_logs fixtures to multiband testcases Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> --------- Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> Signed-off-by: jitendra-kushavah <jitendra.kushavah@candelatech.com> Signed-off-by: bhargavi-ct <bhargavimamidipaka@candelatech.com> Co-authored-by: bhargavi-mamidipaka <bhargavi.mamidipaka@candelatech.com> Co-authored-by: bhargavi-ct <bhargavimamidipaka@candelatech.com>
This commit is contained in:
		 Jitendrakumar Kushavah
					Jitendrakumar Kushavah
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							ae0fb31623
						
					
				
				
					commit
					98e67832aa
				
			
							
								
								
									
										1327
									
								
								.github/workflows/performance.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1327
									
								
								.github/workflows/performance.yml
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										274
									
								
								.github/workflows/quali.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										274
									
								
								.github/workflows/quali.yml
									
									
									
									
										vendored
									
									
								
							| @@ -22,7 +22,7 @@ on: | ||||
|         description: "revision of the Open Wifi Helm chart" | ||||
|       ap_models: | ||||
|         required: true | ||||
|         default: "cig_wf186h,edgecore_eap104,cig_wf196,udaya_a6-id2,sonicfi_rap630c-311g,hfcl_ion4xe,yuncore_fap655,cig_wf189,edgecore_eap105,sonicfi_rap7110c-341x,edgecore_eap101,edgecore_eap111" | ||||
|         default: "cig_wf186h,edgecore_eap104,sonicfi_rap630c-311g,hfcl_ion4xe,yuncore_fap655,cig_wf189,edgecore_eap105,sonicfi_rap7110c-341x,edgecore_eap101,edgecore_eap111,edgecore_oap103,edgecore_eap112,cig_wf189h" | ||||
|         description: "the AP models to test" | ||||
|       ap_version: | ||||
|         required: true | ||||
| @@ -103,7 +103,7 @@ jobs: | ||||
|               AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf189,edgecore_eap105,edgecore_eap111' }}" | ||||
|             fi | ||||
|           else | ||||
|             AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf186h,cig_wf196,yuncore_ax820,yuncore_fap655,sercomm_ap72tip,edgecore_eap101' }}" | ||||
|             AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf186h,cig_wf196,yuncore_ax820,yuncore_fap655,sercomm_ap72tip,edgecore_eap101,edgecore_oap103,edgecore_eap112,cig_wf189h' }}" | ||||
|           fi | ||||
|  | ||||
|           echo "List of AP models to test - $AP_MODELS" | ||||
| @@ -1208,11 +1208,277 @@ jobs: | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsec | ||||
|  | ||||
|   test-edgecore-oap103: | ||||
|     needs: [ "vars", "build" ] | ||||
|     runs-on: ubuntu-latest | ||||
|     if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_oap103')" | ||||
|     env: | ||||
|       AP_MODEL: edgecore_oap103 | ||||
|     steps: | ||||
|       - name: Set AP model output | ||||
|         id: ap_model | ||||
|         run: | | ||||
|           echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Set up Python | ||||
|         uses: actions/setup-python@v4 | ||||
|         with: | ||||
|           python-version: "3.8" | ||||
|  | ||||
|       # TODO WIFI-7839 delete when issue is resolved on AWS CLI side | ||||
|       - name: install kubectl | ||||
|         run: | | ||||
|           curl -s -LO "https://dl.k8s.io/release/v1.27.6/bin/linux/amd64/kubectl" | ||||
|           sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl | ||||
|  | ||||
|       - name: get EKS access credentials | ||||
|         run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} | ||||
|  | ||||
|       - name: prepare namespace name | ||||
|         id: namespace | ||||
|         run: | | ||||
|           NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')" | ||||
|           echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - name: prepare configuration | ||||
|         run: | | ||||
|           cat << EOF > lab_info.json | ||||
|           ${{ secrets.LAB_INFO_JSON }} | ||||
|           EOF | ||||
|  | ||||
|  | ||||
|       - name: run tests | ||||
|         uses: ./.github/actions/run-tests | ||||
|         with: | ||||
|           namespace: ${{ steps.namespace.outputs.name }} | ||||
|           testbed: basic-3 | ||||
|           marker_expression: "${{ needs.vars.outputs.marker_expression }}" | ||||
|           configuration_file: "./lab_info.json" | ||||
|           testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} | ||||
|           additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"' | ||||
|           allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}" | ||||
|           dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build" | ||||
|  | ||||
|       # necessary because if conditionals in composite actions are currently not respected | ||||
|       - name: get tests logs | ||||
|         if: always() | ||||
|         continue-on-error: true | ||||
|         run: | | ||||
|           podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///") | ||||
|           kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true | ||||
|  | ||||
|       - name: delete namespace | ||||
|         if: always() | ||||
|         continue-on-error: true | ||||
|         run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }} | ||||
|  | ||||
|       - name: show gw logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owgw | ||||
|  | ||||
|       - name: show fms logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owfms | ||||
|  | ||||
|       - name: show prov logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owprov | ||||
|  | ||||
|       - name: show analytics logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owanalytics | ||||
|  | ||||
|       - name: show subscription (userportal) logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsub | ||||
|  | ||||
|       - name: show sec logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsec | ||||
|  | ||||
|   test-edgecore-eap112: | ||||
|     needs: [ "vars", "build" ] | ||||
|     runs-on: ubuntu-latest | ||||
|     if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_eap112')" | ||||
|     env: | ||||
|       AP_MODEL: edgecore_eap112 | ||||
|     steps: | ||||
|       - name: Set AP model output | ||||
|         id: ap_model | ||||
|         run: | | ||||
|           echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Set up Python | ||||
|         uses: actions/setup-python@v4 | ||||
|         with: | ||||
|           python-version: "3.8" | ||||
|  | ||||
|       # TODO WIFI-7839 delete when issue is resolved on AWS CLI side | ||||
|       - name: install kubectl | ||||
|         run: | | ||||
|           curl -s -LO "https://dl.k8s.io/release/v1.27.6/bin/linux/amd64/kubectl" | ||||
|           sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl | ||||
|  | ||||
|       - name: get EKS access credentials | ||||
|         run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} | ||||
|  | ||||
|       - name: prepare namespace name | ||||
|         id: namespace | ||||
|         run: | | ||||
|           NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')" | ||||
|           echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - name: prepare configuration | ||||
|         run: | | ||||
|           cat << EOF > lab_info.json | ||||
|           ${{ secrets.LAB_INFO_JSON }} | ||||
|           EOF | ||||
|  | ||||
|  | ||||
|       - name: run tests | ||||
|         uses: ./.github/actions/run-tests | ||||
|         with: | ||||
|           namespace: ${{ steps.namespace.outputs.name }} | ||||
|           testbed: basic-1 | ||||
|           marker_expression: "${{ needs.vars.outputs.marker_expression }}" | ||||
|           configuration_file: "./lab_info.json" | ||||
|           testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} | ||||
|           additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"' | ||||
|           allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}" | ||||
|           dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build" | ||||
|  | ||||
|       # necessary because if conditionals in composite actions are currently not respected | ||||
|       - name: get tests logs | ||||
|         if: always() | ||||
|         continue-on-error: true | ||||
|         run: | | ||||
|           podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///") | ||||
|           kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true | ||||
|  | ||||
|       - name: delete namespace | ||||
|         if: always() | ||||
|         continue-on-error: true | ||||
|         run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }} | ||||
|  | ||||
|       - name: show gw logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owgw | ||||
|  | ||||
|       - name: show fms logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owfms | ||||
|  | ||||
|       - name: show prov logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owprov | ||||
|  | ||||
|       - name: show analytics logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owanalytics | ||||
|  | ||||
|       - name: show subscription (userportal) logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsub | ||||
|  | ||||
|       - name: show sec logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsec | ||||
|  | ||||
|   test-cig-wf189h: | ||||
|     needs: [ "vars", "build" ] | ||||
|     runs-on: ubuntu-latest | ||||
|     if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'cig_wf189h')" | ||||
|     env: | ||||
|       AP_MODEL: cig_wf189h | ||||
|     steps: | ||||
|       - name: Set AP model output | ||||
|         id: ap_model | ||||
|         run: | | ||||
|           echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Set up Python | ||||
|         uses: actions/setup-python@v4 | ||||
|         with: | ||||
|           python-version: "3.8" | ||||
|  | ||||
|       # TODO WIFI-7839 delete when issue is resolved on AWS CLI side | ||||
|       - name: install kubectl | ||||
|         run: | | ||||
|           curl -s -LO "https://dl.k8s.io/release/v1.27.6/bin/linux/amd64/kubectl" | ||||
|           sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl | ||||
|  | ||||
|       - name: get EKS access credentials | ||||
|         run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} | ||||
|  | ||||
|       - name: prepare namespace name | ||||
|         id: namespace | ||||
|         run: | | ||||
|           NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')" | ||||
|           echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - name: prepare configuration | ||||
|         run: | | ||||
|           cat << EOF > lab_info.json | ||||
|           ${{ secrets.LAB_INFO_JSON }} | ||||
|           EOF | ||||
|  | ||||
|  | ||||
|       - name: run tests | ||||
|         uses: ./.github/actions/run-tests | ||||
|         with: | ||||
|           namespace: ${{ steps.namespace.outputs.name }} | ||||
|           testbed: basic-4 | ||||
|           marker_expression: "${{ needs.vars.outputs.marker_expression }}" | ||||
|           configuration_file: "./lab_info.json" | ||||
|           testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} | ||||
|           additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"' | ||||
|           allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}" | ||||
|           dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build" | ||||
|  | ||||
|       # necessary because if conditionals in composite actions are currently not respected | ||||
|       - name: get tests logs | ||||
|         if: always() | ||||
|         continue-on-error: true | ||||
|         run: | | ||||
|           podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///") | ||||
|           kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true | ||||
|  | ||||
|       - name: delete namespace | ||||
|         if: always() | ||||
|         continue-on-error: true | ||||
|         run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }} | ||||
|  | ||||
|       - name: show gw logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owgw | ||||
|  | ||||
|       - name: show fms logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owfms | ||||
|  | ||||
|       - name: show prov logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owprov | ||||
|  | ||||
|       - name: show analytics logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owanalytics | ||||
|  | ||||
|       - name: show subscription (userportal) logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsub | ||||
|  | ||||
|       - name: show sec logs | ||||
|         if: failure() | ||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsec | ||||
|   # Save reports | ||||
|   report: | ||||
|     if: "!cancelled()" | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [vars, test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111] | ||||
|     needs: [vars, test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111,test-edgecore-oap103,test-edgecore-eap112,test-cig-wf189h] | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
| @@ -1263,7 +1529,7 @@ jobs: | ||||
|  | ||||
|   # Cleanup | ||||
|   cleanup: | ||||
|     needs: [test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111] | ||||
|     needs: [test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111,test-edgecore-oap103,test-edgecore-eap112,test-cig-wf189h] | ||||
|     runs-on: ubuntu-latest | ||||
|     if: always() | ||||
|     steps: | ||||
|   | ||||
							
								
								
									
										1014
									
								
								.github/workflows/regression.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1014
									
								
								.github/workflows/regression.yml
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -462,7 +462,19 @@ class APLIBS: | ||||
|                     logging.info("Status count: " + str(status_count_1)) | ||||
|                     if status_count_1 == 1: | ||||
|                         logging.info("In Mediatek Chipsets") | ||||
|                         cmd = f'cd  && cd /sys/kernel/debug/ieee80211/phy1/mt76/ && ls && echo 1 > radar_trigger' | ||||
|                         cmd = f'cd  && cd //sys/kernel/debug/ieee80211/phy1/mt76/ && ls && echo 1 > radar_trigger' | ||||
|                     else: | ||||
|                         cmd1 = '[ -f /sys/kernel/debug/ieee80211/phy2/mt76/radar_trigger ] && echo "True" || echo "False"' | ||||
|                         output = self.run_generic_command(cmd=cmd1, idx=idx, | ||||
|                                                           print_log=print_log, | ||||
|                                                           attach_allure=attach_allure, | ||||
|                                                           expected_attachment_type=allure.attachment_type.JSON) | ||||
|                         ret = output.split("\n") | ||||
|                         status_count_1 = int(ret.count("True")) | ||||
|                         logging.info("Status count: " + str(status_count_1)) | ||||
|                         if status_count_1 == 1: | ||||
|                             logging.info("In Mediatek EAP112 Chipset (phy2)") | ||||
|                             cmd = f'cd  && cd /sys/kernel/debug/ieee80211/phy2/mt76/ && ls && echo 1 > radar_trigger' | ||||
|                         else: | ||||
|                             cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && ls && echo 1 > dfs_simulate_radar' | ||||
|         elif type_.lower() == "wifi7": | ||||
| @@ -478,7 +490,7 @@ class APLIBS: | ||||
|             if status_count == 1: | ||||
|                 cmd = "cd && cd /sys/kernel/debug/ieee80211/phy0/ && cd ath12k_hw1 && echo 1 > dfs_simulate_radar" | ||||
|             else: | ||||
|                 cmd = f'cd  && cd /sys/kernel/debug/ath12k/ && cd qcn* && cd mac1 && ls && echo 1 > dfs_simulate_radar' | ||||
|                 cmd = "cd && cd /sys/kernel/debug/ieee80211/phy00/ && cd ath12k_hw1 && echo 1 > dfs_simulate_radar" | ||||
|         output = self.run_generic_command(cmd=cmd, idx=idx, | ||||
|                                           print_log=print_log, | ||||
|                                           attach_allure=attach_allure, | ||||
| @@ -525,7 +537,7 @@ class APLIBS: | ||||
|                     cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd qcn6122_2 && cd mac0 && logread | grep DFS' | ||||
|                 else: | ||||
|                     #cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && logread | grep DFS' | ||||
|                     cmd1 = '[ -f  /sys/kernel/debug/ieee80211/phy1/mt76/radar_trigger ] && echo "True" || echo "False"' | ||||
|                     cmd1 = '[ -f  //sys/kernel/debug/ieee80211/phy1/mt76/radar_trigger ] && echo "True" || echo "False"' | ||||
|                     output = self.run_generic_command(cmd=cmd1, idx=idx, | ||||
|                                                       print_log=print_log, | ||||
|                                                       attach_allure=attach_allure, | ||||
| @@ -534,7 +546,19 @@ class APLIBS: | ||||
|                     status_count_1 = int(ret.count("True")) | ||||
|                     logging.info("Status count: " + str(status_count_1)) | ||||
|                     if status_count_1 == 1: | ||||
|                         cmd = f'cd  && cd /sys/kernel/debug/ieee80211/phy1/mt76/ && logread | grep DFS' | ||||
|                         cmd = f'cd  && cd //sys/kernel/debug/ieee80211/phy1/mt76/ && logread | grep DFS' | ||||
|                     else: | ||||
|                         # cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && logread | grep DFS' | ||||
|                         cmd1 = '[ -f  //sys/kernel/debug/ieee80211/phy2/mt76/radar_trigger ] && echo "True" || echo "False"' | ||||
|                         output = self.run_generic_command(cmd=cmd1, idx=idx, | ||||
|                                                           print_log=print_log, | ||||
|                                                           attach_allure=attach_allure, | ||||
|                                                           expected_attachment_type=allure.attachment_type.JSON) | ||||
|                         ret = output.split("\n") | ||||
|                         status_count_1 = int(ret.count("True")) | ||||
|                         logging.info("Status count: " + str(status_count_1)) | ||||
|                         if status_count_1 == 1: | ||||
|                             cmd = f'cd  && cd //sys/kernel/debug/ieee80211/phy2/mt76/ && logread | grep DFS' | ||||
|                         else: | ||||
|                             cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && logread | grep DFS' | ||||
|         elif type_.lower() == "wifi7": | ||||
| @@ -545,9 +569,9 @@ class APLIBS: | ||||
|                                               expected_attachment_type=allure.attachment_type.JSON) | ||||
|             logging.info("DFS logread output: " + str(output)) | ||||
|             if output.__contains__("False"): | ||||
|                 cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/ && logread | grep DFS' | ||||
|                 cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy00/ath12k_hw1/ && logread | grep DFS' | ||||
|             else: | ||||
|                 cmd = f'cd  && cd /sys/kernel/debug/ath12k/ && cd qcn* && cd mac1 && logread | grep DFS' | ||||
|                 cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/ && logread | grep DFS' | ||||
|  | ||||
|         try: | ||||
|             output = self.run_generic_command(cmd=cmd, idx=idx, | ||||
|   | ||||
| @@ -2611,7 +2611,7 @@ class UProfileUtility: | ||||
|                         ssid_info.append(temp) | ||||
|         return ssid_info | ||||
|  | ||||
|     def set_radio_config(self, radio_config={}, open_roaming=False): | ||||
|     def set_radio_config(self, radio_config={}, open_roaming=False, ap_mode="wifi6"): | ||||
|         if open_roaming: | ||||
|             base_radio_config_2g = { | ||||
|                 "band": "2G", | ||||
| @@ -2627,6 +2627,13 @@ class UProfileUtility: | ||||
|                 "channel-width": 80, | ||||
|                 "channel": "auto" | ||||
|             } | ||||
|             if ap_mode == "wifi6" or ap_mode =="wifi6e": | ||||
|                 base_radio_config_2g["channel-mode"] = "HE" | ||||
|                 base_radio_config_5g["channel-mode"] = "HE" | ||||
|             if ap_mode == "wifi7": | ||||
|                 logging.info("yes it's wifi7 AP and open_roaming") | ||||
|                 base_radio_config_2g["channel-mode"] = "EHT" | ||||
|                 base_radio_config_5g["channel-mode"] = "EHT" | ||||
|  | ||||
|             for band in radio_config: | ||||
|                 if band == "2G" and radio_config[band] is not None: | ||||
| @@ -2641,22 +2648,33 @@ class UProfileUtility: | ||||
|             base_radio_config_2g = { | ||||
|                 "band": "2G", | ||||
|                 "country": "US", | ||||
|                 "channel-mode": "HE", | ||||
|                 "channel-mode": "EHT", | ||||
|                 "channel": "auto" | ||||
|             } | ||||
|             base_radio_config_5g = { | ||||
|                 "band": "5G", | ||||
|                 "country": "US", | ||||
|                 "allow-dfs": False, | ||||
|                 "channel-mode": "HE", | ||||
|                 "channel-mode": "EHT", | ||||
|                 "channel": "auto" | ||||
|             } | ||||
|             base_radio_config_6g = { | ||||
|                 "band": "6G", | ||||
|                 "country": "US", | ||||
|                 "channel-mode": "HE", | ||||
|                 "channel-mode": "EHT", | ||||
|                 "channel": "auto" | ||||
|             } | ||||
|  | ||||
|             if ap_mode == "wifi6" or ap_mode =="wifi6e": | ||||
|                 base_radio_config_2g["channel-mode"] = "HE" | ||||
|                 base_radio_config_5g["channel-mode"] = "HE" | ||||
|                 base_radio_config_6g["channel-mode"] = "HE" | ||||
|             if ap_mode == "wifi7": | ||||
|                 logging.info("yes it's wifi7 AP") | ||||
|                 base_radio_config_2g["channel-mode"] = "EHT" | ||||
|                 base_radio_config_5g["channel-mode"] = "EHT" | ||||
|                 base_radio_config_6g["channel-mode"] = "EHT" | ||||
|  | ||||
|             for band in radio_config: | ||||
|                 if band == "2G" and radio_config[band] is not None: | ||||
|                     for keys in radio_config[band]: | ||||
| @@ -2671,6 +2689,8 @@ class UProfileUtility: | ||||
|             self.base_profile_config["radios"].append(base_radio_config_2g) | ||||
|             self.base_profile_config["radios"].append(base_radio_config_5g) | ||||
|             self.base_profile_config["radios"].append(base_radio_config_6g) | ||||
|  | ||||
|         logging.info(f"base_profile_config:{self.base_profile_config}") | ||||
|         self.vlan_section["ssids"] = [] | ||||
|         self.vlan_ids = [] | ||||
|  | ||||
|   | ||||
| @@ -64,7 +64,8 @@ class tip_2x: | ||||
|                             "wpa3_enterprise", | ||||
|                             "wpa_wpa2_enterprise_mixed", | ||||
|                             "wpa3_enterprise_mixed", | ||||
|                             "wpa3_enterprise_192" | ||||
|                             "wpa3_enterprise_192", | ||||
|                             "owe" | ||||
|                             ] | ||||
|     tip_2x_specific_encryption_translation = {"open": "none", | ||||
|                                               "wpa": "psk", | ||||
| @@ -77,7 +78,8 @@ class tip_2x: | ||||
|                                               "wpa3_enterprise": "wpa3", | ||||
|                                               "wpa_wpa2_enterprise_mixed": "wpa-mixed", | ||||
|                                               "wpa3_enterprise_mixed": "wpa3-mixed", | ||||
|                                               "wpa3_enterprise_192": "wpa3-192" | ||||
|                                               "wpa3_enterprise_192": "wpa3-192", | ||||
|                                               "owe":"owe" | ||||
|                                               } | ||||
|  | ||||
|     def __init__(self, controller_data=None, target=None, configuration=None, | ||||
| @@ -231,6 +233,12 @@ class tip_2x: | ||||
|                                   requested_combination=None, open_roaming=False): | ||||
|         f_conf = self.setup_configuration_data(configuration=configuration, | ||||
|                                                requested_combination=requested_combination) | ||||
|  | ||||
|         # fetch ap_mode from DUT data (ap_mode can be wifii6 or wifi6e or wifi7) | ||||
|         for i in range(0, len(self.device_under_tests_info)): | ||||
|             ap_mode = self.device_under_tests_info[i]["mode"] | ||||
|             logging.info(f"ap_mode:{ap_mode}") | ||||
|  | ||||
|         if open_roaming: | ||||
|             logging.info("Selected Configuration of open roaming: " + str(json.dumps(f_conf, indent=2))) | ||||
|             final_configuration = f_conf.copy() | ||||
| @@ -243,10 +251,11 @@ class tip_2x: | ||||
|  | ||||
|             # Setup Radio Scenario | ||||
|             if final_configuration["rf"] != {}: | ||||
|                 profile_object.set_radio_config(radio_config=final_configuration["rf"], open_roaming=open_roaming) | ||||
|                 profile_object.set_radio_config(radio_config=final_configuration["rf"], open_roaming=open_roaming, | ||||
|                                                 ap_mode=ap_mode) | ||||
|             else: | ||||
|                 final_configuration["rf"] = {"2G": {}, "5G": {}, "6G": {}} | ||||
|                 profile_object.set_radio_config(open_roaming=open_roaming) | ||||
|                 profile_object.set_radio_config(open_roaming=open_roaming, ap_mode=ap_mode) | ||||
|             for ssid in final_configuration["ssid_modes"]: | ||||
|                 for ssid_data in final_configuration["ssid_modes"][ssid]: | ||||
|                     if final_configuration["radius"]: | ||||
| @@ -276,10 +285,10 @@ class tip_2x: | ||||
|  | ||||
|             # Setup Radio Scenario | ||||
|             if final_configuration["rf"] != {}: | ||||
|                 profile_object.set_radio_config(radio_config=final_configuration["rf"]) | ||||
|                 profile_object.set_radio_config(radio_config=final_configuration["rf"], ap_mode=ap_mode) | ||||
|             else: | ||||
|                 final_configuration["rf"] = {"2G": {}, "5G": {}, "6G": {}} | ||||
|                 profile_object.set_radio_config() | ||||
|                 profile_object.set_radio_config(ap_mode=ap_mode) | ||||
|             for ssid in final_configuration["ssid_modes"]: | ||||
|                 for ssid_data in final_configuration["ssid_modes"][ssid]: | ||||
|                     if final_configuration["radius"]: | ||||
| @@ -393,8 +402,8 @@ class tip_2x: | ||||
|             logging.info("resp: " + str(resp)) | ||||
|             uuid = resp["details"]["uuid"] | ||||
|             logging.info("uuid from resp: " + str(uuid)) | ||||
|             logging.info("Waiting for 30 sec after config push") | ||||
|             time.sleep(30) | ||||
|             logging.info("Waiting for 45 sec after config push") | ||||
|             time.sleep(45) | ||||
|             r_data = self.dut_library_object.ubus_call_ucentral_status(idx=i, print_log=True, attach_allure=False) | ||||
|             latest_uuid_after_apply = r_data["latest"] | ||||
|             active_uuid_after_apply = r_data["active"] | ||||
| @@ -425,9 +434,9 @@ class tip_2x: | ||||
|                     pytest.fail("Config is not Properly Applied on AP") | ||||
|  | ||||
|             self.dut_library_object.get_active_config(idx=i, print_log=True, attach_allure=False) | ||||
|             logging.info("Waiting for 30 Seconds for All interfaces to come up") | ||||
|             logging.info("Waiting for 45 Seconds for All interfaces to come up") | ||||
|             # wait time interfaces to come up | ||||
|             time.sleep(30) | ||||
|             time.sleep(45) | ||||
|  | ||||
|             # x = 0 | ||||
|             # while uuid_before_apply == uuid_after_apply: | ||||
| @@ -502,7 +511,22 @@ class tip_2x: | ||||
|             n = len(temp_data[dut]) | ||||
|             lst = list(range(0, n)) | ||||
|             ret_val[dut]["ssid_data"] = dict.fromkeys(lst) | ||||
|             fields = ["SSID", "Encryption", "Password", "Band", "BSSID"] | ||||
|             for j in ret_val[dut]["ssid_data"]: | ||||
|                 ssid_entry = temp_data[dut][j] | ||||
|                 expected_length = 5 | ||||
|                 if len(ssid_entry) < expected_length: | ||||
|                     missing_fields = [] | ||||
|                     # Check each field for its presence | ||||
|                     for index, field in enumerate(fields): | ||||
|                         if len(ssid_entry) <= index: | ||||
|                             missing_fields.append(field) | ||||
|                     if missing_fields: | ||||
|                         logging.error( | ||||
|                             f"Error: Missing field(s) {', '.join(missing_fields)} for SSID entry '{ssid_entry[0]}' in {ssid_entry}. Please check iwinfo") | ||||
|                         pytest.fail( | ||||
|                             f"Error: Missing field(s) {', '.join(missing_fields)} for SSID entry '{ssid_entry[0]}' in {ssid_entry}. Please check iwinfo") | ||||
|                 else: | ||||
|                     a = temp_data[dut][j].copy() | ||||
|                     a = dict.fromkeys(["ssid", "encryption", "password", "band", "bssid"]) | ||||
|                     a["ssid"] = temp_data[dut][j][0] | ||||
| @@ -660,14 +684,19 @@ class tip_2x: | ||||
|                     band = "2G" | ||||
|                 elif o[i + 9].__contains__("5."): | ||||
|                     band = "5G" | ||||
|                 elif "unknown" in o[i + 9]: | ||||
|                     logging.info(f"Error: {o[i - 1]} has an unknown channel frequency from iwinfo") | ||||
|                     pytest.fail(f"Error: {o[i - 1]} has an unknown channel frequency from iwinfo") | ||||
|                 else: | ||||
|                     band = "6G" | ||||
|                 iwinfo_bssid_data[o[i - 1]] = [o[i + 1].replace('"', ''), o[i + 4], band] | ||||
|         logging.info(f"iwinfo_bssid_data:{iwinfo_bssid_data}") | ||||
|         for p in iwinfo_bssid_data: | ||||
|             for q in ssid_info_sdk: | ||||
|                 if iwinfo_bssid_data[p][0] == q[0] and iwinfo_bssid_data[p][2] == q[3]: | ||||
|                     q.append(iwinfo_bssid_data[p][1]) | ||||
|         ssid_info_sdk.append(channel_info) | ||||
|         logging.info(f"ssid_info_sdk:{ssid_info_sdk}") | ||||
|         return ssid_info_sdk | ||||
|  | ||||
|     def get_dut_version(self): | ||||
|   | ||||
| @@ -252,7 +252,7 @@ def get_security_flags(): | ||||
|     security = ["open", "wpa", "wep", "wpa2_personal", "wpa3_personal", "wpa3_personal_mixed", | ||||
|                 "wpa_wpa2_enterprise_mixed", "wpa2_eap", "wpa2_only_eap", | ||||
|                 "wpa_wpa2_personal_mixed", "wpa_enterprise", "wpa2_enterprise", "wpa3_enterprise_mixed", | ||||
|                 "wpa3_enterprise", "twog", "fiveg", "sixg", "fiveg_lower", "fiveg_upper", "radius"] | ||||
|                 "wpa3_enterprise", "twog", "fiveg", "sixg", "fiveg_lower", "fiveg_upper", "radius", "owe"] | ||||
|     yield security | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "external_captive_portal_tests and bridge" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
| import re | ||||
| import time | ||||
| @@ -12,14 +13,11 @@ import paramiko | ||||
| import pytest | ||||
| from tabulate import tabulate | ||||
|  | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests] | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests, | ||||
|               pytest.mark.click_to_continue] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
|  | ||||
| captive = { | ||||
|     "auth-mode": "uam", | ||||
|     "uam-port": 3990, | ||||
|     "uam-secret": "hotsys123", | ||||
| @@ -28,31 +26,114 @@ setup_params_general = { | ||||
|     "auth-server": "radius.hotspotsystem.com", | ||||
|     "auth-port": 1812, | ||||
|     "auth-secret": "hotsys123", | ||||
|                  "walled-garden-fqdn": [ | ||||
|                      "*.google.com", | ||||
|                      "telecominfraproject.com", | ||||
|                      "customer.hotspotsystem.com", | ||||
|                      "youtube.com" | ||||
|                  ] | ||||
|     "walled-garden-fqdn": ["*.google.com", "telecominfraproject.com", "customer.hotspotsystem.com", "youtube.com"] | ||||
| } | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_5g_ctc", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "ext_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ext_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="External Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestBridgeModeExternalCaptivePortal(object): | ||||
|     """ | ||||
|             External Captive Portal Test: BRIDGE Mode | ||||
| @@ -61,17 +142,17 @@ class TestBridgeModeExternalCaptivePortal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.click_to_continue | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-11148", name="WIFI-11148") | ||||
|     def test_bridge_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                               get_test_device_logs, check_connectivity, setup_configuration, | ||||
|     def test_bridge_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, get_dut_logs_per_test_case, | ||||
|                                               get_test_device_logs, check_connectivity, | ||||
|                                               get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode External Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and bridge and click_to_continue" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="twog") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
| @@ -96,9 +177,193 @@ class TestBridgeModeExternalCaptivePortal(object): | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "2G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"], | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode=setup_params_general["mode"], | ||||
|                 radio=radio_port_name, | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False, | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = ( | ||||
|                     f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address=" | ||||
|                     f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3=" | ||||
|                     f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}" | ||||
|                     f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id=" | ||||
|                     f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1" | ||||
|                 ) | ||||
|  | ||||
|                 expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"' | ||||
|                 response_302 = run_command_using_ssh(client, expected_302) | ||||
|  | ||||
|                 logging.info(f"\n{response_302}") | ||||
|                 allure.attach(name="Expected 302 response: ", body=str(response_302), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0] | ||||
|                 logging.info(f"Link to hit: {link_to_hit}") | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 5 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library, get_dut_logs_per_test_case, | ||||
|                                               get_test_device_logs, check_connectivity, | ||||
|                                               get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode External Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and bridge and click_to_continue" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="fiveg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_dict = get_test_library.get_radio_availabilities(num_stations_5g=1) | ||||
|             logging.info(f"radio_port_dict value:{radio_port_dict}") | ||||
|             radio_port_name = list(radio_port_dict[1].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "5G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|  | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode=setup_params_general["mode"], | ||||
| @@ -106,6 +371,178 @@ class TestBridgeModeExternalCaptivePortal(object): | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False | ||||
|             ) | ||||
|             logging.info("station creation done") | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = ( | ||||
|                     f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address=" | ||||
|                     f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3=" | ||||
|                     f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}" | ||||
|                     f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id=" | ||||
|                     f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1" | ||||
|                 ) | ||||
|                 expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"' | ||||
|                 response_302 = run_command_using_ssh(client, expected_302) | ||||
|  | ||||
|                 logging.info(f"\n{response_302}") | ||||
|                 allure.attach(name="Expected 302 response: ", body=str(response_302), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0] | ||||
|                 logging.info(f"Link to hit: {link_to_hit}") | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with owe encryption 6 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_6g_click_to_continue(self, setup_initial_configuration, get_test_library, get_dut_logs_per_test_case, | ||||
|                                               get_test_device_logs, check_connectivity, | ||||
|                                               get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode External Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and bridge and click_to_continue" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="sixg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0] | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "6G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["owe"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="owe", | ||||
|                 mode=setup_params_general["mode"], | ||||
|                 radio=radio_port_name, | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False, enable_owe = True, | ||||
|                 is_bw320=is_bw320, is_ht160=is_ht160 | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "external_captive_portal_tests and NAT" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
| import re | ||||
| import time | ||||
| @@ -12,14 +13,9 @@ import paramiko | ||||
| import pytest | ||||
| from tabulate import tabulate | ||||
|  | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.NAT, pytest.mark.advanced_captive_portal_tests] | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.nat, pytest.mark.advanced_captive_portal_tests, pytest.mark.click_to_continue] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| captive = { | ||||
|                  "auth-mode": "uam", | ||||
|                  "uam-port": 3990, | ||||
|                  "uam-secret": "hotsys123", | ||||
| @@ -35,43 +31,132 @@ setup_params_general = { | ||||
|                      "youtube.com" | ||||
|                  ] | ||||
|              } | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_5g_ctc", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "ext_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ext_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="External Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestNatModeExternalCaptivePortal(object): | ||||
|     """ | ||||
|             External Captive Portal Test: NAT Mode | ||||
|             pytest -m "advanced_captive_portal_tests and NAT and external_captive_portal_tests" | ||||
|             pytest -m "advanced_captive_portal_tests and nat and external_captive_portal_tests" | ||||
|     """ | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.click_to_continue | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14124", name="WIFI-14124") | ||||
|     def test_nat_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                               get_test_device_logs, check_connectivity, setup_configuration, | ||||
|     def test_nat_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                            get_dut_logs_per_test_case,get_test_device_logs, check_connectivity, | ||||
|                                             get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode External Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and NAT and click_to_continue" | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and nat and click_to_continue" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="twog") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
| @@ -96,13 +181,24 @@ class TestNatModeExternalCaptivePortal(object): | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "2G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"], | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode="NAT-WAN", | ||||
|                 radio=radio_port_name, | ||||
|                 band="twog", | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False | ||||
|             ) | ||||
| @@ -218,3 +314,348 @@ class TestNatModeExternalCaptivePortal(object): | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 5 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                            get_dut_logs_per_test_case, get_test_device_logs, check_connectivity, | ||||
|                                            get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode External Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and nat and click_to_continue" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="fiveg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_5g=1)[1].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "5G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|  | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|  | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode="NAT-WAN", | ||||
|                 radio=radio_port_name, | ||||
|                 band="fiveg", | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = ( | ||||
|                     f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address=" | ||||
|                     f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3=" | ||||
|                     f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}" | ||||
|                     f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id=" | ||||
|                     f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1" | ||||
|                 ) | ||||
|                 expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"' | ||||
|                 response_302 = run_command_using_ssh(client, expected_302) | ||||
|  | ||||
|                 logging.info(f"\n{response_302}") | ||||
|                 allure.attach(name="Expected 302 response: ", body=str(response_302), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0] | ||||
|                 logging.info(f"Link to hit: {link_to_hit}") | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with owe encryption 6 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_6g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                            get_dut_logs_per_test_case, get_test_device_logs, check_connectivity, | ||||
|                                            get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode External Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and nat and click_to_continue" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="sixg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0] | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "6G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["owe"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="owe", | ||||
|                 mode="NAT-WAN", | ||||
|                 radio=radio_port_name, | ||||
|                 band="sixg", | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False, enable_owe = True, | ||||
|                 is_bw320=is_bw320, is_ht160=is_ht160 | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = ( | ||||
|                     f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address=" | ||||
|                     f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3=" | ||||
|                     f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}" | ||||
|                     f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id=" | ||||
|                     f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1" | ||||
|                 ) | ||||
|                 expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"' | ||||
|                 response_302 = run_command_using_ssh(client, expected_302) | ||||
|  | ||||
|                 logging.info(f"\n{response_302}") | ||||
|                 allure.attach(name="Expected 302 response: ", body=str(response_302), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0] | ||||
|                 logging.info(f"Link to hit: {link_to_hit}") | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "external_captive_portal_tests and bridge" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
| import re | ||||
| import time | ||||
| @@ -13,14 +14,10 @@ import pytest | ||||
| from tabulate import tabulate | ||||
| from bs4 import BeautifulSoup | ||||
|  | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests] | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests, | ||||
|               pytest.mark.local_user_and_pass] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| captive ={ | ||||
|                  "auth-mode": "uam", | ||||
|                  "uam-port": 3990, | ||||
|                  "uam-secret": "hotsys123", | ||||
| @@ -36,24 +33,113 @@ setup_params_general = { | ||||
|                      "youtube.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_5g_id_p", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "ext_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ext_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="External Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestBridgeModeExternalCaptivePortal(object): | ||||
|     """ | ||||
|             External Captive Portal Test: BRIDGE Mode | ||||
| @@ -62,17 +148,17 @@ class TestBridgeModeExternalCaptivePortal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.local_user_and_pass | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-13683", name="WIFI-13683") | ||||
|     def test_bridge_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                 get_test_device_logs, check_connectivity, setup_configuration, | ||||
|     def test_bridge_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                 get_dut_logs_per_test_case,get_test_device_logs, check_connectivity, | ||||
|                                                 get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode External Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and bridge and local_user_and_pass" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="twog") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
| @@ -97,9 +183,19 @@ class TestBridgeModeExternalCaptivePortal(object): | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "2G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"], | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode=setup_params_general["mode"], | ||||
| @@ -251,3 +347,408 @@ class TestBridgeModeExternalCaptivePortal(object): | ||||
|                 logging.info("Throughput exceeded than set threshold") | ||||
|                 pytest.fail("Throughput exceeded than set threshold") | ||||
|             logging.info("Throughput is within the set threshold") | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 5 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                 get_dut_logs_per_test_case, get_test_device_logs, check_connectivity, | ||||
|                                                 get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode External Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and bridge and local_user_and_pass" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="fiveg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_5g=1)[1].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "5G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode=setup_params_general["mode"], | ||||
|                 radio=radio_port_name, | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}' | ||||
|                         f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}' | ||||
|                         f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1') | ||||
|                 html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"' | ||||
|                 html_response = run_command_using_ssh(client, html_request) | ||||
|  | ||||
|                 logging.info(f"HTML response containing authentication url:\n{html_response}") | ||||
|                 allure.attach(name="HTML response containing authentication url:", body=str(html_response), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 soup = BeautifulSoup(html_response, 'html.parser') | ||||
|                 meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'}) | ||||
|                 content = meta_tag['content'] | ||||
|                 authentication_url = "=".join(content.split('=')[1:]) | ||||
|  | ||||
|                 logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n") | ||||
|                 allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url)) | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|             logging.info("Checking throughput speed...") | ||||
|             wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="BRIDGE", | ||||
|                                                                     download_rate="10Gbps", | ||||
|                                                                     upload_rate="56Kbps", | ||||
|                                                                     protocol="UDP-IPv4", | ||||
|                                                                     duration="60000", | ||||
|                                                                     batch_size="1", | ||||
|                                                                     stations=radio_port_name[:4] + station, | ||||
|                                                                     add_stations=False, | ||||
|                                                                     create_stations=False) | ||||
|  | ||||
|             report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/" | ||||
|             numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report) | ||||
|             expected_throughput = 10 | ||||
|             throughput = { | ||||
|                 "download": [numeric_score[0][0]], | ||||
|                 "upload": [numeric_score[1][0]], | ||||
|                 "total": [numeric_score[2][0]], | ||||
|                 "expected": [f"<= {expected_throughput}"], | ||||
|                 "unit": ["Mbps"], | ||||
|                 "PASS": [numeric_score[2][0] <= expected_throughput] | ||||
|             } | ||||
|             data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid') | ||||
|             allure.attach(name='Throughput Data', body=data_table) | ||||
|             logging.info(f"\n{data_table}") | ||||
|  | ||||
|             if not throughput["PASS"][0]: | ||||
|                 logging.info("Throughput exceeded than set threshold") | ||||
|                 pytest.fail("Throughput exceeded than set threshold") | ||||
|             logging.info("Throughput is within the set threshold") | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with owe encryption 6 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                 get_dut_logs_per_test_case, get_test_device_logs, check_connectivity, | ||||
|                                                 get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode External Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and bridge and local_user_and_pass" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="sixg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0] | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "6G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["owe"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="owe", | ||||
|                 mode=setup_params_general["mode"], | ||||
|                 radio=radio_port_name, | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False, enable_owe=True, | ||||
|                 is_bw320=is_bw320, is_ht160=is_ht160 | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}' | ||||
|                         f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}' | ||||
|                         f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1') | ||||
|                 html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"' | ||||
|                 html_response = run_command_using_ssh(client, html_request) | ||||
|  | ||||
|                 logging.info(f"HTML response containing authentication url:\n{html_response}") | ||||
|                 allure.attach(name="HTML response containing authentication url:", body=str(html_response), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 soup = BeautifulSoup(html_response, 'html.parser') | ||||
|                 meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'}) | ||||
|                 content = meta_tag['content'] | ||||
|                 authentication_url = "=".join(content.split('=')[1:]) | ||||
|  | ||||
|                 logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n") | ||||
|                 allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url)) | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|             logging.info("Checking throughput speed...") | ||||
|             wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="BRIDGE", | ||||
|                                                                     download_rate="10Gbps", | ||||
|                                                                     upload_rate="56Kbps", | ||||
|                                                                     protocol="UDP-IPv4", | ||||
|                                                                     duration="60000", | ||||
|                                                                     batch_size="1", | ||||
|                                                                     stations=radio_port_name[:4] + station, | ||||
|                                                                     add_stations=False, | ||||
|                                                                     create_stations=False) | ||||
|  | ||||
|             report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/" | ||||
|             numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report) | ||||
|             expected_throughput = 10 | ||||
|             throughput = { | ||||
|                 "download": [numeric_score[0][0]], | ||||
|                 "upload": [numeric_score[1][0]], | ||||
|                 "total": [numeric_score[2][0]], | ||||
|                 "expected": [f"<= {expected_throughput}"], | ||||
|                 "unit": ["Mbps"], | ||||
|                 "PASS": [numeric_score[2][0] <= expected_throughput] | ||||
|             } | ||||
|             data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid') | ||||
|             allure.attach(name='Throughput Data', body=data_table) | ||||
|             logging.info(f"\n{data_table}") | ||||
|  | ||||
|             if not throughput["PASS"][0]: | ||||
|                 logging.info("Throughput exceeded than set threshold") | ||||
|                 pytest.fail("Throughput exceeded than set threshold") | ||||
|             logging.info("Throughput is within the set threshold") | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "external_captive_portal_tests and nat" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
| import re | ||||
| import time | ||||
| @@ -13,14 +14,10 @@ import pytest | ||||
| from tabulate import tabulate | ||||
| from bs4 import BeautifulSoup | ||||
|  | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.nat, pytest.mark.advanced_captive_portal_tests] | ||||
| pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.nat, pytest.mark.advanced_captive_portal_tests, | ||||
|               pytest.mark.local_user_and_pass] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| captive = { | ||||
|                  "auth-mode": "uam", | ||||
|                  "uam-port": 3990, | ||||
|                  "uam-secret": "hotsys123", | ||||
| @@ -36,24 +33,113 @@ setup_params_general = { | ||||
|                      "youtube.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_ext_cap_portal_open_5g_id_p", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "ext_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ext_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="External Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestNatModeExternalCaptivePortal(object): | ||||
|     """ | ||||
|             External Captive Portal Test: NAT Mode | ||||
| @@ -62,17 +148,17 @@ class TestNatModeExternalCaptivePortal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.local_user_and_pass | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14125", name="WIFI-14125") | ||||
|     def test_nat_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                 get_test_device_logs, check_connectivity, setup_configuration, | ||||
|     def test_nat_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                              get_dut_logs_per_test_case,get_test_device_logs, check_connectivity, | ||||
|                                              get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode External Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and nat and local_user_and_pass" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="twog") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
| @@ -97,9 +183,19 @@ class TestNatModeExternalCaptivePortal(object): | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "2G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"], | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode="NAT-WAN", | ||||
| @@ -251,3 +347,408 @@ class TestNatModeExternalCaptivePortal(object): | ||||
|                 logging.info("Throughput exceeded than set threshold") | ||||
|                 pytest.fail("Throughput exceeded than set threshold") | ||||
|             logging.info("Throughput is within the set threshold") | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 5 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                              get_dut_logs_per_test_case, get_test_device_logs, check_connectivity, | ||||
|                                              get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode External Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and nat and local_user_and_pass" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="fiveg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_5g=1)[1].keys())[0] | ||||
|             security = "open" | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "5G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["open"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="open", | ||||
|                 mode="NAT-WAN", | ||||
|                 radio=radio_port_name, | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}' | ||||
|                         f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}' | ||||
|                         f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1') | ||||
|                 html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"' | ||||
|                 html_response = run_command_using_ssh(client, html_request) | ||||
|  | ||||
|                 logging.info(f"HTML response containing authentication url:\n{html_response}") | ||||
|                 allure.attach(name="HTML response containing authentication url:", body=str(html_response), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 soup = BeautifulSoup(html_response, 'html.parser') | ||||
|                 meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'}) | ||||
|                 content = meta_tag['content'] | ||||
|                 authentication_url = "=".join(content.split('=')[1:]) | ||||
|  | ||||
|                 logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n") | ||||
|                 allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url)) | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|             logging.info("Checking throughput speed...") | ||||
|             wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="NAT-WAN", | ||||
|                                                                     download_rate="10Gbps", | ||||
|                                                                     upload_rate="56Kbps", | ||||
|                                                                     protocol="UDP-IPv4", | ||||
|                                                                     duration="60000", | ||||
|                                                                     batch_size="1", | ||||
|                                                                     stations=radio_port_name[:4] + station, | ||||
|                                                                     add_stations=False, | ||||
|                                                                     create_stations=False) | ||||
|  | ||||
|             report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/" | ||||
|             numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report) | ||||
|             expected_throughput = 10 | ||||
|             throughput = { | ||||
|                 "download": [numeric_score[0][0]], | ||||
|                 "upload": [numeric_score[1][0]], | ||||
|                 "total": [numeric_score[2][0]], | ||||
|                 "expected": [f"<= {expected_throughput}"], | ||||
|                 "unit": ["Mbps"], | ||||
|                 "PASS": [numeric_score[2][0] <= expected_throughput] | ||||
|             } | ||||
|             data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid') | ||||
|             allure.attach(name='Throughput Data', body=data_table) | ||||
|             logging.info(f"\n{data_table}") | ||||
|  | ||||
|             if not throughput["PASS"][0]: | ||||
|                 logging.info("Throughput exceeded than set threshold") | ||||
|                 pytest.fail("Throughput exceeded than set threshold") | ||||
|             logging.info("Throughput is within the set threshold") | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with owe encryption 6 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                              get_dut_logs_per_test_case, get_test_device_logs, check_connectivity, | ||||
|                                              get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode External Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and nat and local_user_and_pass" | ||||
|         """ | ||||
|         get_test_library.check_band_ap(band="sixg") | ||||
|         def run_command_using_ssh(ssh_client, command: str): | ||||
|             output = "" | ||||
|             try_count = 1 | ||||
|             while output.strip() == "" and try_count <= 10: | ||||
|                 try: | ||||
|                     try_count += 1 | ||||
|                     time.sleep(2) | ||||
|                     logging.info(f"Executing command: {command}") | ||||
|                     stdin, stdout, stderr = ssh_client.exec_command(command) | ||||
|                     output = stdout.read().decode() | ||||
|                 except Exception as exc: | ||||
|                     logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True) | ||||
|  | ||||
|             if output.strip() == "": | ||||
|                 allure.attach(name="No response while running following command:", body=f"{command}") | ||||
|                 raise Exception("No output from command, check test body!") | ||||
|             return output | ||||
|  | ||||
|         for dut in get_test_library.dut_data: | ||||
|             get_test_library.pre_cleanup() | ||||
|  | ||||
|             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0] | ||||
|             station = 'sta_ecp' | ||||
|             desired_band = "6G" | ||||
|             ssid_list = setup_params_general["ssid_modes"]["owe"] | ||||
|             ssid_name = None | ||||
|             for ssid_info in ssid_list: | ||||
|                 if desired_band in ssid_info["appliedRadios"]: | ||||
|                     ssid_name = ssid_info["ssid_name"] | ||||
|                     break | ||||
|             logging.info(f"ssid_name:{ssid_name}") | ||||
|             if ssid_name is None: | ||||
|                 raise Exception(f"No SSID found configured for {desired_band}") | ||||
|             logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...") | ||||
|             sta_got_ip = get_test_library.client_connect_using_radio( | ||||
|                 ssid=ssid_name, | ||||
|                 passkey="[BLANK]", | ||||
|                 security="owe", | ||||
|                 mode="NAT-WAN", | ||||
|                 radio=radio_port_name, | ||||
|                 station_name=[station], | ||||
|                 attach_port_info=False, enable_owe=True, | ||||
|                 is_bw320=is_bw320, is_ht160=is_ht160 | ||||
|             ) | ||||
|  | ||||
|             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||
|             dict_table_sta = { | ||||
|                 "Key": list(sta_info["interface"].keys()), | ||||
|                 "Value": list(sta_info["interface"].values()) | ||||
|             } | ||||
|             data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid') | ||||
|             logging.info(f"Stations Data ({station}): \n{data_table_sta}\n") | ||||
|             allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta)) | ||||
|  | ||||
|             if sta_got_ip is False: | ||||
|                 logging.info("Station Failed to get IP") | ||||
|                 pytest.fail("Station Failed to get IP") | ||||
|  | ||||
|             logging.info("Connecting SSH connection...") | ||||
|             hostname = get_test_library.manager_ip | ||||
|             port = get_test_library.manager_ssh_port | ||||
|             username = 'root' | ||||
|             password = 'lanforge' | ||||
|             ping_host = "google.com" | ||||
|             ping_count = 10 | ||||
|             ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}" | ||||
|             client = paramiko.SSHClient() | ||||
|             try: | ||||
|                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | ||||
|                 client.connect(hostname, port=port, username=username, password=password) | ||||
|  | ||||
|                 logging.info("Making sure client not getting internet access before UAM authentication...") | ||||
|                 ping_output_pre_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n") | ||||
|                 allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_pre_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" not in ping_output_pre_authentication: | ||||
|                     logging.info("Client already have internet access before UAM authentication!!!") | ||||
|                     pytest.fail("Client already have internet access before UAM authentication") | ||||
|                 logging.info("Client do not have internet access before UAM authentication.") | ||||
|  | ||||
|                 logging.info("Getting the inet ip address...") | ||||
|                 logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}") | ||||
|                 cmd_output = get_target_object.get_dut_library_object().run_generic_command( | ||||
|                     cmd="ifconfig up0v0", | ||||
|                     idx=get_test_library.dut_data.index(dut), | ||||
|                     attach_allure=False | ||||
|                 ) | ||||
|                 ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)") | ||||
|                 match = ip_pattern.search(cmd_output) | ||||
|                 inet_ip_addr = match.group(1) | ||||
|                 logging.info(f"inet ip addr: {inet_ip_addr}") | ||||
|  | ||||
|                 expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/" | ||||
|                 expected_location_output = run_command_using_ssh(client, expected_location) | ||||
|  | ||||
|                 challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0] | ||||
|                 logging.info(f"Redirection link: {challenge_link}") | ||||
|  | ||||
|                 url_info = {} | ||||
|                 for field in challenge_link.split('?')[1].split('&'): | ||||
|                     key_val_list = field.split('=') | ||||
|                     if len(key_val_list) == 2 and len(key_val_list[1]) != 0: | ||||
|                         url_info[key_val_list[0]] = key_val_list[1] | ||||
|                 logging.info(f"url_info: {url_info}") | ||||
|  | ||||
|                 challenge = url_info['challenge'] | ||||
|                 nasid = url_info['nasid'] | ||||
|                 station_mac = url_info['mac'] | ||||
|                 uamport = url_info['uamport'] | ||||
|  | ||||
|                 link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}' | ||||
|                         f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}' | ||||
|                         f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1') | ||||
|                 html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"' | ||||
|                 html_response = run_command_using_ssh(client, html_request) | ||||
|  | ||||
|                 logging.info(f"HTML response containing authentication url:\n{html_response}") | ||||
|                 allure.attach(name="HTML response containing authentication url:", body=str(html_response), | ||||
|                               attachment_type=allure.attachment_type.TEXT) | ||||
|  | ||||
|                 soup = BeautifulSoup(html_response, 'html.parser') | ||||
|                 meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'}) | ||||
|                 content = meta_tag['content'] | ||||
|                 authentication_url = "=".join(content.split('=')[1:]) | ||||
|  | ||||
|                 logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n") | ||||
|                 allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url)) | ||||
|  | ||||
|                 cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"' | ||||
|                 authentication_response = run_command_using_ssh(client, cmd_to_authenticate) | ||||
|  | ||||
|                 logging.info(f"\n{authentication_response}\n") | ||||
|                 allure.attach(name="Response from captive portal: ", | ||||
|                               body=authentication_response, attachment_type=allure.attachment_type.HTML) | ||||
|  | ||||
|                 if "<h1> Connected </h1>" not in authentication_response: | ||||
|                     logging.info("Captive portal authentication Failed") | ||||
|                     pytest.fail("Captive portal authentication Failed") | ||||
|  | ||||
|                 logging.info("Captive portal authentication successful! Checking if client got internet access...") | ||||
|                 ping_output_post_authentication = run_command_using_ssh(client, ping_command) | ||||
|  | ||||
|                 logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n") | ||||
|                 allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)", | ||||
|                               body=str(ping_output_post_authentication)) | ||||
|  | ||||
|                 if "100% packet loss" in ping_output_post_authentication: | ||||
|                     logging.info("Client did not get internet access even after authentication!!!") | ||||
|                     pytest.fail("Client did not get internet access even after authentication") | ||||
|             except Exception as e: | ||||
|                 logging.error(f"Error occurred: {e}", exc_info=True) | ||||
|                 pytest.fail(f"Error occurred: {e}") | ||||
|             finally: | ||||
|                 client.close() | ||||
|  | ||||
|             logging.info("Checking throughput speed...") | ||||
|             wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="NAT-WAN", | ||||
|                                                                     download_rate="10Gbps", | ||||
|                                                                     upload_rate="56Kbps", | ||||
|                                                                     protocol="UDP-IPv4", | ||||
|                                                                     duration="60000", | ||||
|                                                                     batch_size="1", | ||||
|                                                                     stations=radio_port_name[:4] + station, | ||||
|                                                                     add_stations=False, | ||||
|                                                                     create_stations=False) | ||||
|  | ||||
|             report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/" | ||||
|             numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report) | ||||
|             expected_throughput = 10 | ||||
|             throughput = { | ||||
|                 "download": [numeric_score[0][0]], | ||||
|                 "upload": [numeric_score[1][0]], | ||||
|                 "total": [numeric_score[2][0]], | ||||
|                 "expected": [f"<= {expected_throughput}"], | ||||
|                 "unit": ["Mbps"], | ||||
|                 "PASS": [numeric_score[2][0] <= expected_throughput] | ||||
|             } | ||||
|             data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid') | ||||
|             allure.attach(name='Throughput Data', body=data_table) | ||||
|             logging.info(f"\n{data_table}") | ||||
|  | ||||
|             if not throughput["PASS"][0]: | ||||
|                 logging.info("Throughput exceeded than set threshold") | ||||
|                 pytest.fail("Throughput exceeded than set threshold") | ||||
|             logging.info("Throughput is within the set threshold") | ||||
|   | ||||
| @@ -4,43 +4,129 @@ | ||||
|     pytest -m "advanced_captive_portal_tests and bridge" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests, | ||||
|               pytest.mark.click_to_continue] | ||||
| captive = { | ||||
|                  "auth-mode": "click-to-continue", | ||||
|                  "walled-garden-fqdn": [ | ||||
|                      "*.google.com", | ||||
|                      "telecominfraproject.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "int_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|  | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|  | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="Internal Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestBridgeModeadvancedcaptiveportal(object): | ||||
|     """ | ||||
|         Advanced Captive Portal Test: BRIDGE Mode | ||||
| @@ -49,13 +135,12 @@ class TestBridgeModeadvancedcaptiveportal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.click_to_continue | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10977", name="WIFI-10977") | ||||
|     def test_bridge_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                               get_test_device_logs, num_stations, check_connectivity, | ||||
|                                               setup_configuration, get_testbed_details, get_target_object): | ||||
|     def test_bridge_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                               get_dut_logs_per_test_case,get_test_device_logs, num_stations, | ||||
|                                               check_connectivity, get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and bridge and click_to_continue" | ||||
| @@ -81,9 +166,90 @@ class TestBridgeModeadvancedcaptiveportal(object): | ||||
|                       body="Click-to-continue mode: In this mode the client will be redirected to the page where " | ||||
|                            "the client needs to accept the terms of service before getting internet.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=setup_configuration, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 5 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                               get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                               check_connectivity, get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and bridge and click_to_continue" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "click-to-continue", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "open" | ||||
|         mode = "BRIDGE" | ||||
|         band = "fiveg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'action=click&accept_terms=clicked' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Click-to-continue mode: In this mode the client will be redirected to the page where " | ||||
|                            "the client needs to accept the terms of service before getting internet.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with owe encryption 6 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_6g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                               get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                               check_connectivity, get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and bridge and click_to_continue" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "click-to-continue", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "owe" | ||||
|         mode = "BRIDGE" | ||||
|         band = "sixg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'action=click&accept_terms=clicked' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Click-to-continue mode: In this mode the client will be redirected to the page where " | ||||
|                            "the client needs to accept the terms of service before getting internet.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160) | ||||
|         assert passes == "PASS", result | ||||
|   | ||||
| @@ -4,43 +4,129 @@ | ||||
|     pytest -m "advanced_captive_portal_tests and nat" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests] | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests, | ||||
|               pytest.mark.click_to_continue] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| captive = { | ||||
|                  "auth-mode": "click-to-continue", | ||||
|                  "walled-garden-fqdn": [ | ||||
|                      "*.google.com", | ||||
|                      "telecominfraproject.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "int_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="Internal Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestNatModeadvancedcaptiveportal(object): | ||||
|     """ | ||||
|         Advanced Captive Portal Test: NAT Mode | ||||
| @@ -49,13 +135,13 @@ class TestNatModeadvancedcaptiveportal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.click_to_continue | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14121", name="WIFI-14121") | ||||
|     def test_nat_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                               get_test_device_logs, num_stations, check_connectivity, | ||||
|                                               setup_configuration, get_testbed_details, get_target_object): | ||||
|     def test_nat_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                             get_dut_logs_per_test_case,get_test_device_logs, | ||||
|                                             num_stations, check_connectivity, | ||||
|                                             get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             nat Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and nat and click_to_continue" | ||||
| @@ -81,9 +167,92 @@ class TestNatModeadvancedcaptiveportal(object): | ||||
|                       body="Click-to-continue mode: In this mode the client will be redirected to the page where " | ||||
|                            "the client needs to accept the terms of service before getting internet.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=setup_configuration, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with open encryption 5 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                            get_dut_logs_per_test_case, get_test_device_logs, | ||||
|                                            num_stations, check_connectivity, | ||||
|                                            get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             nat Mode Advanced Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and nat and click_to_continue" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "click-to-continue", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "open" | ||||
|         mode = "NAT-WAN" | ||||
|         band = "fiveg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'action=click&accept_terms=clicked' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Click-to-continue mode: In this mode the client will be redirected to the page where " | ||||
|                            "the client needs to accept the terms of service before getting internet.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Click-to-continue mode with owe encryption 6 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_6g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||
|                                            get_dut_logs_per_test_case, get_test_device_logs, | ||||
|                                            num_stations, check_connectivity, | ||||
|                                            get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             nat Mode Advanced Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and nat and click_to_continue" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "click-to-continue", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "owe" | ||||
|         mode = "NAT-WAN" | ||||
|         band = "sixg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'action=click&accept_terms=clicked' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Click-to-continue mode: In this mode the client will be redirected to the page where " | ||||
|                            "the client needs to accept the terms of service before getting internet.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160) | ||||
|         assert passes == "PASS", result | ||||
| @@ -4,19 +4,16 @@ | ||||
|     pytest -m "advanced_captive_portal_tests and bridge" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests] | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests, | ||||
|               pytest.mark.local_user_and_pass] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| captive = { | ||||
|                  "auth-mode": "credentials", | ||||
|                  "credentials": [ | ||||
|                      { | ||||
| @@ -29,24 +26,111 @@ setup_params_general = { | ||||
|                      "telecominfraproject.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "int_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="Internal Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestBridgeModeadvancedcaptiveportal(object): | ||||
|     """ | ||||
|         Advanced Captive Portal Test: BRIDGE Mode | ||||
| @@ -55,13 +139,12 @@ class TestBridgeModeadvancedcaptiveportal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.local_user_and_pass | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10991", name="WIFI-10991") | ||||
|     def test_bridge_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                 get_test_device_logs, num_stations, check_connectivity, | ||||
|                                                 setup_configuration, get_testbed_details, get_target_object): | ||||
|     def test_bridge_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                 get_dut_logs_per_test_case,get_test_device_logs, | ||||
|                                                 num_stations,check_connectivity,get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and bridge and local_user_and_pass" | ||||
| @@ -93,9 +176,106 @@ class TestBridgeModeadvancedcaptiveportal(object): | ||||
|                       body="Local user/pass mode (Captive-Credentials): In this mode the client needs to " | ||||
|                            "enter the valid credentials that are configured in the AP to get the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=setup_configuration, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 5 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                 get_dut_logs_per_test_case, get_test_device_logs, | ||||
|                                                 num_stations, check_connectivity, get_testbed_details, | ||||
|                                                 get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and bridge and local_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "credentials", | ||||
|                             "credentials": [ | ||||
|                                 { | ||||
|                                     "username": "abc", | ||||
|                                     "password": "def" | ||||
|                                 } | ||||
|                             ], | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "open" | ||||
|         mode = "BRIDGE" | ||||
|         band = "fiveg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'username=abc&password=def&action=credentials' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Local user/pass mode (Captive-Credentials): In this mode the client needs to " | ||||
|                            "enter the valid credentials that are configured in the AP to get the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with owe encryption 6 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                 get_dut_logs_per_test_case, get_test_device_logs, | ||||
|                                                 num_stations, check_connectivity, get_testbed_details, | ||||
|                                                 get_target_object): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and bridge and local_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "credentials", | ||||
|                             "credentials": [ | ||||
|                                 { | ||||
|                                     "username": "abc", | ||||
|                                     "password": "def" | ||||
|                                 } | ||||
|                             ], | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "owe" | ||||
|         mode = "BRIDGE" | ||||
|         band = "sixg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'username=abc&password=def&action=credentials' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Local user/pass mode (Captive-Credentials): In this mode the client needs to " | ||||
|                            "enter the valid credentials that are configured in the AP to get the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -4,19 +4,15 @@ | ||||
|     pytest -m "advanced_captive_portal_tests and nat" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests, | ||||
|               pytest.mark.local_user_and_pass] | ||||
| captive = { | ||||
|                  "auth-mode": "credentials", | ||||
|                  "credentials": [ | ||||
|                      { | ||||
| @@ -29,24 +25,111 @@ setup_params_general = { | ||||
|                      "telecominfraproject.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "int_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="Internal Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestNatModeadvancedcaptiveportal(object): | ||||
|     """ | ||||
|         Advanced Captive Portal Test: NAT Mode | ||||
| @@ -55,13 +138,12 @@ class TestNatModeadvancedcaptiveportal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.local_user_and_pass | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14122", name="WIFI-14122") | ||||
|     def test_nat_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                 get_test_device_logs, num_stations, check_connectivity, | ||||
|                                                 setup_configuration, get_testbed_details, get_target_object): | ||||
|     def test_nat_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                              get_dut_logs_per_test_case,get_test_device_logs, num_stations, | ||||
|                                              check_connectivity, get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and nat and local_user_and_pass" | ||||
| @@ -93,9 +175,102 @@ class TestNatModeadvancedcaptiveportal(object): | ||||
|                       body="Local user/pass mode (Captive-Credentials): In this mode the client needs to " | ||||
|                            "enter the valid credentials that are configured in the AP to get the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=setup_configuration, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with open encryption 5 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                              get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                              check_connectivity, get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode Advanced Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and nat and local_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "credentials", | ||||
|                             "credentials": [ | ||||
|                                 { | ||||
|                                     "username": "abc", | ||||
|                                     "password": "def" | ||||
|                                 } | ||||
|                             ], | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "open" | ||||
|         mode = "NAT-WAN" | ||||
|         band = "fiveg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'username=abc&password=def&action=credentials' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Local user/pass mode (Captive-Credentials): In this mode the client needs to " | ||||
|                            "enter the valid credentials that are configured in the AP to get the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Local user/pass mode with owe encryption 6 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                              get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                              check_connectivity, get_testbed_details, get_target_object): | ||||
|         """ | ||||
|             NAT Mode Advanced Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and nat and local_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "credentials", | ||||
|                             "credentials": [ | ||||
|                                 { | ||||
|                                     "username": "abc", | ||||
|                                     "password": "def" | ||||
|                                 } | ||||
|                             ], | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "owe" | ||||
|         mode = "NAT-WAN" | ||||
|         band = "sixg" | ||||
|         # json post data for API | ||||
|         json_post_data = 'username=abc&password=def&action=credentials' | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Local user/pass mode (Captive-Credentials): In this mode the client needs to " | ||||
|                            "enter the valid credentials that are configured in the AP to get the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160) | ||||
|         assert passes == "PASS", result | ||||
|   | ||||
| @@ -4,19 +4,16 @@ | ||||
|     pytest -m "advanced_captive_portal_tests and bridge" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests] | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests, | ||||
|              pytest.mark.radius_user_and_pass] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| captive = { | ||||
|                  "auth-mode": "radius", | ||||
|                  "auth-server": "10.28.3.21", | ||||
|                  "auth-port": 1812, | ||||
| @@ -26,24 +23,110 @@ setup_params_general = { | ||||
|                      "telecominfraproject.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "int_cap_portal_2g_rup", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="Internal Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestBridgeModeadvancedcaptiveportal(object): | ||||
|     """ | ||||
|         Advanced Captive Portal Test: BRIDGE Mode | ||||
| @@ -52,14 +135,12 @@ class TestBridgeModeadvancedcaptiveportal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.radius_user_and_pass | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Radius user/pass mode with open encryption 2.4 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10996", name="WIFI-10996") | ||||
|     def test_bridge_open_2g_radius_user_and_pass(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, check_connectivity, | ||||
|                                                  setup_configuration, get_testbed_details, get_target_object, | ||||
|                                                  radius_info): | ||||
|     def test_bridge_open_2g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                  get_dut_logs_per_test_case,get_test_device_logs, num_stations, | ||||
|                                                  check_connectivity,get_testbed_details,get_target_object,radius_info): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and bridge and radius_user_and_pass" | ||||
| @@ -92,9 +173,106 @@ class TestBridgeModeadvancedcaptiveportal(object): | ||||
|                            " the valid credentials that are configured in the radius server being used to get " | ||||
|                            "the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=setup_configuration, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Radius user/pass mode with open encryption 5 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_open_5g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                  get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                                  check_connectivity, get_testbed_details, get_target_object, | ||||
|                                                  radius_info): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and bridge and radius_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "radius", | ||||
|                             "auth-server": "10.28.3.21", | ||||
|                             "auth-port": 1812, | ||||
|                             "auth-secret": "testing123", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "open" | ||||
|         mode = "BRIDGE" | ||||
|         band = "fiveg" | ||||
|         identity = radius_info['user'] | ||||
|         passwd = radius_info["password"] | ||||
|         # json post data for API | ||||
|         json_post_data = f"username={identity}&password={passwd}&action=radius" | ||||
|         print("json_post_data", json_post_data) | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter" | ||||
|                            " the valid credentials that are configured in the radius server being used to get " | ||||
|                            "the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Radius user/pass mode with owe encryption 6 GHz Band Bridge mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_bridge_6g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                                  get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                                  check_connectivity, get_testbed_details, get_target_object, | ||||
|                                                  radius_info): | ||||
|         """ | ||||
|             BRIDGE Mode Advanced Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and bridge and radius_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "radius", | ||||
|                             "auth-server": "10.28.3.21", | ||||
|                             "auth-port": 1812, | ||||
|                             "auth-secret": "testing123", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "owe" | ||||
|         mode = "BRIDGE" | ||||
|         band = "sixg" | ||||
|         identity = radius_info['user'] | ||||
|         passwd = radius_info["password"] | ||||
|         # json post data for API | ||||
|         json_post_data = f"username={identity}&password={passwd}&action=radius" | ||||
|         print("json_post_data", json_post_data) | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter" | ||||
|                            " the valid credentials that are configured in the radius server being used to get " | ||||
|                            "the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160) | ||||
|         assert passes == "PASS", result | ||||
|   | ||||
| @@ -4,19 +4,15 @@ | ||||
|     pytest -m "advanced_captive_portal_tests and nat" | ||||
|  | ||||
| """ | ||||
| import copy | ||||
| import logging | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": { | ||||
| pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests, | ||||
|               pytest.mark.radius_user_and_pass] | ||||
| captive = { | ||||
|                  "auth-mode": "radius", | ||||
|                  "auth-server": "10.28.3.21", | ||||
|                  "auth-port": 1812, | ||||
| @@ -26,24 +22,110 @@ setup_params_general = { | ||||
|                      "telecominfraproject.com" | ||||
|                  ] | ||||
|              } | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "open": [ | ||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ], | ||||
|         "owe": [ | ||||
|             {"ssid_name": "int_cap_portal_2g_rup", "appliedRadios": ["2G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              }, | ||||
|             {"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"], "security_key": "something", | ||||
|              "captive": captive | ||||
|              } | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel": 6, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel": 36, | ||||
|             "channel-mode": "HE" | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel": 33, | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE" | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| # Deep copy the original dictionary to avoid modifying it | ||||
| setup_params_general_wifi7 = copy.deepcopy(setup_params_general) | ||||
|  | ||||
| # Update channel-mode to 'EHT' for all bands | ||||
| for band in setup_params_general_wifi7["rf"]: | ||||
|     setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT" | ||||
|     if band == "6G": | ||||
|         setup_params_general_wifi7["rf"][band]["channel-width"] = 320 | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
| is_bw320 = False | ||||
| is_ht160 = False | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     global is_bw320 | ||||
|     global is_ht160 | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|     if ap_mode == "wifi7": | ||||
|         is_bw320 = True | ||||
|     if ap_mode == "wifi6e": | ||||
|         is_ht160 = True | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6" or ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general_wifi7 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Advanced Captive Portal Test") | ||||
| @allure.parent_suite("Advanced Captive Portal Tests") | ||||
| @allure.suite(suite_name="Internal Captive Portal") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestNATModeadvancedcaptiveportal(object): | ||||
|     """ | ||||
|         Advanced Captive Portal Test: NAT Mode | ||||
| @@ -52,14 +134,12 @@ class TestNATModeadvancedcaptiveportal(object): | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.radius_user_and_pass | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Radius user/pass mode with open encryption 2.4 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14123", name="WIFI-14123") | ||||
|     def test_nat_open_2g_radius_user_and_pass(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, check_connectivity, | ||||
|                                                  setup_configuration, get_testbed_details, get_target_object, | ||||
|                                                  radius_info): | ||||
|     def test_nat_open_2g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                               get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                               check_connectivity, get_testbed_details, get_target_object, radius_info): | ||||
|         """ | ||||
|             NAT Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and nat and radius_user_and_pass" | ||||
| @@ -92,9 +172,104 @@ class TestNATModeadvancedcaptiveportal(object): | ||||
|                            " the valid credentials that are configured in the radius server being used to get " | ||||
|                            "the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=setup_configuration, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.open | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Radius user/pass mode with open encryption 5 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_open_5g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                               get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                               check_connectivity, get_testbed_details, get_target_object, radius_info): | ||||
|         """ | ||||
|             NAT Mode Advanced Captive Portal Test with open encryption 5 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and nat and radius_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "radius", | ||||
|                             "auth-server": "10.28.3.21", | ||||
|                             "auth-port": 1812, | ||||
|                             "auth-secret": "testing123", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "open" | ||||
|         mode = "NAT-WAN" | ||||
|         band = "twog" | ||||
|         identity = radius_info['user'] | ||||
|         passwd = radius_info["password"] | ||||
|         # json post data for API | ||||
|         json_post_data = f"username={identity}&password={passwd}&action=radius" | ||||
|         print("json_post_data", json_post_data) | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter" | ||||
|                            " the valid credentials that are configured in the radius server being used to get " | ||||
|                            "the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object) | ||||
|         assert passes == "PASS", result | ||||
|  | ||||
|     @pytest.mark.owe | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.ow_regression_lf | ||||
|     @allure.title("Radius user/pass mode with owe encryption 6 GHz Band NAT mode") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498") | ||||
|     def test_nat_6g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||
|                                               get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||
|                                               check_connectivity, get_testbed_details, get_target_object, radius_info): | ||||
|         """ | ||||
|             NAT Mode Advanced Captive Portal Test with owe encryption 6 GHz Band | ||||
|             pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and nat and radius_user_and_pass" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"], | ||||
|                         "security_key": "something", | ||||
|                         "captive": { | ||||
|                             "auth-mode": "radius", | ||||
|                             "auth-server": "10.28.3.21", | ||||
|                             "auth-port": 1812, | ||||
|                             "auth-secret": "testing123", | ||||
|                             "walled-garden-fqdn": [ | ||||
|                                 "*.google.com", | ||||
|                                 "telecominfraproject.com" | ||||
|                             ] | ||||
|                         } | ||||
|                         } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = "[BLANK]" | ||||
|         security = "owe" | ||||
|         mode = "NAT-WAN" | ||||
|         band = "sixg" | ||||
|         identity = radius_info['user'] | ||||
|         passwd = radius_info["password"] | ||||
|         # json post data for API | ||||
|         json_post_data = f"username={identity}&password={passwd}&action=radius" | ||||
|         print("json_post_data", json_post_data) | ||||
|         allure.attach(name="Definition", | ||||
|                       body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter" | ||||
|                            " the valid credentials that are configured in the radius server being used to get " | ||||
|                            "the internet access.") | ||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, | ||||
|                                                                   dut_data=dut_data, | ||||
|                                                                   passkey=security_key, mode=mode, band=band, | ||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||
|                                                                   get_testbed_details=get_testbed_details, | ||||
|                                                                   tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160) | ||||
|         assert passes == "PASS", result | ||||
| @@ -21,7 +21,6 @@ setup_params_general1 = { | ||||
|             "band": "5G", | ||||
|             "country": "US", | ||||
|             "allow-dfs": True, | ||||
|             "channel-mode": "VHT", | ||||
|             "channel-width": 80, | ||||
|             "channel": 52 | ||||
|         } | ||||
| @@ -53,13 +52,15 @@ class TestDFSChannel52Bw80(object): | ||||
|         To verify that a 5G client operating on channel 52 shifts to a non-DFS channel if radar is detected | ||||
|         Unique Marker: pytest -m "bandwidth_80MHz and ow_sanity_lf and dfs_channel_52_bw_80" | ||||
|         """ | ||||
|         channel = setup_params_general1["rf"]["5G"]["channel"] | ||||
|         profile_data = setup_params_general1["ssid_modes"]["wpa2_personal"][0] | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = profile_data["security_key"] | ||||
|         security = "wpa2" | ||||
|         band = "fiveg" | ||||
|         mode = "BRIDGE" | ||||
|         get_test_library.dfs_test(ssid=ssid_name, security=security, | ||||
|         print("channel:",channel) | ||||
|         get_test_library.dfs_test(ssid=ssid_name, security=security, channel=channel, | ||||
|                                   passkey=security_key, mode=mode, band=band, | ||||
|                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) | ||||
|         get_target_object.reboot() | ||||
| @@ -78,7 +79,6 @@ setup_params_general2 = { | ||||
|             "band": "5G", | ||||
|             "country": "US", | ||||
|             "allow-dfs": True, | ||||
|             "channel-mode": "VHT", | ||||
|             "channel-width": 80, | ||||
|             "channel": 100 | ||||
|         } | ||||
| @@ -110,13 +110,14 @@ class TestDFSChannel100Bw80(object): | ||||
|         To verify that a 5G client operating on channel 100 shifts to a non-DFS channel if radar is detected | ||||
|         Unique Marker: pytest -m "bandwidth_80MHz and ow_sanity_lf and dfs_channel_100_bw_80" | ||||
|         """ | ||||
|         channel = setup_params_general2["rf"]["5G"]["channel"] | ||||
|         profile_data = setup_params_general2["ssid_modes"]["wpa2_personal"][0] | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = profile_data["security_key"] | ||||
|         security = "wpa2" | ||||
|         band = "fiveg" | ||||
|         mode = "BRIDGE" | ||||
|         get_test_library.dfs_test(ssid=ssid_name, security=security, | ||||
|         get_test_library.dfs_test(ssid=ssid_name, security=security, channel=channel, | ||||
|                                   passkey=security_key, mode=mode, band=band, | ||||
|                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) | ||||
|         get_target_object.reboot() | ||||
| @@ -135,7 +136,6 @@ setup_params_general11 = { | ||||
|             "band": "5G", | ||||
|             "country": "US", | ||||
|             "allow-dfs": True, | ||||
|             "channel-mode": "VHT", | ||||
|             "channel-width": 80, | ||||
|             "channel": 132 | ||||
|         } | ||||
| @@ -168,13 +168,14 @@ class TestDFSChannel132Bw80(object): | ||||
|         Unique Marker: pytest -m "bandwidth_80MHz and ow_sanity_lf and dfs_channel_132_bw_80" | ||||
|  | ||||
|         """ | ||||
|         channel = setup_params_general11["rf"]["5G"]["channel"] | ||||
|         profile_data = setup_params_general11["ssid_modes"]["wpa2_personal"][0] | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security_key = profile_data["security_key"] | ||||
|         security = "wpa2" | ||||
|         band = "fiveg" | ||||
|         mode = "BRIDGE" | ||||
|         get_test_library.dfs_test(ssid=ssid_name, security=security, | ||||
|         get_test_library.dfs_test(ssid=ssid_name, security=security, channel=channel, | ||||
|                                   passkey=security_key, mode=mode, band=band, | ||||
|                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) | ||||
|         get_target_object.reboot() | ||||
|   | ||||
| @@ -14,10 +14,23 @@ setup_params_general_5G = { | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| @@ -208,7 +221,20 @@ setup_params_general_2G = { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
|   | ||||
| @@ -14,10 +14,23 @@ setup_params_general_5G = { | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| @@ -209,7 +222,20 @@ setup_params_general_2G = { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
|   | ||||
| @@ -0,0 +1,314 @@ | ||||
| """ | ||||
|     Performance Test: BE Capacity Test : BRIDGE Mode | ||||
|     pytest -m "wifi_capacity_be_tests and wpa2_personal and bridge" | ||||
| """ | ||||
| import pytest | ||||
| import allure | ||||
|  | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.wifi_capacity_be_tests, pytest.mark.wpa2_personal] | ||||
| setup_params_general_5G = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("Performance Test") | ||||
| @allure.parent_suite("BE Capacity Test") | ||||
| @allure.suite("5 GHz Band") | ||||
| @allure.sub_suite("BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_5G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.fiveg | ||||
| class TestWifiCapacityBRIDGEModeBE5G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.title("Single BE client TCP Download wifi capacity") | ||||
|     def test_client_wpa2_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz TCP Download traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and fiveg and tcp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_tcp_dl", dut_data=setup_configuration, | ||||
|                                           dut_mode=dut_mode, protocol="TCP", upload_rate="56Kbps", | ||||
|                                           download_rate="10Gbps", num_stations={"5G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Download wifi capacity") | ||||
|     def test_client_wpa2_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz UDP Download traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and fiveg and udp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_udp_dl", dut_data=setup_configuration, | ||||
|                                           dut_mode=dut_mode, protocol="UDP", upload_rate="56Kbps", | ||||
|                                           download_rate="10Gbps", num_stations={"5G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Upload wifi capacity") | ||||
|     def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz TCP Upload traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and fiveg and tcp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_tcp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="TCP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"5G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Upload wifi capacity") | ||||
|     def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz UDP Upload traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and fiveg and udp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_udp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="UDP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"5G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
|  | ||||
|  | ||||
| setup_params_general_2G = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("Performance Test") | ||||
| @allure.parent_suite("BE Capacity Test") | ||||
| @allure.suite("2.4 GHz Band") | ||||
| @allure.sub_suite("BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_2G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.twog | ||||
| class TestWifiCapacityBRIDGEModeBE2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.title("Single BE client TCP Download wifi capacity") | ||||
|     def test_client_wpa2_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz TCP Download traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and twog and tcp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_tcp_dl", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="TCP", upload_rate="56Kbps", download_rate="10Gbps", | ||||
|                                           num_stations={"2G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Download wifi capacity") | ||||
|     def test_client_wpa2_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz UDP Download traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and twog and udp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_udp_dl", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="UDP", upload_rate="56Kbps", download_rate="10Gbps", | ||||
|                                           num_stations={"2G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
|  | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Upload wifi capacity") | ||||
|     def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz TCP Upload traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and twog and tcp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_tcp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="TCP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"2G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Upload wifi capacity") | ||||
|     def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a 2G-enabled DUT supporting BE clients in Bridge mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz UDP Upload traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and bridge and twog and udp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_bridge_udp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="UDP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"2G": 1}, mode="BRIDGE") | ||||
|         assert True | ||||
| @@ -0,0 +1,312 @@ | ||||
| """ | ||||
|     Performance Test: BE Capacity Test : NAT Mode | ||||
|     pytest -m "wifi_capacity_be_tests and wpa2_personal and nat" | ||||
| """ | ||||
| import pytest | ||||
| import allure | ||||
|  | ||||
| pytestmark = [pytest.mark.nat, pytest.mark.wifi_capacity_be_tests, pytest.mark.wpa2_personal] | ||||
| setup_params_general_5G = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("Performance Test") | ||||
| @allure.parent_suite("BE Capacity Test") | ||||
| @allure.suite("5 GHz Band") | ||||
| @allure.sub_suite("NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_5G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.fiveg | ||||
| class TestWifiCapacityNATModeBE5G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6947", name="WIFI-6947") | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Download wifi capacity") | ||||
|     def test_client_wpa2_nat_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz TCP Download traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and fiveg and tcp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_tcp_dl", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="TCP", upload_rate="56Kbps", download_rate="10Gbps", | ||||
|                                           num_stations={"5G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6950", name="WIFI-6950") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Download wifi capacity") | ||||
|     def test_client_wpa2_nat_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz UDP Download traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and fiveg and udp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_tcp_dl", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="UDP", upload_rate="56Kbps", download_rate="10Gbps", | ||||
|                                           num_stations={"5G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6948", name="WIFI-6948") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Upload wifi capacity") | ||||
|     def test_client_wpa2_nat_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz TCP Upload traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and fiveg and tcp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_tcp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="TCP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"5G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-6951", name="WIFI-6951") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Upload wifi capacity") | ||||
|     def test_client_wpa2_nat_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 5Ghz UDP Upload traffic. | ||||
|         The 5Ghz station is configured for 80Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and fiveg and udp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_udp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="UDP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"5G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
|  | ||||
|  | ||||
| setup_params_general_2G = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("Performance Test") | ||||
| @allure.parent_suite("BE Capacity Test") | ||||
| @allure.suite("2.4 GHz Band") | ||||
| @allure.sub_suite("NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_2G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.twog | ||||
| class TestWifiCapacityNATModeBE2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-13290", name="WIFI-13290") | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Download wifi capacity") | ||||
|     def test_client_wpa2_nat_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz TCP Download traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and twog and tcp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_tcp_dl", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="TCP", upload_rate="56Kbps", download_rate="10Gbps", | ||||
|                                           num_stations={"2G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-13293", name="WIFI-13293") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Download wifi capacity") | ||||
|     def test_client_wpa2_nat_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz UDP Download traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and twog and udp_download | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_udp_dl", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="UDP", upload_rate="56Kbps", download_rate="10Gbps", | ||||
|                                           num_stations={"2G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-13291", name="WIFI-13291") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Upload wifi capacity") | ||||
|     def test_client_wpa2_nat_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz TCP Upload traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and twog and tcp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_tcp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="TCP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"2G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-13294", name="WIFI-13294") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Upload wifi capacity") | ||||
|     def test_client_wpa2_nat_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ | ||||
|         Description: | ||||
|         The test case examines the maximum performance of a DUT supporting BE clients in NAT mode. | ||||
|         This test focuses on stressing the DUT's capacity under the influence of 2.4Ghz UDP Upload traffic. | ||||
|         The 2.4Ghz station is configured for 20Mhz bandwidth and two spatial streams. | ||||
|  | ||||
|         Markers: | ||||
|         wifi_capacity_be_tests and wpa2_personal and nat and twog and udp_upload | ||||
|  | ||||
|         Note: | ||||
|         Please refer to the PDF report for detailed observations and analysis of the test results. | ||||
|         """ | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|  | ||||
|         get_test_library.be_capacity_test(instance_name="test_client_wpa2_nat_udp_ul", | ||||
|                                           dut_data=setup_configuration, dut_mode=dut_mode, | ||||
|                                           protocol="UDP", upload_rate="10Gbps", download_rate="56Kbps", | ||||
|                                           num_stations={"2G": 1}, mode="NAT-WAN") | ||||
|         assert True | ||||
| @@ -0,0 +1,151 @@ | ||||
| """ | ||||
|  | ||||
|     Performance Test: Single BE client Wifi capacity with Channel and Channel-width Test: Bridge Mode | ||||
|     pytest -m "wifi_capacity_be_tests and bridge" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.wifi_capacity_be_tests, pytest.mark.bridge, pytest.mark.sixg, | ||||
|               pytest.mark.wpa3_personal] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|  | ||||
|                           ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("Performance Test") | ||||
| @allure.parent_suite("BE Capacity Test") | ||||
| @allure.suite("6 GHz Band") | ||||
| @allure.sub_suite("BRIDGE Mode") | ||||
|  | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.wpa3_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestWifiCapacityBRIDGEModeBE6G(object): | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.title("Single BE client TCP Download wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single BE client Capacity Test BRIDGE mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and tcp_download and bridge" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_download", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True , is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Download wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single BE client Capacity Test BRIDGE mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and udp_download and bridge" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_dl", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Upload wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single BE client Capacity Test BRIDGE mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and tcp_upload and bridge" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         # val = [['modes: Auto'], ['bandw_options: 320Mhz']] | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Upload wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single BE client Capacity Test BRIDGE mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and udp_upload and bridge" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
| @@ -0,0 +1,146 @@ | ||||
| """ | ||||
|  | ||||
|     Performance Test: Single BE client Wifi capacity with Channel and Channel-width Test: nat Mode | ||||
|     pytest -m "be_capacity_tests and nat" | ||||
|  | ||||
| """ | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.wifi_capacity_be_tests, pytest.mark.nat, pytest.mark.sixg, | ||||
|               pytest.mark.wpa3_personal] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|             ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("Performance Test") | ||||
| @allure.parent_suite("BE Capacity Test") | ||||
| @allure.suite("6 GHz Band") | ||||
| @allure.sub_suite("NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.wpa3_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestWifiCapacityNATMode6G(object): | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Download wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_nat_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single BE client Wifi Capacity Test nat mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and tcp_download and nat" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_download", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Download wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_nat_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single client Wifi Capacity Test nat mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and udp_download and nat" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_dl", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client TCP Upload wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_nat_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single BE client Wifi Capacity Test nat mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and tcp_upload and nat" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14446", name="WIFI-14446") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Single BE client UDP Upload wifi capacity 320Mhz Bw") | ||||
|     def test_be_client_wpa3_nat_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, get_lab_info, selected_testbed, check_connectivity): | ||||
|         """ Single client Wifi Capacity Test nat mode | ||||
|             pytest -m "wifi_capacity_be_tests and sixg and udp_upload and nat" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, is_wifi7=True, is_bw320=True, | ||||
|                                        sets_=sets) | ||||
|         assert True | ||||
| @@ -1,14 +1,14 @@ | ||||
| """ | ||||
| 
 | ||||
|     Performance Test: Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "client_scale_test and BRIDGE" | ||||
|     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "ax_client_scale_tests and BRIDGE" | ||||
| 
 | ||||
| """ | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
| 
 | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.client_scale_tests] | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests] | ||||
| 
 | ||||
| setup_params_general_2G = { | ||||
|     "mode": "BRIDGE", | ||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="Open Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and open and twog" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and open and twog" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3648", name="WIFI-3648") | ||||
| @@ -47,8 +47,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_client_open_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and twog and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -66,8 +66,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_client_open_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and twog and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and twog and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -86,8 +86,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_open_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and twog and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -106,8 +106,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_open_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and twog and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and twog and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -125,8 +125,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_open_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and twog and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -144,8 +144,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_open_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and twog and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -170,8 +170,8 @@ setup_params_general_5G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="Open Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -185,8 +185,8 @@ setup_params_general_5G = { | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and open and fiveg" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and open and fiveg" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3649", name="WIFI-3649") | ||||
| @@ -196,8 +196,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_open_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -217,8 +217,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_open_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -237,8 +237,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_open_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -257,8 +257,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_open_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -276,8 +276,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_open_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -295,8 +295,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_open_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -1,14 +1,14 @@ | ||||
| """ | ||||
| 
 | ||||
|     Performance Test: Client Scale Test : NAT Mode | ||||
|     pytest -m "client_scale_test and nat" | ||||
|     Performance Test: AX Client Scale Test : NAT Mode | ||||
|     pytest -m "ax_client_scale_tests and nat" | ||||
| 
 | ||||
| """ | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
| 
 | ||||
| pytestmark = [pytest.mark.nat, pytest.mark.client_scale_tests] | ||||
| pytestmark = [pytest.mark.nat, pytest.mark.ax_client_scale_tests] | ||||
| 
 | ||||
| setup_params_general_2G = { | ||||
|     "mode": "NAT", | ||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="Open Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityNATMode2G(object): | ||||
|     """ Client Scale Test NAT mode | ||||
|         pytest -m "client_scale_tests and nat and open and twog" | ||||
|     """ AX Client Scale Test NAT mode | ||||
|         pytest -m "ax_client_scale_tests and nat and open and twog" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3648", name="WIFI-3648") | ||||
| @@ -47,8 +47,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_client_open_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and twog and tcp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -66,8 +66,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_client_open_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and twog and udp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and twog and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -86,8 +86,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     def test_client_open_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and twog and tcp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and twog and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -106,8 +106,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     def test_client_open_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and twog and udp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and twog and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -125,8 +125,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     def test_client_open_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and twog and tcp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -144,8 +144,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     def test_client_open_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and twog and udp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -170,8 +170,8 @@ setup_params_general_5G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="Open Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -185,8 +185,8 @@ setup_params_general_5G = { | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| class TestWifiCapacityNATMode5G(object): | ||||
|     """ Client Scale Test NAT mode | ||||
|         pytest -m "client_scale_tests and nat and open and fiveg" | ||||
|     """ AX Client Scale Test NAT mode | ||||
|         pytest -m "ax_client_scale_tests and nat and open and fiveg" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3649", name="WIFI-3649") | ||||
| @@ -196,8 +196,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_open_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and fiveg and tcp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -217,8 +217,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_open_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and fiveg and udp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -237,8 +237,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_open_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and fiveg and tcp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -257,8 +257,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_open_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and fiveg and udp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -276,8 +276,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_open_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and fiveg and udp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -295,8 +295,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_open_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and open and fiveg and tcp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -1,14 +1,14 @@ | ||||
| """ | ||||
| 
 | ||||
|     Performance Test: Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "client_scale_test and BRIDGE" | ||||
|     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "ax_client_scale_tests and BRIDGE" | ||||
| 
 | ||||
| """ | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
| 
 | ||||
| pytestmark = [pytest.mark.performance, pytest.mark.bridge, pytest.mark.client_scale_tests] | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests] | ||||
| 
 | ||||
| setup_params_general_2G = { | ||||
|     "mode": "BRIDGE", | ||||
| @@ -17,13 +17,32 @@ setup_params_general_2G = { | ||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -37,18 +56,19 @@ setup_params_general_2G = { | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and wpa2_personal and twog" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3928", name="WIFI-3928") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -63,11 +83,12 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3930", name="WIFI-3930") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -86,8 +107,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa2_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -106,8 +127,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa2_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -122,12 +143,13 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz") | ||||
|     def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -142,12 +164,13 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz") | ||||
|     def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -167,13 +190,32 @@ setup_params_general_5G = { | ||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -187,19 +229,20 @@ setup_params_general_5G = { | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3929", name="WIFI-3929") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Download 5 GHz") | ||||
|     def test_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -215,12 +258,13 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3931", name="WIFI-3931") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Download 5 GHz") | ||||
|     def test_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_download" | ||||
|         """ AX  Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -239,8 +283,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa2_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -259,8 +303,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa2_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -274,12 +318,13 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
| 
 | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Upload 5 GHz") | ||||
|     def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -293,12 +338,13 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
| 
 | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Upload 5 GHz") | ||||
|     def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -318,13 +364,32 @@ setup_params_general_dual = { | ||||
|             {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -340,18 +405,19 @@ setup_params_general_dual = { | ||||
| @pytest.mark.dual_band | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityBRIDGEModeDual(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3926", name="WIFI-3926") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Download 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -366,11 +432,12 @@ class TestWifiCapacityBRIDGEModeDual(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3927", name="WIFI-3927") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Download 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -389,8 +456,8 @@ class TestWifiCapacityBRIDGEModeDual(object): | ||||
|     def test_client_wpa2_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -409,8 +476,8 @@ class TestWifiCapacityBRIDGEModeDual(object): | ||||
|     def test_client_wpa2_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -425,12 +492,13 @@ class TestWifiCapacityBRIDGEModeDual(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -445,12 +513,13 @@ class TestWifiCapacityBRIDGEModeDual(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -1,14 +1,14 @@ | ||||
| """ | ||||
| 
 | ||||
|     Performance Test: Client Scale Test : NAT Mode | ||||
|     pytest -m "client_scale_test and nat" | ||||
|     Performance Test: AX Client Scale Test : NAT Mode | ||||
|     pytest -m "ax_client_scale_tests and nat" | ||||
| 
 | ||||
| """ | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
| 
 | ||||
| pytestmark = [pytest.mark.performance, pytest.mark.nat, pytest.mark.client_scale_tests] | ||||
| pytestmark = [pytest.mark.nat, pytest.mark.ax_client_scale_tests] | ||||
| 
 | ||||
| setup_params_general_2G = { | ||||
|     "mode": "NAT", | ||||
| @@ -17,13 +17,32 @@ setup_params_general_2G = { | ||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -37,18 +56,19 @@ setup_params_general_2G = { | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityNATMode2G(object): | ||||
|     """ Client Scale Test NAT mode | ||||
|         pytest -m "client_scale_tests and nat and wpa2_personal and twog" | ||||
|     """ AX Client Scale Test NAT mode | ||||
|         pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3928", name="WIFI-3928") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -63,11 +83,12 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3930", name="WIFI-3930") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -86,8 +107,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     def test_client_wpa2_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -106,8 +127,8 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     def test_client_wpa2_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -122,12 +143,13 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz") | ||||
|     def test_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -142,12 +164,13 @@ class TestWifiCapacityNATMode2G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz") | ||||
|     def test_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -167,13 +190,32 @@ setup_params_general_5G = { | ||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -187,19 +229,20 @@ setup_params_general_5G = { | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| class TestWifiCapacityNATMode5G(object): | ||||
|     """ Client Scale Test NAT mode | ||||
|         pytest -m "client_scale_tests and nat and wpa2_personal and fiveg" | ||||
|     """ AX Client Scale Test NAT mode | ||||
|         pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3929", name="WIFI-3929") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Download 5 GHz") | ||||
|     def test_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -215,12 +258,13 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3931", name="WIFI-3931") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Download 5 GHz") | ||||
|     def test_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -239,8 +283,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_wpa2_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -259,8 +303,8 @@ class TestWifiCapacityNATMode5G(object): | ||||
|     def test_client_wpa2_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -274,12 +318,13 @@ class TestWifiCapacityNATMode5G(object): | ||||
| 
 | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Upload 5 GHz") | ||||
|     def test_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -293,12 +338,13 @@ class TestWifiCapacityNATMode5G(object): | ||||
| 
 | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Upload 5 GHz") | ||||
|     def test_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -318,13 +364,32 @@ setup_params_general_dual = { | ||||
|             {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -340,18 +405,19 @@ setup_params_general_dual = { | ||||
| @pytest.mark.dual_band | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityNATModeDual(object): | ||||
|     """ Client Scale Test NAT mode | ||||
|         pytest -m "client_scale_tests and nat and wpa2_personal and dual_band" | ||||
|     """ AX Client Scale Test NAT mode | ||||
|         pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3926", name="WIFI-3926") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Download 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -366,11 +432,12 @@ class TestWifiCapacityNATModeDual(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3927", name="WIFI-3927") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Download 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_download" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -389,8 +456,8 @@ class TestWifiCapacityNATModeDual(object): | ||||
|     def test_client_wpa2_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -409,8 +476,8 @@ class TestWifiCapacityNATModeDual(object): | ||||
|     def test_client_wpa2_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_bidirectional" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -425,12 +492,13 @@ class TestWifiCapacityNATModeDual(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -445,12 +513,13 @@ class TestWifiCapacityNATModeDual(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations): | ||||
|         """ Client Scale Test NAT mode | ||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_upload" | ||||
|         """ AX Client Scale Test NAT mode | ||||
|             pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -1,14 +1,14 @@ | ||||
| """ | ||||
| 
 | ||||
|     Performance Test: Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "client_scale_tests and bridge" | ||||
|     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "ax_client_scale_tests and bridge" | ||||
| 
 | ||||
| """ | ||||
| import os | ||||
| import pytest | ||||
| import allure | ||||
| 
 | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.client_scale_tests] | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests] | ||||
| 
 | ||||
| setup_params_general_2G = { | ||||
|     "mode": "BRIDGE", | ||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA3 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and wpa3_personal and twog" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3651", name="WIFI-3651") | ||||
| @@ -47,8 +47,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -65,8 +65,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz") | ||||
|     def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -83,8 +83,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz") | ||||
|     def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -102,8 +102,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|                     pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|                     pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and udp_download" | ||||
|                 """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -122,8 +122,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa3_bridge_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -142,8 +142,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa3_bridge_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -168,8 +168,8 @@ setup_params_general_5G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA3 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -183,8 +183,8 @@ setup_params_general_5G = { | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|            client_scale_tests and bridge and wpa3_personal and fiveg" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|            ax_client_scale_tests and bridge and wpa3_personal and fiveg" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3653", name="WIFI-3653") | ||||
| @@ -193,8 +193,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     @allure.title("Test for TCP Download 5 GHz") | ||||
|     def test_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -212,8 +212,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     @allure.title("Test for UDP Download 5 GHz") | ||||
|     def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -232,8 +232,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa3_bridge_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -252,8 +252,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa3_bridge_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -270,8 +270,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     @allure.title("Test for TCP Upload 5 GHz") | ||||
|     def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -288,8 +288,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     @allure.title("Test for UDP Upload 5 GHz") | ||||
|     def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -310,13 +310,32 @@ setup_params_general_6G = { | ||||
|             {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA3 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -328,20 +347,20 @@ setup_params_general_6G = { | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa3_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.performance | ||||
| class TestWifiCapacityBRIDGEMode6G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|            client_scale_tests and bridge and wpa3_personal and sixg" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|            ax_client_scale_tests and bridge and wpa3_personal and sixg" | ||||
|     """ | ||||
| 
 | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Download 6 GHz") | ||||
|     def test_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -357,11 +376,12 @@ class TestWifiCapacityBRIDGEMode6G(object): | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Download 6 GHz") | ||||
|     def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -381,8 +401,8 @@ class TestWifiCapacityBRIDGEMode6G(object): | ||||
|     def test_client_wpa3_bridge_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -402,8 +422,8 @@ class TestWifiCapacityBRIDGEMode6G(object): | ||||
|     def test_client_wpa3_bridge_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                   max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -418,11 +438,12 @@ class TestWifiCapacityBRIDGEMode6G(object): | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for TCP Upload 6 GHz") | ||||
|     def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -437,11 +458,12 @@ class TestWifiCapacityBRIDGEMode6G(object): | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.performance | ||||
|     @allure.title("Test for UDP Upload 6 GHz") | ||||
|     def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -1,14 +1,14 @@ | ||||
| """ | ||||
| 
 | ||||
|     Performance Test: Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "client_scale_test and BRIDGE" | ||||
|     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "ax_client_scale_tests and BRIDGE" | ||||
| 
 | ||||
| """ | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
| 
 | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.client_scale_tests] | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests] | ||||
| 
 | ||||
| setup_params_general_2G = { | ||||
|     "mode": "BRIDGE", | ||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and wpa_personal and twog" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3650", name="WIFI-3650") | ||||
| @@ -47,8 +47,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_client_wpa_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -66,8 +66,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_client_wpa_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -86,8 +86,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -106,8 +106,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -125,8 +125,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -144,8 +144,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     def test_client_wpa_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -170,8 +170,8 @@ setup_params_general_5G = { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @allure.feature("Client Scale Tests") | ||||
| @allure.parent_suite("Client Scale Tests") | ||||
| @allure.feature("AX Client Scale Tests") | ||||
| @allure.parent_suite("AX Client Scale Tests") | ||||
| @allure.suite(suite_name="wpa Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
| @@ -185,8 +185,8 @@ setup_params_general_5G = { | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     """ Client Scale Test BRIDGE mode | ||||
|         pytest -m "client_scale_tests and bridge and wpa_personal and fiveg" | ||||
|     """ AX Client Scale Test BRIDGE mode | ||||
|         pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg" | ||||
|     """ | ||||
| 
 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3652", name="WIFI-3652") | ||||
| @@ -196,8 +196,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -217,8 +217,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_download" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -237,8 +237,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and tcp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -257,8 +257,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, num_stations, setup_configuration, | ||||
|                                                  max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_bidirectional" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and udp_bidirectional" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -276,8 +276,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -295,8 +295,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     def test_client_wpa_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, num_stations, setup_configuration, | ||||
|                                       max_stations): | ||||
|         """ Client Scale Test BRIDGE mode | ||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_upload" | ||||
|         """ AX Client Scale Test BRIDGE mode | ||||
|             pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -0,0 +1,450 @@ | ||||
| """ | ||||
|  | ||||
|     Performance Test: BE Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "be_client_scale_tests and BRIDGE" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.be_client_scale_tests] | ||||
|  | ||||
| setup_params_general_2G = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("BE Client Scale Tests") | ||||
| @allure.parent_suite("BE Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_2G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa2_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| @pytest.mark.performance | ||||
| class TestWifiCapacityBRIDGEMode2G(object): | ||||
|     """ BE Client Scale Test BRIDGE mode | ||||
|         pytest -m "be_client_scale_tests and bridge and wpa2_personal and twog" | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_be_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, get_lab_info, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_tcp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="0Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_be_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, get_lab_info, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and twog and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_udp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz") | ||||
|     def test_be_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, get_lab_info, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_tcp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz") | ||||
|     def test_be_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, get_lab_info, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_udp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|  | ||||
| setup_params_general_5G = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("BE Client Scale Tests") | ||||
| @allure.parent_suite("BE Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_5G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa2_personal | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| @pytest.mark.performance | ||||
| class TestWifiCapacityBRIDGEMode5G(object): | ||||
|     """ BE Client Scale Test BRIDGE mode | ||||
|         pytest -m "be_client_scale_tests and bridge and wpa2_personal and fiveg" | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @allure.title("Test for TCP Download 5 GHz") | ||||
|     def test_be_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_tcp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="0Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|  | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @allure.title("Test for UDP Download 5 GHz") | ||||
|     def test_be_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_udp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @allure.title("Test for UDP Upload 5 GHz") | ||||
|     def test_be_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_udp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @allure.title("Test for TCP Upload 5 GHz") | ||||
|     def test_be_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_tcp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|  | ||||
| setup_params_general_dual = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("BE Client Scale Tests") | ||||
| @allure.parent_suite("BE Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_dual], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa2_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.dual_band | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityBRIDGEModeDual(object): | ||||
|     """ BE Client Scale Test BRIDGE mode | ||||
|         pytest -m "be_client_scale_tests and bridge and wpa2_personal and dual_band" | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @allure.title("Test for TCP Download 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_tcp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="0Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3927", name="WIFI-3927") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @allure.title("Test for UDP Download 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and dual_band and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_udp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_tcp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, | ||||
|                                        max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa2_personal and dual_band and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_BRIDGE_udp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
| @@ -0,0 +1,450 @@ | ||||
| """ | ||||
|  | ||||
|     Performance Test: BE Client Scale Test : NAT Mode | ||||
|     pytest -m "be_client_scale_tests and nat" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.nat, pytest.mark.be_client_scale_tests] | ||||
|  | ||||
| setup_params_general_2G = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("BE Client Scale Tests") | ||||
| @allure.parent_suite("BE Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_2G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa2_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.twog_band | ||||
| @pytest.mark.performance | ||||
| class TestWifiCapacityNATMode2G(object): | ||||
|     """ BE Client Scale Test NAT mode | ||||
|         pytest -m "be_client_scale_tests and nat and wpa2_personal and twog" | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @allure.title("Test for TCP Download 2.4 GHz") | ||||
|     def test_BE_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and twog and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_tcp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @allure.title("Test for UDP Download 2.4 GHz") | ||||
|     def test_be_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and twog and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_udp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz") | ||||
|     def test_be_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and twog and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_tcp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz") | ||||
|     def test_be_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and twog and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_udp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|  | ||||
| setup_params_general_5G = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("BE Client Scale Tests") | ||||
| @allure.parent_suite("BE Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_5G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa2_personal | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.fiveg_band | ||||
| @pytest.mark.performance | ||||
| class TestWifiCapacityNATMode5G(object): | ||||
|     """ BE Client Scale Test NAT mode | ||||
|         pytest -m "be_client_scale_tests and nat and wpa2_personal and fiveg" | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @allure.title("Test for TCP Download 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and fiveg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_tcp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|  | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @allure.title("Test for UDP Download 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and fiveg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_udp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @allure.title("Test for UDP Upload 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and fiveg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_udp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @allure.title("Test for TCP Upload 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and fiveg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_tcp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|  | ||||
| setup_params_general_dual = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("BE Client Scale Tests") | ||||
| @allure.parent_suite("BE Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_dual], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa2_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.fiveg | ||||
| @pytest.mark.dual_band | ||||
| @pytest.mark.twog_band | ||||
| class TestWifiCapacityNATModeDual(object): | ||||
|     """ BE Client Scale Test NAT mode | ||||
|         pytest -m "be_client_scale_tests and nat and wpa2_personal and dual_band" | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @allure.title("Test for TCP Download 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and dual_band and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_tcp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @allure.title("Test for UDP Download 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and dual_band and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_udp_dl", mode=mode, | ||||
|                                        download_rate="1Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @allure.title("Test for TCP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and dual_band and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_tcp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14447", name="WIFI-14447") | ||||
|     @pytest.mark.wpa2_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @allure.title("Test for UDP Upload 2.4 GHz and 5 GHz") | ||||
|     def test_be_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration, | ||||
|                                     max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test NAT mode | ||||
|             pytest -m "be_client_scale_tests and nat and wpa2_personal and dual_band and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa2_NAT_udp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}, is_wifi7=True) | ||||
|         assert True | ||||
| @@ -0,0 +1,156 @@ | ||||
| """ | ||||
|  | ||||
|     Performance Test:  BE Client Scale Test : BRIDGE Mode | ||||
|     pytest -m "be_client_scale_tests and bridge" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
| import os | ||||
| import pytest | ||||
| import allure | ||||
|  | ||||
| pytestmark = [pytest.mark.bridge, pytest.mark.be_client_scale_tests] | ||||
|  | ||||
| setup_params_general_6G = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @allure.feature("BE Client Scale Tests") | ||||
| @allure.parent_suite("BE Client Scale Tests") | ||||
| @allure.suite(suite_name="WPA3 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general_6G], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| @pytest.mark.wpa3_personal | ||||
| @pytest.mark.twog | ||||
| @pytest.mark.performance | ||||
| class TestWifiCapacityBRIDGEMode6G(object): | ||||
|     """ BE Client Scale Test BRIDGE mode | ||||
|            be_client_scale_tests and bridge and wpa3_personal and sixg" | ||||
|     """ | ||||
|  | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.sixg | ||||
|     @allure.title("Test for TCP Download 6 GHz") | ||||
|     def test_be_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa3_personal and sixg and tcp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa3_BRIDGE_tcp_dl", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="0Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": max_stations}, is_wifi7=True, is_bw320=True) | ||||
|         assert True | ||||
|  | ||||
|     # @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3659", name="WIFI-3659") | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.sixg | ||||
|     @allure.title("Test for UDP Download 6 GHz") | ||||
|     def test_be_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa3_personal and sixg and udp_download" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa3_BRIDGE_udp_dl", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": max_stations}, is_wifi7=True, is_bw320=True) | ||||
|         assert True | ||||
|  | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @allure.title("Test for TCP Upload 6 GHz") | ||||
|     def test_be_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa3_personal and sixg and tcp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa3_BRIDGE_tcp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="10Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": max_stations}, is_wifi7=True, is_bw320=True) | ||||
|         assert True | ||||
|  | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @allure.title("Test for UDP Upload 6 GHz") | ||||
|     def test_be_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration, max_stations, get_lab_info, selected_testbed): | ||||
|         """ BE Client Scale Test BRIDGE mode | ||||
|             pytest -m "be_client_scale_tests and bridge and wpa3_personal and sixg and udp_upload" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         dut_mode = get_lab_info.CONFIGURATION[selected_testbed]["device_under_tests"][0]["mode"] | ||||
|         if dut_mode.lower() == "wifi6": | ||||
|             logging.info("AP does not support BE mode, so skipping this test.") | ||||
|             pytest.skip("AP does not support BE mode, so skipping this test") | ||||
|         get_test_library.wifi_capacity(instance_name="test_be_client_wpa3_BRIDGE_udp_ul", mode=mode, | ||||
|                                        download_rate="100Kbps", batch_size="1,5,10,20,40,64,128,256", | ||||
|                                        upload_rate="10Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": max_stations}, is_wifi7=True, is_bw320=True) | ||||
|         assert True | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "dataplane_tests wpa2_personal security and bridge" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
| import os | ||||
| import pytest | ||||
| import allure | ||||
| @@ -11,28 +12,146 @@ import allure | ||||
| pytestmark = [pytest.mark.dataplane_tests, | ||||
|               pytest.mark.bridge, pytest.mark.wpa2_personal, pytest.mark.performance] | ||||
|  | ||||
| setup_params_general = { | ||||
| setup_params_general1 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general2 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general3 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| testbed_details_global = None | ||||
| setup_params_general = None | ||||
| dut_data = {} | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def initialize_testbed(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6": | ||||
|         setup_params_general = setup_params_general1 | ||||
|     elif ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general2 | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general3 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     logging.info(f"get_marker result:{get_marker}") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Dataplane Tests") | ||||
| @allure.parent_suite("Dataplane Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestDataplaneThroughputBRIDGE(object): | ||||
|     """Dataplane THroughput BRIDGE Mode | ||||
|        pytest -m "dataplane_tests and wpa2_personal and bridge" | ||||
| @@ -45,7 +164,7 @@ class TestDataplaneThroughputBRIDGE(object): | ||||
|     def test_tcp_upd_wpa2_personal_bridge_2g_band(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, client_type, | ||||
|                                                   get_target_object, | ||||
|                                                   num_stations, setup_configuration): | ||||
|                                                   num_stations, initialize_testbed): | ||||
|         """Dataplane THroughput BRIDGE Mode. | ||||
|            pytest -m "dataplane_tests and bridge and wpa2_personal and twog" | ||||
|         """ | ||||
| @@ -55,14 +174,17 @@ class TestDataplaneThroughputBRIDGE(object): | ||||
|         security = "wpa2" | ||||
|         mode = "BRIDGE" | ||||
|         band = "twog" | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"ap_mode value:{ap_mode}") | ||||
|         influx_tags = "dataplane-tcp-udp-bridge-wpa2_personal-2.4G" | ||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security, | ||||
|                                                    num_sta=1, mode=mode, | ||||
|                                                    band=band, | ||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_2G_BRIDGE", | ||||
|                                                    influx_tags=influx_tags, move_to_influx=False, | ||||
|                                                    dut_data=setup_configuration, | ||||
|                                                    client_type=client_type | ||||
|                                                    dut_data=dut_data, | ||||
|                                                    client_type=client_type, duration="30s", path_loss=10, | ||||
|                                                    download_rate="85%", upload_rate="0", ap_mode =ap_mode | ||||
|                                                    ) | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3674", name="WIFI-3674") | ||||
| @@ -72,7 +194,7 @@ class TestDataplaneThroughputBRIDGE(object): | ||||
|     def test_tcp_upd_wpa2_personal_bridge_5g_band(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, client_type, | ||||
|                                                   get_target_object, | ||||
|                                                   num_stations, setup_configuration): | ||||
|                                                   num_stations, initialize_testbed): | ||||
|         """Dataplane THroughput BRIDGE Mode | ||||
|            pytest -m "dataplane_tests and bridge and wpa2_personal and fiveg" | ||||
|         """ | ||||
| @@ -82,12 +204,15 @@ class TestDataplaneThroughputBRIDGE(object): | ||||
|         security_key = profile_data["security_key"] | ||||
|         mode = "BRIDGE" | ||||
|         band = "fiveg" | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"ap_mode value:{ap_mode}") | ||||
|         influx_tags = "dataplane-tcp-udp-bridge-wpa2_personal-5G" | ||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security, | ||||
|                                                    num_sta=1, mode=mode, | ||||
|                                                    band=band, | ||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_5G_BRIDGE", | ||||
|                                                    influx_tags=influx_tags, move_to_influx=False, | ||||
|                                                    dut_data=setup_configuration, | ||||
|                                                    client_type=client_type | ||||
|                                                    dut_data=dut_data, | ||||
|                                                    client_type=client_type, duration="30s", path_loss=10, | ||||
|                                                    download_rate="85%", upload_rate="0", ap_mode =ap_mode | ||||
|                                                    ) | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "dataplane_tests wpa2_personal security and nat" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
| import os | ||||
| import pytest | ||||
| import allure | ||||
| @@ -11,28 +12,148 @@ import allure | ||||
| pytestmark = [pytest.mark.dataplane_tests, | ||||
|               pytest.mark.nat, pytest.mark.wpa2_personal, pytest.mark.performance] | ||||
|  | ||||
| setup_params_general = { | ||||
| setup_params_general1 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}]}, | ||||
|     "rf": {}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general2 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general3 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| testbed_details_global = None | ||||
| setup_params_general = None | ||||
| dut_data = {} | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def initialize_testbed(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6": | ||||
|         setup_params_general = setup_params_general1 | ||||
|     elif ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general2 | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general3 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Dataplane Tests") | ||||
| @allure.parent_suite("Dataplane Tests") | ||||
| @allure.suite(suite_name="WPA2 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestDataplaneThroughputNAT(object): | ||||
|     """Dataplane THroughput NAT Mode | ||||
|        pytest -m "dataplane_tests and wpa2_personal and nat" | ||||
| @@ -45,7 +166,7 @@ class TestDataplaneThroughputNAT(object): | ||||
|     def test_tcp_upd_wpa2_personal_nat_2g_band(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, client_type, | ||||
|                                                get_target_object, | ||||
|                                                num_stations, setup_configuration): | ||||
|                                                num_stations, initialize_testbed): | ||||
|         """Dataplane THroughput NAT Mode. | ||||
|            pytest -m "dataplane_tests and nat and wpa2_personal and twog" | ||||
|         """ | ||||
| @@ -55,14 +176,17 @@ class TestDataplaneThroughputNAT(object): | ||||
|         security_key = profile_data["security_key"] | ||||
|         mode = "NAT-WAN" | ||||
|         band = "twog" | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"ap_mode value:{ap_mode}") | ||||
|         influx_tags = "dataplane-tcp-udp-nat-wpa2_personal-2.4G" | ||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||
|                                                    num_sta=1, mode=mode, | ||||
|                                                    band=band, | ||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_2G_NAT", | ||||
|                                                    influx_tags=influx_tags, move_to_influx=False, | ||||
|                                                    dut_data=setup_configuration, | ||||
|                                                    client_type=client_type | ||||
|                                                    dut_data=dut_data, | ||||
|                                                    client_type=client_type,  duration="30s", path_loss=10, | ||||
|                                                    download_rate="85%", upload_rate="0", ap_mode =ap_mode | ||||
|                                                    ) | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3674", name="WIFI-3674") | ||||
| @@ -72,7 +196,7 @@ class TestDataplaneThroughputNAT(object): | ||||
|     def test_tcp_upd_wpa2_personal_nat_5g_band(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, client_type, | ||||
|                                                get_target_object, | ||||
|                                                num_stations, setup_configuration): | ||||
|                                                num_stations, initialize_testbed): | ||||
|         """Dataplane THroughput NAT Mode | ||||
|            pytest -m "dataplane_tests and nat and wpa2_personal and fiveg" | ||||
|         """ | ||||
| @@ -82,12 +206,15 @@ class TestDataplaneThroughputNAT(object): | ||||
|         security_key = profile_data["security_key"] | ||||
|         mode = "NAT-WAN" | ||||
|         band = "fiveg" | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"ap_mode value:{ap_mode}") | ||||
|         influx_tags = "dataplane-tcp-udp-nat-wpa2_personal-5G" | ||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||
|                                                    num_sta=1, mode=mode, | ||||
|                                                    band=band, | ||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_5G_NAT", | ||||
|                                                    influx_tags=influx_tags, move_to_influx=False, | ||||
|                                                    dut_data=setup_configuration, | ||||
|                                                    client_type=client_type | ||||
|                                                    dut_data=dut_data, | ||||
|                                                    client_type=client_type,  duration="30s", path_loss=10, | ||||
|                                                    download_rate="85%", upload_rate="0", ap_mode =ap_mode | ||||
|                                                    ) | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "dataplane_tests wpa3_personal security and bridge" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
| import os | ||||
| import pytest | ||||
| import allure | ||||
| @@ -11,7 +12,7 @@ import allure | ||||
| pytestmark = [pytest.mark.dataplane_tests, | ||||
|               pytest.mark.bridge, pytest.mark.wpa3_personal] | ||||
|  | ||||
| setup_params_general = { | ||||
| setup_params_general1 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
| @@ -19,22 +20,141 @@ setup_params_general = { | ||||
|             {"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general2 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general3 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| testbed_details_global = None | ||||
| setup_params_general = None | ||||
| dut_data = {} | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def initialize_testbed(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6": | ||||
|         setup_params_general = setup_params_general1 | ||||
|     elif ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general2 | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general3 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Dataplane Tests") | ||||
| @allure.parent_suite("Dataplane Tests") | ||||
| @allure.suite(suite_name="WPA3 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestDataplaneThroughputBRIDGE(object): | ||||
|     """Dataplane THroughput BRIDGE Mode | ||||
|        pytest -m "dataplane_tests and wpa3_personal and bridge" | ||||
| @@ -102,7 +222,7 @@ class TestDataplaneThroughputBRIDGE(object): | ||||
|     def test_tcp_udp_wpa3_personal_bridge_6g_band(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                   get_test_device_logs, client_type, | ||||
|                                                   get_target_object, | ||||
|                                                   num_stations, setup_configuration): | ||||
|                                                   num_stations, initialize_testbed): | ||||
|         """Dataplane THroughput BRIDGE Mode | ||||
|            pytest -m "dataplane_tests and bridge and wpa3_personal and sixg" | ||||
|         """ | ||||
| @@ -112,12 +232,15 @@ class TestDataplaneThroughputBRIDGE(object): | ||||
|         security_key = profile_data["security_key"] | ||||
|         mode = "BRIDGE" | ||||
|         band = "sixg" | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"ap_mode value:{ap_mode}") | ||||
|         influx_tags = "dataplane-tcp-udp-bridge-wpa3_personal-6G" | ||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||
|                                                    num_sta=num_stations, mode=mode, | ||||
|                                                    band=band, | ||||
|                                                    instance_name="TIP_DPT_DPT_WPA_6G_BRIDGE", | ||||
|                                                    influx_tags=influx_tags, move_to_influx=False, | ||||
|                                                    dut_data=setup_configuration, | ||||
|                                                    client_type=client_type | ||||
|                                                    dut_data=dut_data, | ||||
|                                                    client_type=client_type, duration="30s", path_loss=10, | ||||
|                                                    download_rate="85%", upload_rate="0", ap_mode =ap_mode | ||||
|                                                    ) | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|     pytest -m "dataplane_tests wpa3_personal security and nat" | ||||
|  | ||||
| """ | ||||
| import logging | ||||
| import os | ||||
| import pytest | ||||
| import allure | ||||
| @@ -11,7 +12,7 @@ import allure | ||||
| pytestmark = [pytest.mark.dataplane_tests, | ||||
|               pytest.mark.nat, pytest.mark.wpa3_personal] | ||||
|  | ||||
| setup_params_general = { | ||||
| setup_params_general1 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
| @@ -19,22 +20,142 @@ setup_params_general = { | ||||
|             {"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general2 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general3 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| testbed_details_global = None | ||||
| setup_params_general = None | ||||
| dut_data = {} | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def initialize_testbed(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6": | ||||
|         setup_params_general = setup_params_general1 | ||||
|     elif ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general2 | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general3 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("Dataplane Tests") | ||||
| @allure.parent_suite("Dataplane Tests") | ||||
| @allure.suite(suite_name="WPA3 Personal Security") | ||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestDataplaneThroughputNAT(object): | ||||
|     """Dataplane THroughput NAT Mode | ||||
|        pytest -m "dataplane_tests and wpa3_personal and nat" | ||||
| @@ -102,7 +223,7 @@ class TestDataplaneThroughputNAT(object): | ||||
|     def test_tcp_udp_wpa3_personal_nat_6g_band(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                get_test_device_logs, client_type, | ||||
|                                                get_target_object, | ||||
|                                                num_stations, setup_configuration): | ||||
|                                                num_stations, initialize_testbed): | ||||
|         """Dataplane THroughput NAT Mode | ||||
|            pytest -m "dataplane_tests and nat and wpa3_personal and sixg" | ||||
|         """ | ||||
| @@ -112,12 +233,15 @@ class TestDataplaneThroughputNAT(object): | ||||
|         security_key = profile_data["security_key"] | ||||
|         mode = "NAT-WAN" | ||||
|         band = "sixg" | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"ap_mode value:{ap_mode}") | ||||
|         influx_tags = "dataplane-tcp-udp-nat-wpa3_personal-6G" | ||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||
|                                                    num_sta=1, mode=mode, | ||||
|                                                    band=band, | ||||
|                                                    instance_name="TIP_DPT_DPT_WPA3_PERSONAL_6G_NAT", | ||||
|                                                    influx_tags=influx_tags, move_to_influx=False, | ||||
|                                                    dut_data=setup_configuration, | ||||
|                                                    client_type=client_type | ||||
|                                                    dut_data=dut_data, | ||||
|                                                    client_type=client_type,  duration="30s", path_loss=10, | ||||
|                                                    download_rate="85%", upload_rate="0", ap_mode =ap_mode | ||||
|                                                    ) | ||||
|   | ||||
| @@ -1,65 +1,193 @@ | ||||
| """ | ||||
|        Dual Band Performance Test : BRIDGE Mode | ||||
|        pytest -m "performance and dual_band_tests and bridge" | ||||
|        Multi Band Performance Test : BRIDGE Mode | ||||
|        pytest -m "performance and multi_band_tests and bridge" | ||||
|  | ||||
|  | ||||
| """ | ||||
|  | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.dual_band_tests, pytest.mark.bridge, | ||||
|               pytest.mark.single_station_dual_band_throughput] | ||||
| pytestmark = [pytest.mark.performance, pytest.mark.multi_band_tests, pytest.mark.bridge] | ||||
|  | ||||
| setup_params_general = { | ||||
| setup_params_general1 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|             {"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general2 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general3 = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| testbed_details_global = None | ||||
| setup_params_general = None | ||||
| dut_data = {} | ||||
|  | ||||
| @pytest.mark.dual_band_tests | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6": | ||||
|         setup_params_general = setup_params_general1 | ||||
|     elif ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general2 | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general3 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @pytest.mark.multi_band_tests | ||||
| @pytest.mark.wifi5 | ||||
| @pytest.mark.wifi6 | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @allure.parent_suite("Dual Band Tests") | ||||
| @allure.suite("Dual Band Tests: Bridge mode") | ||||
| @pytest.mark.wifi7 | ||||
| @allure.parent_suite("Multi Band Tests") | ||||
| @allure.suite("Multi Band Tests: Bridge mode") | ||||
| @allure.sub_suite("wpa3_personal security") | ||||
| @allure.feature("Dual band performance test") | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestWpa3DualbandPerformanceBridge(object): | ||||
| @allure.feature("Multi band performance test") | ||||
| class TestWpa3MultibandPerformanceBridge(object): | ||||
|     """ | ||||
|          pytest -m "performance and dual_band_tests and bridge and wpa3_personal and twog  and fiveg" | ||||
|          pytest -m "performance and multi_band_tests and bridge and wpa3_personal and twog  and fiveg" | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728") | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.fiveg | ||||
|     @allure.title("Test Dual Band with ApAuto test of bridge mode") | ||||
|     def test_client_wpa3_personal_bridge(self, get_test_library, setup_configuration, check_connectivity): | ||||
|     @pytest.mark.sixg | ||||
|     @allure.title("Test Multi Band with ApAuto test of bridge mode") | ||||
|     def test_client_wpa3_personal_bridge(self, setup_initial_configuration, get_test_library, check_connectivity, | ||||
|                                          get_dut_logs_per_test_case, get_test_device_logs): | ||||
|         """ | ||||
|                             Dual Band Test with wpa3_personal encryption | ||||
|                             pytest -m "dual_band_tests and wpa3_personal" | ||||
|                             Multi Band Test with wpa3_personal encryption | ||||
|                             pytest -m "multi_band_tests and wpa3_personal" | ||||
|                 """ | ||||
|  | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"setup_params_general data:{setup_params_general}") | ||||
|         profile_data = setup_params_general["ssid_modes"]["wpa3_personal"] | ||||
|         logging.info(f"profile_data data:{profile_data}") | ||||
|         ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] | ||||
|         dut_name = list(setup_configuration.keys())[0] | ||||
|         dut_name = list(dut_data.keys())[0] | ||||
|         mode = "BRIDGE" | ||||
|         vlan = 1 | ||||
|         dut_5g, dut_2g = "", "" | ||||
|  | ||||
|         if ap_mode == "wifi7" or ap_mode == "wifi6e": | ||||
|             dut_6g = "" | ||||
|             ssid_6G = profile_data[0]["ssid_name"] | ||||
|  | ||||
|         influx_tags = "dual-band-bridge-wpa3" | ||||
|         for i in setup_configuration[dut_name]['ssid_data']: | ||||
|             get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) | ||||
|         for i in dut_data[dut_name]['ssid_data']: | ||||
|             logging.info(f"get_test_library.dut_idx_mapping: {get_test_library.dut_idx_mapping}") | ||||
|             logging.info(f"get_test_library.dut_idx_mapping: {get_test_library.dut_idx_mapping}") | ||||
|             get_test_library.dut_idx_mapping[str(i)] = list(dut_data[dut_name]['ssid_data'][i].values()) | ||||
|             if get_test_library.dut_idx_mapping[str(i)][3] == "5G": | ||||
|                 dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||
|                          get_test_library.dut_idx_mapping[str(i)][4] | ||||
| @@ -67,8 +195,25 @@ class TestWpa3DualbandPerformanceBridge(object): | ||||
|                 dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||
|                          get_test_library.dut_idx_mapping[str(i)][4] | ||||
|  | ||||
|         get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, | ||||
|             if get_test_library.dut_idx_mapping[str(i)][3] == "6G" and (ap_mode == "wifi7" or ap_mode == "wifi6e"): | ||||
|                 dut_6g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||
|                          get_test_library.dut_idx_mapping[str(i)][4] | ||||
|                 logging.info(f"dut_6g value:{dut_6g}") | ||||
|  | ||||
|         logging.info(f"ap_mode value:{ap_mode}") | ||||
|         logging.info(f"setup_configuration value:{dut_data}") | ||||
|  | ||||
|         if ap_mode == "wifi7" or ap_mode == "wifi6e": | ||||
|             logging.info("ap mode is not wifi6 , ready to call triband") | ||||
|             get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, | ||||
|                                                         ssid_6G=ssid_6G, vlan_id=vlan, | ||||
|                                                         dut_5g=dut_5g, dut_2g=dut_2g, dut_6g=dut_6g, | ||||
|                                                         influx_tags=influx_tags, | ||||
|                                                         move_to_influx=False, dut_data=dut_data) | ||||
|         else: | ||||
|             logging.info("ap mode is wifi6 , ready to call dualband") | ||||
|             get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, | ||||
|                                                         dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, | ||||
|                                                     move_to_influx=False, dut_data=setup_configuration) | ||||
|                                                         move_to_influx=False, dut_data=dut_data) | ||||
|  | ||||
|         assert True | ||||
|   | ||||
| @@ -1,64 +1,192 @@ | ||||
| """ | ||||
|        Dual Band Performance Test : NAT Mode | ||||
|        pytest -m "performance and dual_band_tests and nat" | ||||
|        Multi Band Performance Test : NAT Mode | ||||
|        pytest -m "performance and multi_band_tests and nat" | ||||
|  | ||||
|  | ||||
| """ | ||||
|  | ||||
| import logging | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.nat, pytest.mark.dual_band_tests] | ||||
| pytestmark = [pytest.mark.performance, pytest.mark.nat, pytest.mark.muti_band_tests] | ||||
|  | ||||
| setup_params_general = { | ||||
| setup_params_general1 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|             {"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general2 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| }, | ||||
| setup_params_general3 = { | ||||
|     "mode": "NAT", | ||||
|     "ssid_modes": { | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"} | ||||
|         ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 40, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|  | ||||
| @pytest.mark.dual_band_tests | ||||
| testbed_details_global = None | ||||
| setup_params_general = None | ||||
| dut_data = {} | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global testbed_details_global | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     selected_tb = request.getfixturevalue("selected_testbed") | ||||
|     print(f"Selected Testbed: {selected_tb}") | ||||
|     testbed_details_global = request.getfixturevalue("get_testbed_details") | ||||
|     assert testbed_details_global is not None, "Testbed details should not be None" | ||||
|     print(f"Initialized Testbed Details: {testbed_details_global}") | ||||
|  | ||||
|     # Extract 'mode' from the first device in 'device_under_tests' | ||||
|     ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|  | ||||
|     # Assign setup_params_general based on mode | ||||
|     if ap_mode == "wifi6": | ||||
|         setup_params_general = setup_params_general1 | ||||
|     elif ap_mode == "wifi6e": | ||||
|         setup_params_general = setup_params_general2 | ||||
|     elif ap_mode == "wifi7": | ||||
|         setup_params_general = setup_params_general3 | ||||
|     else: | ||||
|         print(f"Unknown mode: {ap_mode}. Defaulting to None") | ||||
|  | ||||
|     print(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     get_marker = request.getfixturevalue("get_markers") | ||||
|     requested_combination = [] | ||||
|     for key in get_marker: | ||||
|         if get_marker[key]: | ||||
|             requested_combination.append(get_marker[key]) | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     if isinstance(setup_params_general, tuple): | ||||
|         setup_params_general = setup_params_general[0] | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
|  | ||||
| @pytest.mark.multi_band_tests | ||||
| @pytest.mark.wifi5 | ||||
| @pytest.mark.wifi6 | ||||
| @pytest.mark.parametrize( | ||||
|     'setup_configuration', | ||||
|     [setup_params_general], | ||||
|     indirect=True, | ||||
|     scope="class" | ||||
| ) | ||||
| @allure.parent_suite("Dual Band Tests") | ||||
| @allure.suite("Dual Band Tests: NAT mode") | ||||
| @pytest.mark.wifi7 | ||||
| @allure.parent_suite("Multi Band Tests") | ||||
| @allure.suite("Multi Band Tests: NAT mode") | ||||
| @allure.sub_suite("wpa3_personal security") | ||||
| @allure.feature("Dual band performance test") | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestWpa3DualbandPerformanceNat(object): | ||||
| @allure.feature("Multi band performance test") | ||||
| class TestWpa3MultibandPerformanceNat(object): | ||||
|     """ | ||||
|          pytest -m "performance and dual_band_tests and nat and wpa3_personal and twog  and fiveg." | ||||
|          pytest -m "performance and multi_band_tests and nat and wpa3_personal and twog  and fiveg." | ||||
|     """ | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728") | ||||
|     @pytest.mark.wpa3_personal | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.fiveg | ||||
|     @allure.title("Test Dual Band with ApAuto test of NAT mode") | ||||
|     def test_client_wpa3_personal_nat(self, get_test_library, setup_configuration, check_connectivity): | ||||
|     @pytest.mark.sixg | ||||
|     @allure.title("Test Multi Band with ApAuto test of NAT mode") | ||||
|     def test_client_wpa3_personal_nat(self, setup_initial_configuration, get_test_library, check_connectivity, | ||||
|                                       get_dut_logs_per_test_case, get_test_device_logs, get_target_object): | ||||
|         """ | ||||
|                             Dual Band Test with wpa3_personal encryption | ||||
|                             pytest -m "dual_band_tests and wpa3_personal" | ||||
|                             Multi Band Test with wpa3_personal encryption | ||||
|                             pytest -m "multi_band_tests and wpa3_personal" | ||||
|         """ | ||||
|         ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "") | ||||
|         logging.info(f"setup_params_general data:{setup_params_general}") | ||||
|         profile_data = setup_params_general["ssid_modes"]["wpa3_personal"] | ||||
|         logging.info(f"profile_data data:{profile_data}") | ||||
|  | ||||
|         ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"] | ||||
|         dut_name = list(setup_configuration.keys())[0] | ||||
|         dut_name = list(dut_data.keys())[0] | ||||
|         mode = "NAT-WAN" | ||||
|         vlan = 1 | ||||
|         dut_5g, dut_2g = "", "" | ||||
|         if ap_mode == "wifi7" or ap_mode == "wifi6e": | ||||
|             dut_6g = "" | ||||
|             ssid_6G = profile_data[0]["ssid_name"] | ||||
|  | ||||
|         influx_tags = "dual-band-nat-wpa3" | ||||
|         for i in setup_configuration[dut_name]['ssid_data']: | ||||
|             get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) | ||||
|         for i in dut_data[dut_name]['ssid_data']: | ||||
|             get_test_library.dut_idx_mapping[str(i)] = list(dut_data[dut_name]['ssid_data'][i].values()) | ||||
|             if get_test_library.dut_idx_mapping[str(i)][3] == "5G": | ||||
|                 dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||
|                          get_test_library.dut_idx_mapping[str(i)][4] | ||||
| @@ -66,8 +194,22 @@ class TestWpa3DualbandPerformanceNat(object): | ||||
|                 dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||
|                          get_test_library.dut_idx_mapping[str(i)][4] | ||||
|  | ||||
|         get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, | ||||
|             if get_test_library.dut_idx_mapping[str(i)][3] == "6G" and (ap_mode == "wifi7" or ap_mode == "wifi6e"): | ||||
|                 dut_6g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||
|                          get_test_library.dut_idx_mapping[str(i)][4] | ||||
|                 logging.info(f"dut_6g value:{dut_6g}") | ||||
|  | ||||
|         if ap_mode == "wifi7" or ap_mode == "wifi6e": | ||||
|             logging.info("ap mode is not wifi6 , ready to call triband") | ||||
|             get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, | ||||
|                                                         ssid_6G=ssid_6G, vlan_id=vlan, | ||||
|                                                         dut_5g=dut_5g, dut_2g=dut_2g, dut_6g=dut_6g, | ||||
|                                                         influx_tags=influx_tags, | ||||
|                                                         move_to_influx=False, dut_data=dut_data) | ||||
|         else: | ||||
|             logging.info("ap mode is wifi6 , ready to call dualband") | ||||
|             get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan, | ||||
|                                                         dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, | ||||
|                                                     move_to_influx=False, dut_data=setup_configuration) | ||||
|                                                         move_to_influx=False, dut_data=dut_data) | ||||
|  | ||||
|         assert True | ||||
|   | ||||
| @@ -9,7 +9,7 @@ import allure | ||||
| import pytest | ||||
| import time | ||||
|  | ||||
| pytestmark = [pytest.mark.performance, pytest.mark.dual_band_tests, pytest.mark.bridge, | ||||
| pytestmark = [pytest.mark.dual_band_tests, pytest.mark.bridge, | ||||
|               pytest.mark.single_station_dual_band_throughput] | ||||
|  | ||||
| setup_params_general = { | ||||
|   | ||||
| @@ -9,7 +9,7 @@ import os | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.performance, pytest.mark.dual_band_tests, pytest.mark.nat, | ||||
| pytestmark = [pytest.mark.dual_band_tests, pytest.mark.nat, | ||||
|               pytest.mark.single_station_dual_band_throughput] | ||||
| setup_params_general = { | ||||
|     "mode": "NAT", | ||||
|   | ||||
| @@ -20,9 +20,24 @@ setup_params_general = { | ||||
|  | ||||
|                           ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             'band': '6G', | ||||
|             'channel-width': 160} | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| @@ -61,17 +76,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_download", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12395", name="WIFI-12395") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.sixg | ||||
|     @allure.feature("Performance Test") | ||||
|     @allure.parent_suite("AX Capacity Test") | ||||
|     @allure.suite("6 GHz Band") | ||||
|     @allure.sub_suite("BRIDGE Mode") | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.wifi_capacity_ax_tests | ||||
|     @allure.title("Single client UDP Download wifi capacity 160Mhz Bw") | ||||
|     def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration): | ||||
| @@ -81,11 +102,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_dl", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12397", name="WIFI-12397") | ||||
| @@ -129,7 +151,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12393", name="WIFI-12393") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @allure.feature("Performance Test") | ||||
|     @allure.parent_suite("AX Capacity Test") | ||||
|     @allure.suite("6 GHz Band") | ||||
|     @allure.sub_suite("BRIDGE Mode") | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.wifi_capacity_ax_tests | ||||
|     @allure.title("Single client TCP Upload wifi capacity 160Mhz Bw") | ||||
|     def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration): | ||||
| @@ -139,17 +166,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12392", name="WIFI-12392") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @allure.feature("Performance Test") | ||||
|     @allure.parent_suite("AX Capacity Test") | ||||
|     @allure.suite("6 GHz Band") | ||||
|     @allure.sub_suite("BRIDGE Mode") | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.wifi_capacity_ax_tests | ||||
|     @allure.title("Single client UDP Upload wifi capacity 160Mhz Bw") | ||||
|     def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                        get_test_device_logs, num_stations, setup_configuration): | ||||
| @@ -159,9 +192,10 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|   | ||||
| @@ -19,9 +19,24 @@ setup_params_general = { | ||||
|             {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|             ]}, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 6 | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             'band': '6G', | ||||
|             'channel-width': 160} | ||||
|             "band": "6G", | ||||
|             "channel-width": 160, | ||||
|             "channel-mode": "HE", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
| @@ -45,7 +60,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12400", name="WIFI-12400") | ||||
|     @pytest.mark.tcp_download | ||||
|     @pytest.mark.sixg | ||||
|     @allure.feature("Performance Test") | ||||
|     @allure.parent_suite("AX Capacity Test") | ||||
|     @allure.suite("6 GHz Band") | ||||
|     @allure.sub_suite("NAT Mode") | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.wifi_capacity_ax_tests | ||||
|     @allure.title("Single client TCP Download wifi capacity 160Mhz Bw") | ||||
|     def test_client_wpa3_nat_tcp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration): | ||||
| @@ -55,17 +75,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_download", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12401", name="WIFI-12401") | ||||
|     @pytest.mark.udp_download | ||||
|     @pytest.mark.sixg | ||||
|     @allure.feature("Performance Test") | ||||
|     @allure.parent_suite("AX Capacity Test") | ||||
|     @allure.suite("6 GHz Band") | ||||
|     @allure.sub_suite("NAT Mode") | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.wifi_capacity_ax_tests | ||||
|     @allure.title("Single client UDP Download wifi capacity 160Mhz Bw") | ||||
|     def test_client_wpa3_nat_udp_dl(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration): | ||||
| @@ -75,11 +101,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_dl", mode=mode, | ||||
|                                        download_rate="10Gbps", batch_size="1", | ||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12403", name="WIFI-12403") | ||||
| @@ -123,7 +150,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12399", name="WIFI-12399") | ||||
|     @pytest.mark.tcp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @allure.feature("Performance Test") | ||||
|     @allure.parent_suite("AX Capacity Test") | ||||
|     @allure.suite("6 GHz Band") | ||||
|     @allure.sub_suite("NAT Mode") | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.wifi_capacity_ax_tests | ||||
|     @allure.title("Single client TCP Upload wifi capacity 160Mhz Bw") | ||||
|     def test_client_wpa3_nat_tcp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration): | ||||
| @@ -133,17 +165,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="TCP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|  | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12398", name="WIFI-12398") | ||||
|     @pytest.mark.udp_upload | ||||
|     @pytest.mark.sixg | ||||
|     @allure.feature("Performance Test") | ||||
|     @allure.parent_suite("AX Capacity Test") | ||||
|     @allure.suite("6 GHz Band") | ||||
|     @allure.sub_suite("NAT Mode") | ||||
|     @pytest.mark.performance | ||||
|     @pytest.mark.wifi_capacity_ax_tests | ||||
|     @allure.title("Single client UDP Upload wifi capacity 160Mhz Bw") | ||||
|     def test_client_wpa3_nat_udp_ul(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, num_stations, setup_configuration): | ||||
| @@ -153,9 +191,10 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | ||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "NAT-WAN" | ||||
|         sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]] | ||||
|         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_ul", mode=mode, | ||||
|                                        download_rate="56Kbps", batch_size="1", | ||||
|                                        upload_rate="10Gbps", protocol="UDP", duration="60000", | ||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True) | ||||
|                                        num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets) | ||||
|         assert True | ||||
|   | ||||
| @@ -377,9 +377,9 @@ | ||||
|         "TCP": 3000, | ||||
|         "UDP": 3000 | ||||
|       }, | ||||
|       "6G 4x4 160MHz": { | ||||
|         "TCP": null, | ||||
|         "UDP": null | ||||
|       "6G 2x2 160MHz": { | ||||
|         "TCP": 2000, | ||||
|         "UDP": 2000 | ||||
|       } | ||||
|      } | ||||
|     }, | ||||
| @@ -478,9 +478,9 @@ | ||||
|         "TCP": 3000, | ||||
|         "UDP": 3000 | ||||
|       }, | ||||
|       "6G 4x4 160MHz": { | ||||
|         "TCP": null, | ||||
|         "UDP": null | ||||
|       "6G 2x2 160MHz": { | ||||
|         "TCP": 2000, | ||||
|         "UDP": 2000 | ||||
|       } | ||||
|      } | ||||
|     }, | ||||
| @@ -548,9 +548,9 @@ | ||||
|         "TCP": 3000, | ||||
|         "UDP": 3000 | ||||
|       }, | ||||
|       "6G 4x4 160MHz": { | ||||
|         "TCP": null, | ||||
|         "UDP": null | ||||
|       "6G 2x2 160MHz": { | ||||
|         "TCP": 2000, | ||||
|         "UDP": 2000 | ||||
|       } | ||||
|      } | ||||
|     }, | ||||
| @@ -643,6 +643,72 @@ | ||||
|         "UDP": null | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|     "edgecore_oap103":{ | ||||
|       "AX":{ | ||||
|       "2G 2x2 20MHz": { | ||||
|         "TCP": 200, | ||||
|         "UDP": 220 | ||||
|       }, | ||||
|       "5G 2x2 80MHz": { | ||||
|         "TCP": 800, | ||||
|         "UDP": 900 | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|     "edgecore_eap112":{ | ||||
|       "AX":{ | ||||
|       "2G 2x2 20MHz": { | ||||
|         "TCP": 200, | ||||
|         "UDP": 220 | ||||
|       }, | ||||
|       "5G 2x2 80MHz": { | ||||
|         "TCP": 800, | ||||
|         "UDP": 900 | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|     "cig_wf189h":{ | ||||
|       "AX":{ | ||||
|       "2G 2x2 20MHz": { | ||||
|         "TCP": 200, | ||||
|         "UDP": 220 | ||||
|       }, | ||||
|       "2G 2x2 40MHz": { | ||||
|       "TCP": 400, | ||||
|       "UDP": 400 | ||||
|      }, | ||||
|       "5G 2x2 80MHz": { | ||||
|         "TCP": 800, | ||||
|         "UDP": 900 | ||||
|       }, | ||||
|       "6G 2x2 160MHz": { | ||||
|         "TCP": 1600, | ||||
|         "UDP": 1800 | ||||
|       } | ||||
|     }, | ||||
|     "BE":{ | ||||
|       "2G 2x2 20MHz": { | ||||
|         "TCP": 240, | ||||
|         "UDP": 240 | ||||
|       }, | ||||
|       "2G 2x2 40MHz": { | ||||
|       "TCP": 480, | ||||
|       "UDP": 480 | ||||
|      }, | ||||
|       "5G 2x2 80MHz": { | ||||
|         "TCP": 1000, | ||||
|         "UDP": 1000 | ||||
|       }, | ||||
|       "6G 2x2 160MHz": { | ||||
|         "TCP": 2000, | ||||
|         "UDP": 2000 | ||||
|       }, | ||||
|       "6G 2x2 320MHz": { | ||||
|         "TCP": 3000, | ||||
|         "UDP": 3000 | ||||
|       } | ||||
|     } | ||||
|     } | ||||
| } | ||||
| } | ||||
| @@ -15,8 +15,7 @@ setup_params_enterprise = { | ||||
|             {"ssid_name": "tls_ssid_wpa2_eap_5g", "appliedRadios": ["5G"], "security_key": "something"}], | ||||
|         "wpa3_enterprise": [ | ||||
|             {"ssid_name": "tls_ssid_wpa3_eap_2g", "appliedRadios": ["2G"], "security_key": "something"}, | ||||
|             {"ssid_name": "tls_ssid_wpa3_eap_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||
|             {"ssid_name": "tls_ssid_wpa3_eap_6g", "appliedRadios": ["6G"], "security_key": "something"}]}, | ||||
|             {"ssid_name": "tls_ssid_wpa3_eap_5g", "appliedRadios": ["5G"], "security_key": "something"}]}, | ||||
|  | ||||
|     "rf": {}, | ||||
|     "radius": True | ||||
| @@ -155,7 +154,7 @@ class TestBridgeModeEnterpriseTLSSuiteA(object): | ||||
|                                     get_target_object, | ||||
|                                     num_stations, setup_configuration, check_connectivity, radius_info): | ||||
|         """ | ||||
|         To verify that a client created on 5G radio connects to AP in Bridge mode with WAP2 enterprise TLS security | ||||
|         To verify that a client created on 5G radio connects to AP in Bridge mode with WPA2 enterprise TLS security | ||||
|         Unique Marker: pytest -m "client_connectivity_tests and enterprise and wpa2_enterprise and ow_sanity_lf and tls and bridge and fiveg" | ||||
|                 """ | ||||
|  | ||||
| @@ -283,14 +282,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object): | ||||
|  | ||||
|     @pytest.mark.wpa_wpa2_enterprise_mixed | ||||
|     @pytest.mark.twog | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WAP-WPA2-Enterprise-TLS in 2.4GHz Band") | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WPA-WPA2-Enterprise-TLS in 2.4GHz Band") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10589", name="WIFI-10589") | ||||
|     def test_wpa_wpa2_enterprise_2g(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, | ||||
|                                     get_target_object, | ||||
|                                     num_stations, setup_configuration, check_connectivity, radius_info): | ||||
|         """ | ||||
|         To verify that a client created on 2G radio connects to AP in Bridge mode with WAP-WPA2-Enterprise  TLS security | ||||
|         To verify that a client created on 2G radio connects to AP in Bridge mode with WPA-WPA2-Enterprise  TLS security | ||||
|           Unique Marker:  pytest -m "client_connectivity_tests and wpa_wpa2_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and twog" | ||||
|         """ | ||||
|         profile_data = {"ssid_name": "tls_ssid_wpa_wpa2_eap_2g", "appliedRadios": ["2G"]} | ||||
| @@ -314,14 +313,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object): | ||||
|  | ||||
|     @pytest.mark.wpa_wpa2_enterprise_mixed | ||||
|     @pytest.mark.fiveg | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WAP-WPA2-Enterprise-TLS in 5GHz Band") | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WPA-WPA2-Enterprise-TLS in 5GHz Band") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10590", name="WIFI-10590") | ||||
|     def test_wpa_wpa2_enterprise_5g(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                     get_test_device_logs, | ||||
|                                     get_target_object, | ||||
|                                     num_stations, setup_configuration, check_connectivity, radius_info): | ||||
|         """ | ||||
|                To verify that a client created on 5G radio connects to AP in Bridge mode with WAP-WPA2-Enterprise  TLS security | ||||
|                To verify that a client created on 5G radio connects to AP in Bridge mode with WPA-WPA2-Enterprise  TLS security | ||||
|                  Unique Marker:  pytest -m "client_connectivity_tests and wpa_wpa2_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and fiveg" | ||||
|                """ | ||||
|         profile_data = {"ssid_name": "tls_ssid_wpa_wpa2_eap_5g", "appliedRadios": ["5G"]} | ||||
| @@ -345,14 +344,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object): | ||||
|  | ||||
|     @pytest.mark.wpa3_enterprise_mixed | ||||
|     @pytest.mark.twog | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WAP3-Enterprise-Mixed-TLS in 2.4GHz Band") | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WPA3-Enterprise-Mixed-TLS in 2.4GHz Band") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10591", name="WIFI-10591") | ||||
|     def test_wpa3_enterprise_mixed_2g(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, | ||||
|                                       get_target_object, | ||||
|                                       num_stations, setup_configuration, check_connectivity, radius_info): | ||||
|         """ | ||||
|                        To verify that a client created on 2G radio connects to AP in Bridge mode with WAP3-Enterprise-Mixed  TLS security | ||||
|                        To verify that a client created on 2G radio connects to AP in Bridge mode with WPA3-Enterprise-Mixed  TLS security | ||||
|                          Unique Marker: pytest -m "client_connectivity_tests and wpa3_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and twog" | ||||
|                        """ | ||||
|         profile_data = {"ssid_name": "tls_ssid_wpa3_mixed_eap_2g", "appliedRadios": ["2G"]} | ||||
| @@ -374,14 +373,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object): | ||||
|  | ||||
|     @pytest.mark.wpa3_enterprise_mixed | ||||
|     @pytest.mark.fiveg | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WAP3-Enterprise-Mixed-TLS in 5GHz Band") | ||||
|     @allure.title("Bridge Mode Client Connectivity Test with WPA3-Enterprise-Mixed-TLS in 5GHz Band") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10592", name="WIFI-10592") | ||||
|     def test_wpa3_enterprise_mixed_5g(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                       get_test_device_logs, | ||||
|                                       get_target_object, | ||||
|                                       num_stations, setup_configuration, check_connectivity, radius_info): | ||||
|         """ | ||||
|          To verify that a client created on 5G radio connects to AP in Bridge mode with WAP3-Enterprise-Mixed  TLS security | ||||
|          To verify that a client created on 5G radio connects to AP in Bridge mode with WPA3-Enterprise-Mixed  TLS security | ||||
|          Unique Marker: pytest -m "client_connectivity_tests and wpa3_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and fiveg" | ||||
|                               """ | ||||
|         profile_data = {"ssid_name": "tls_ssid_wpa3_mixed_eap_5g", "appliedRadios": ["5G"]} | ||||
|   | ||||
| @@ -4,15 +4,19 @@ | ||||
|      pytest -m "multipsk and wpa2_personal and twog" -s -vvv --skip-testrail --testbed=basic-03 --alluredir=../allure_reports | ||||
|         wifi-3493 | ||||
| """ | ||||
| import json | ||||
| import logging | ||||
| from datetime import time | ||||
|  | ||||
| import allure | ||||
| import pytest | ||||
| import requests | ||||
|  | ||||
| pytestmark = [pytest.mark.multi_psk_tests, | ||||
|               pytest.mark.ow_regression_lf, | ||||
|               pytest.mark.bridge, | ||||
|               pytest.mark.wpa2_personal, | ||||
|               pytest.mark.ow_sanity_lf, | ||||
|               pytest.mark.twog] | ||||
|               pytest.mark.twog, | ||||
|               pytest.mark.ow_sanity_lf] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
| @@ -48,11 +52,11 @@ setup_params_general = { | ||||
| @allure.parent_suite("MultiPsk Test") | ||||
| @allure.suite("BRIDGE Mode") | ||||
| @allure.sub_suite("WPA2 Security") | ||||
| @pytest.mark.ow_regression_lf | ||||
| @pytest.mark.usefixtures("setup_configuration") | ||||
| class TestMultipskBridgeWPA2(object): | ||||
|  | ||||
|     @pytest.mark.vlan1 | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @pytest.mark.wpa2 | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3493", name="WIFI-3493") | ||||
|     @allure.title("Test for Client Connect with 1 VLAN") | ||||
| @@ -91,7 +95,6 @@ class TestMultipskBridgeWPA2(object): | ||||
|         assert True | ||||
|  | ||||
|     @pytest.mark.vlan2 | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10657", name="WIFI-10657") | ||||
|     @allure.title("Test for Client Connect with 2 VLAN's") | ||||
|     def test_client_wpa2_2g_vlan2(self, get_test_library, get_dut_logs_per_test_case, | ||||
| @@ -127,3 +130,124 @@ class TestMultipskBridgeWPA2(object): | ||||
|                                         passkey=security_key, | ||||
|                                         encryption=security, mode=mode, num_sta=1, dut_data=setup_configuration) | ||||
|         assert True | ||||
|  | ||||
|  | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "BRIDGE", | ||||
|     "ssid_modes": { | ||||
|         "wpa2_personal": [ | ||||
|             {"ssid_name": "OpenWifi-roam", | ||||
|              "appliedRadios": ["2G", "5G"], | ||||
|              "security": "psk2", | ||||
|              "security_key": "OpenWifi", | ||||
|              "multi-psk": [ | ||||
|                  {"key": "aaaaaaaa"}, | ||||
|                  {"key": "bbbbbbbb"} | ||||
|              ], | ||||
|             "roaming": True, | ||||
|             "rrm": { | ||||
|             "reduced-neighbor-reporting": True | ||||
|                     } | ||||
|              } | ||||
|         ], | ||||
|         "wpa3_personal": [ | ||||
|             {"ssid_name": "OpenWifi-roam", | ||||
|              "appliedRadios": ["6G"], | ||||
|              "security": "sae", | ||||
|              "security_key": "OpenWifi", | ||||
|             "roaming": True, | ||||
|             "rrm": { | ||||
|             "reduced-neighbor-reporting": True | ||||
|                     } | ||||
|              } | ||||
|         ] | ||||
|     }, | ||||
|     "rf": { | ||||
|         "2G": { | ||||
|             "band": "2G", | ||||
|             "channel-width": 20, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": "auto" | ||||
|         }, | ||||
|         "5G": { | ||||
|             "band": "5G", | ||||
|             "channel-width": 80, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 36 | ||||
|         }, | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-width": 320, | ||||
|             "channel-mode": "EHT", | ||||
|             "channel": 33 | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
| testbed_details_global = None | ||||
| dut_data = {} | ||||
|  | ||||
| @pytest.fixture(scope="class") | ||||
| def setup_initial_configuration(request): | ||||
|     """Calls setup_testbed automatically before tests""" | ||||
|     global setup_params_general | ||||
|     global dut_data | ||||
|     logging.info(f"Setup Params Assigned: {setup_params_general}") | ||||
|  | ||||
|     requested_combination = [['2G', 'wpa2_personal'], ['5G', 'wpa2_personal'], ['6G', 'wpa3_personal']] | ||||
|  | ||||
|     logging.info(f"requested_combination:::{requested_combination}") | ||||
|     get_target_obj = request.getfixturevalue("get_target_object") | ||||
|     logging.info("ready to start setup_basic_configuration") | ||||
|     logging.info(f"setup_params_general value before start:{setup_params_general}") | ||||
|     dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general, | ||||
|                                                        requested_combination=requested_combination) | ||||
|  | ||||
|     logging.info(f"setup_basic_configuration dut data:{dut_data}") | ||||
|  | ||||
| @allure.feature("MultiPsk Test") | ||||
| @allure.parent_suite("MultiPsk Test") | ||||
| @allure.suite("BRIDGE Mode") | ||||
| @allure.sub_suite("WPA2 Security") | ||||
| class TestEmpsk6GBridgeWPA2(object): | ||||
|  | ||||
|     # @pytest.mark.wpa3_personal | ||||
|     # @pytest.mark.wpa2_personal | ||||
|     # @pytest.mark.sixg | ||||
|     # @pytest.mark.twog | ||||
|     # @pytest.mark.fiveg | ||||
|     @pytest.mark.empsk | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14423", name="WIFI-14423") | ||||
|     @allure.title("Test E-MPSK with WPA2 to WPA3 on 6GHz") | ||||
|     def test_client_wpa2_wpa3_6g_empsk(self, setup_initial_configuration, get_test_library,get_target_object, | ||||
|                                      check_connectivity, get_testbed_details): | ||||
|         """ | ||||
|         Verify E-MPSK working in BRIDGE mode: | ||||
|         - Client connects on 2.4/5GHz (WPA2 and WPA3) | ||||
|         - Encryption is changed from WPA2 to WPA3 (disable WPA2) | ||||
|         - Verify client successfully get an IP and associate to AP | ||||
|         """ | ||||
|         profile_data = { | ||||
|             "ssid_name": "OpenWifi-roam", | ||||
|             "appliedRadios": ["2G"], | ||||
|             "security": "psk2", | ||||
|             "security_key": "OpenWifi", | ||||
|             "multi-psk": [ | ||||
|                 {"key": "aaaaaaaa"}, | ||||
|                 {"key": "bbbbbbbb"} | ||||
|             ] | ||||
|         } | ||||
|         ssid = profile_data["ssid_name"] | ||||
|         security = "wpa2" | ||||
|         mode = "BRIDGE" | ||||
|         band = "twog" | ||||
|         num_sta = 1 | ||||
|         security_key = profile_data["multi-psk"][0]["key"] | ||||
|         sta_data = get_test_library.empsk_test(ssid=ssid, passkey=security_key, security=security, is_bw320=True, | ||||
|                                                    mode=mode, band=band, pre_cleanup=True, num_sta=num_sta, | ||||
|                                                    scan_ssid=True, dut_data=dut_data, extra_securities = ["wpa3"], | ||||
|                                                    allure_attach=True) | ||||
|  | ||||
|         logging.info(f"sta_data{sta_data}") | ||||
| @@ -820,6 +820,7 @@ class TestRateLimitingBridgeSixg(object): | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.upload_download | ||||
|     @pytest.mark.batch_size_125 | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @pytest.mark.rate_limiting_tests | ||||
|     @pytest.mark.bridge | ||||
|     @allure.testcase(name="WIFI-14364", | ||||
|   | ||||
| @@ -36,8 +36,8 @@ setup_params_general = { | ||||
|              "appliedRadios": ["2G"], | ||||
|              "security_key": "something", | ||||
|              "rate-limit": { | ||||
|                  "ingress-rate": 10, | ||||
|                  "egress-rate": 10 | ||||
|                  "ingress-rate": 20, | ||||
|                  "egress-rate": 20 | ||||
|              }, | ||||
|              "radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA, | ||||
|              "radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA | ||||
| @@ -47,8 +47,8 @@ setup_params_general = { | ||||
|              "appliedRadios": ["5G"], | ||||
|              "security_key": "something", | ||||
|              "rate-limit": { | ||||
|                  "ingress-rate": 10, | ||||
|                  "egress-rate": 10 | ||||
|                  "ingress-rate": 20, | ||||
|                  "egress-rate": 20 | ||||
|              }, | ||||
|              "radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA, | ||||
|              "radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA | ||||
| @@ -75,7 +75,6 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|  | ||||
|     @pytest.mark.wpa2_enterprise | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @pytest.mark.twog_upload_per_ssid | ||||
|     @allure.title("Test for Upload per SSID 2.4 GHz") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5849", name="WIFI-5849") | ||||
| @@ -130,7 +129,7 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|     @pytest.mark.twog | ||||
|     @pytest.mark.twog_download_perssid_persta | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.title("Test for Download per SSID per Station 2.4GHz") | ||||
|     @allure.title("Test for TCP Download per SSID per Station 2.4GHz") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5850", name="WIFI-5850") | ||||
|     def test_radius_server_2g_download_perssid_persta(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                       get_test_device_logs, | ||||
| @@ -314,7 +313,8 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|     @pytest.mark.wpa2_enterprise | ||||
|     @pytest.mark.fiveg | ||||
|     @pytest.mark.fiveg_upload_per_ssid | ||||
|     @allure.title("Test for Upload per SSID 5 GHz") | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.title("Test for UDP Upload per SSID 5 GHz") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5854", name="WIFI-5854") | ||||
|     def test_radius_server_fiveg_per_ssid_upload(self, get_test_library, get_dut_logs_per_test_case, | ||||
|                                                  get_test_device_logs, | ||||
| @@ -334,7 +334,8 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|         band = "fiveg" | ||||
|         eap = "TTLS" | ||||
|         ttls_passwd = "password" | ||||
|         identity = "bandwidth10m" | ||||
|         identity = "user" | ||||
|         configured = 5 | ||||
|         allure.attach(name="ssid-rates", body=str(profile_data["rate-limit"])) | ||||
|         get_test_library.pre_cleanup() | ||||
|         passes, result = get_test_library.enterprise_client_connectivity_test(ssid=ssid_name, security=security, | ||||
| @@ -347,13 +348,19 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|             assert passes == "PASS", result | ||||
|         if passes == "PASS": | ||||
|             raw_lines = [["dl_rate_sel: Total Download Rate:"], ["ul_rate_sel:  Per-Station Download Rate:"]] | ||||
|             get_test_library.wifi_capacity(instance_name="Test_Radius_5g_up_per_ssid", mode=mode, | ||||
|             obj = get_test_library.wifi_capacity(instance_name="Test_Radius_5g_up_per_ssid", mode=mode, | ||||
|                                            download_rate="0Gbps", batch_size="1", | ||||
|                                            upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||
|                                            upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||
|                                            move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||
|                                            add_stations=False, raw_lines=raw_lines) | ||||
|  | ||||
|             report_name = obj[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/" | ||||
|             kpi_data = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report_name) | ||||
|             achieved = float("{:.2f}".format(kpi_data[1][0])) | ||||
|             if achieved <= configured: | ||||
|                 assert True | ||||
|             else: | ||||
|                 assert False, f"Expected Throughput should be less than {configured} Mbps" | ||||
|  | ||||
|  | ||||
|     @pytest.mark.wpa2_enterprise | ||||
|     @pytest.mark.fiveg | ||||
| @@ -797,8 +804,8 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|                         "appliedRadios": ["2G"], | ||||
|                         "security_key": "something", | ||||
|                         "rate-limit": { | ||||
|                             "ingress-rate": 10, | ||||
|                             "egress-rate": 10 | ||||
|                             "ingress-rate": 20, | ||||
|                             "egress-rate": 30 | ||||
|                         }} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
| @@ -860,8 +867,8 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|                         "appliedRadios": ["2G"], | ||||
|                         "security_key": "something", | ||||
|                         "rate-limit": { | ||||
|                             "ingress-rate": 10, | ||||
|                             "egress-rate": 10 | ||||
|                             "ingress-rate": 60, | ||||
|                             "egress-rate": 50 | ||||
|                         }} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
| @@ -923,8 +930,8 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|                         "appliedRadios": ["2G"], | ||||
|                         "security_key": "something", | ||||
|                         "rate-limit": { | ||||
|                             "ingress-rate": 10, | ||||
|                             "egress-rate": 10 | ||||
|                             "ingress-rate": 60, | ||||
|                             "egress-rate": 50 | ||||
|                         }} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
| @@ -986,7 +993,7 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|                         "appliedRadios": ["2G"], | ||||
|                         "security_key": "something", | ||||
|                         "rate-limit": { | ||||
|                             "ingress-rate": 10, | ||||
|                             "ingress-rate": 50, | ||||
|                             "egress-rate": 10 | ||||
|                         }} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -1048,7 +1055,7 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|                         "appliedRadios": ["2G"], | ||||
|                         "security_key": "something", | ||||
|                         "rate-limit": { | ||||
|                             "ingress-rate": 10, | ||||
|                             "ingress-rate": 50, | ||||
|                             "egress-rate": 10 | ||||
|                         }} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
| @@ -1112,7 +1119,7 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|                         "security_key": "something", | ||||
|                         "rate-limit": { | ||||
|                             "ingress-rate": 10, | ||||
|                             "egress-rate": 10 | ||||
|                             "egress-rate": 50 | ||||
|                         }} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
| @@ -1175,7 +1182,7 @@ class TestRateLimitingWithRadiusBridge(object): | ||||
|                         "security_key": "something", | ||||
|                         "rate-limit": { | ||||
|                             "ingress-rate": 10, | ||||
|                             "egress-rate": 10 | ||||
|                             "egress-rate": 50 | ||||
|                         }} | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         mode = "BRIDGE" | ||||
| @@ -1274,6 +1281,7 @@ class TestRateLimitingWithRadiusBridgeSixg(object): | ||||
|     @pytest.mark.wpa3_enterprise | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.sixg_upload_per_ssid | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.title("Test for UDP Upload per SSID 6 GHz") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14366", name="WIFI-14366") | ||||
|     def test_radius_server_6g_upload_per_ssid(self, get_test_library, get_dut_logs_per_test_case, | ||||
| @@ -1326,6 +1334,7 @@ class TestRateLimitingWithRadiusBridgeSixg(object): | ||||
|     @pytest.mark.wpa3_enterprise | ||||
|     @pytest.mark.sixg | ||||
|     @pytest.mark.sixg_download_perssid_persta | ||||
|     @pytest.mark.ow_sanity_lf | ||||
|     @allure.title("Test for TCP Download per Station 6GHz") | ||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14365", name="WIFI-14365") | ||||
|     def test_radius_server_6g_download_persta(self, get_test_library, get_dut_logs_per_test_case, | ||||
|   | ||||
| @@ -21,8 +21,7 @@ setup_params_enterprise = { | ||||
|             {"ssid_name": "ssid_wpa2_eap_5g", "appliedRadios": ["5G"]}], | ||||
|         "wpa3_enterprise": [ | ||||
|             {"ssid_name": "ssid_wpa3_eap_2g", "appliedRadios": ["2G"]}, | ||||
|             {"ssid_name": "ssid_wpa3_eap_5g", "appliedRadios": ["5G"]}, | ||||
|             {"ssid_name": "ttls_ssid_wpa3_eap_6g", "appliedRadios": ["6G"]}]}, | ||||
|             {"ssid_name": "ssid_wpa3_eap_5g", "appliedRadios": ["5G"]}]}, | ||||
|  | ||||
|     "rf": {}, | ||||
|     "radius": True | ||||
|   | ||||
| @@ -232,7 +232,13 @@ setup_params_general_two_vlan = { | ||||
|             {"ssid_name": "ssid_wpa_wpa2_p_m_5g_vlan", "appliedRadios": ["5G"], "security_key": "something", | ||||
|              "vlan": 100}] | ||||
|     }, | ||||
|     "rf": {}, | ||||
|     "rf": { | ||||
|         "6G": { | ||||
|             "band": "6G", | ||||
|             "channel-mode": "EHT", | ||||
|             "channel-width": 80, | ||||
|         } | ||||
|     }, | ||||
|     "radius": False | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -15,7 +15,7 @@ DYNAMIC_VLAN_RADIUS_SERVER_DATA = lf_library.DYNAMIC_VLAN_RADIUS_SERVER_DATA | ||||
| DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA = lf_library.DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA | ||||
|  | ||||
| pytestmark = [pytest.mark.dynamic_vlan_tests, | ||||
|               pytest.mark.vlan] | ||||
|               pytest.mark.vlan, pytest.mark.ow_sanity_lf] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "VLAN", | ||||
| @@ -71,8 +71,11 @@ class TestDynamicVlanOverSsid6GWpa3(object): | ||||
|                 pytest -m "dynamic_precedence_over_ssid and wpa3_enterprise and vlan and sixg" | ||||
|         """ | ||||
|  | ||||
|         profile_data = setup_params_general["ssid_modes"]["wpa3_enterprise"] | ||||
|         ssid_name = profile_data[1]["ssid_name"] | ||||
|         profile_data = {"ssid_name": "ssid_wpa3e_6g", "appliedRadios": ["6G"], | ||||
|              "security_key": "something", | ||||
|              "vlan": 100 | ||||
|              } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security = "wpa3" | ||||
|         extra_secu = [] | ||||
|         mode = "VLAN" | ||||
|   | ||||
| @@ -16,7 +16,7 @@ DYNAMIC_VLAN_RADIUS_SERVER_DATA = lf_library.DYNAMIC_VLAN_RADIUS_SERVER_DATA | ||||
| DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA = lf_library.DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA | ||||
|  | ||||
| pytestmark = [pytest.mark.dynamic_vlan_tests, | ||||
|               pytest.mark.vlan] | ||||
|               pytest.mark.vlan, pytest.mark.ow_sanity_lf] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "VLAN", | ||||
| @@ -72,8 +72,11 @@ class TestDynamicVlan6GWpa3(object): | ||||
|                 pytest -m "absence_of_radius_vlan_identifier and wpa3_enterprise and vlan and sixg" | ||||
|         """ | ||||
|  | ||||
|         profile_data = setup_params_general["ssid_modes"]["wpa3_enterprise"] | ||||
|         ssid_name = profile_data[1]["ssid_name"] | ||||
|         profile_data = {"ssid_name": "ssid_wpa3e_6g", "appliedRadios": ["6G"], | ||||
|              "security_key": "something", | ||||
|              "vlan": 100 | ||||
|              } | ||||
|         ssid_name = profile_data["ssid_name"] | ||||
|         security = "wpa3" | ||||
|         extra_secu = [] | ||||
|         band = "sixg" | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
| import allure | ||||
| import pytest | ||||
|  | ||||
| pytestmark = [pytest.mark.multi_vlan_tests, pytest.mark.sixg] | ||||
| pytestmark = [pytest.mark.multi_vlan_tests, pytest.mark.sixg, pytest.mark.ow_sanity_lf] | ||||
|  | ||||
| setup_params_general = { | ||||
|     "mode": "VLAN", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user