mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-10-31 19:08:01 +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" |         description: "revision of the Open Wifi Helm chart" | ||||||
|       ap_models: |       ap_models: | ||||||
|         required: true |         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" |         description: "the AP models to test" | ||||||
|       ap_version: |       ap_version: | ||||||
|         required: true |         required: true | ||||||
| @@ -103,7 +103,7 @@ jobs: | |||||||
|               AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf189,edgecore_eap105,edgecore_eap111' }}" |               AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf189,edgecore_eap105,edgecore_eap111' }}" | ||||||
|             fi |             fi | ||||||
|           else |           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 |           fi | ||||||
|  |  | ||||||
|           echo "List of AP models to test - $AP_MODELS" |           echo "List of AP models to test - $AP_MODELS" | ||||||
| @@ -1208,11 +1208,277 @@ jobs: | |||||||
|         if: failure() |         if: failure() | ||||||
|         run: kubectl -n openwifi-qa01 logs deployment/owsec |         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 |   # Save reports | ||||||
|   report: |   report: | ||||||
|     if: "!cancelled()" |     if: "!cancelled()" | ||||||
|     runs-on: ubuntu-latest |     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: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
| @@ -1263,7 +1529,7 @@ jobs: | |||||||
|  |  | ||||||
|   # Cleanup |   # Cleanup | ||||||
|   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 |     runs-on: ubuntu-latest | ||||||
|     if: always() |     if: always() | ||||||
|     steps: |     steps: | ||||||
|   | |||||||
							
								
								
									
										1014
									
								
								.github/workflows/regression.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1014
									
								
								.github/workflows/regression.yml
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -462,9 +462,21 @@ class APLIBS: | |||||||
|                     logging.info("Status count: " + str(status_count_1)) |                     logging.info("Status count: " + str(status_count_1)) | ||||||
|                     if status_count_1 == 1: |                     if status_count_1 == 1: | ||||||
|                         logging.info("In Mediatek Chipsets") |                         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: |                     else: | ||||||
|                         cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && ls && echo 1 > dfs_simulate_radar' |                         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": |         elif type_.lower() == "wifi7": | ||||||
|             cmd1 = '[ -f /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/dfs_simulate_radar ] && echo "True" || echo "False"' |             cmd1 = '[ -f /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/dfs_simulate_radar ] && echo "True" || echo "False"' | ||||||
|             output = self.run_generic_command(cmd=cmd1, idx=idx, |             output = self.run_generic_command(cmd=cmd1, idx=idx, | ||||||
| @@ -478,7 +490,7 @@ class APLIBS: | |||||||
|             if status_count == 1: |             if status_count == 1: | ||||||
|                 cmd = "cd && cd /sys/kernel/debug/ieee80211/phy0/ && cd ath12k_hw1 && echo 1 > dfs_simulate_radar" |                 cmd = "cd && cd /sys/kernel/debug/ieee80211/phy0/ && cd ath12k_hw1 && echo 1 > dfs_simulate_radar" | ||||||
|             else: |             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, |         output = self.run_generic_command(cmd=cmd, idx=idx, | ||||||
|                                           print_log=print_log, |                                           print_log=print_log, | ||||||
|                                           attach_allure=attach_allure, |                                           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' |                     cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd qcn6122_2 && cd mac0 && logread | grep DFS' | ||||||
|                 else: |                 else: | ||||||
|                     #cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && logread | grep DFS' |                     #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, |                     output = self.run_generic_command(cmd=cmd1, idx=idx, | ||||||
|                                                       print_log=print_log, |                                                       print_log=print_log, | ||||||
|                                                       attach_allure=attach_allure, |                                                       attach_allure=attach_allure, | ||||||
| @@ -534,9 +546,21 @@ class APLIBS: | |||||||
|                     status_count_1 = int(ret.count("True")) |                     status_count_1 = int(ret.count("True")) | ||||||
|                     logging.info("Status count: " + str(status_count_1)) |                     logging.info("Status count: " + str(status_count_1)) | ||||||
|                     if status_count_1 == 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: |                     else: | ||||||
|                         cmd = f'cd  && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && logread | grep DFS' |                         # 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": |         elif type_.lower() == "wifi7": | ||||||
|             cmd1 = '[ -f /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/dfs_simulate_radar ] && echo "True" || echo "False"' |             cmd1 = '[ -f /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/dfs_simulate_radar ] && echo "True" || echo "False"' | ||||||
|             output = self.run_generic_command(cmd=cmd1, idx=idx, |             output = self.run_generic_command(cmd=cmd1, idx=idx, | ||||||
| @@ -545,9 +569,9 @@ class APLIBS: | |||||||
|                                               expected_attachment_type=allure.attachment_type.JSON) |                                               expected_attachment_type=allure.attachment_type.JSON) | ||||||
|             logging.info("DFS logread output: " + str(output)) |             logging.info("DFS logread output: " + str(output)) | ||||||
|             if output.__contains__("False"): |             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: |             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: |         try: | ||||||
|             output = self.run_generic_command(cmd=cmd, idx=idx, |             output = self.run_generic_command(cmd=cmd, idx=idx, | ||||||
| @@ -692,4 +716,4 @@ if __name__ == '__main__': | |||||||
|     # a = obj.get_active_config() |     # a = obj.get_active_config() | ||||||
|     # if a == l: |     # if a == l: | ||||||
|     #     print("a = l") |     #     print("a = l") | ||||||
|     # print(obj.get_ap_version()) |     # print(obj.get_ap_version()) | ||||||
| @@ -2611,7 +2611,7 @@ class UProfileUtility: | |||||||
|                         ssid_info.append(temp) |                         ssid_info.append(temp) | ||||||
|         return ssid_info |         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: |         if open_roaming: | ||||||
|             base_radio_config_2g = { |             base_radio_config_2g = { | ||||||
|                 "band": "2G", |                 "band": "2G", | ||||||
| @@ -2627,6 +2627,13 @@ class UProfileUtility: | |||||||
|                 "channel-width": 80, |                 "channel-width": 80, | ||||||
|                 "channel": "auto" |                 "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: |             for band in radio_config: | ||||||
|                 if band == "2G" and radio_config[band] is not None: |                 if band == "2G" and radio_config[band] is not None: | ||||||
| @@ -2641,22 +2648,33 @@ class UProfileUtility: | |||||||
|             base_radio_config_2g = { |             base_radio_config_2g = { | ||||||
|                 "band": "2G", |                 "band": "2G", | ||||||
|                 "country": "US", |                 "country": "US", | ||||||
|                 "channel-mode": "HE", |                 "channel-mode": "EHT", | ||||||
|                 "channel": "auto" |                 "channel": "auto" | ||||||
|             } |             } | ||||||
|             base_radio_config_5g = { |             base_radio_config_5g = { | ||||||
|                 "band": "5G", |                 "band": "5G", | ||||||
|                 "country": "US", |                 "country": "US", | ||||||
|                 "allow-dfs": False, |                 "allow-dfs": False, | ||||||
|                 "channel-mode": "HE", |                 "channel-mode": "EHT", | ||||||
|                 "channel": "auto" |                 "channel": "auto" | ||||||
|             } |             } | ||||||
|             base_radio_config_6g = { |             base_radio_config_6g = { | ||||||
|                 "band": "6G", |                 "band": "6G", | ||||||
|                 "country": "US", |                 "country": "US", | ||||||
|                 "channel-mode": "HE", |                 "channel-mode": "EHT", | ||||||
|                 "channel": "auto" |                 "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: |             for band in radio_config: | ||||||
|                 if band == "2G" and radio_config[band] is not None: |                 if band == "2G" and radio_config[band] is not None: | ||||||
|                     for keys in radio_config[band]: |                     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_2g) | ||||||
|             self.base_profile_config["radios"].append(base_radio_config_5g) |             self.base_profile_config["radios"].append(base_radio_config_5g) | ||||||
|             self.base_profile_config["radios"].append(base_radio_config_6g) |             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_section["ssids"] = [] | ||||||
|         self.vlan_ids = [] |         self.vlan_ids = [] | ||||||
|  |  | ||||||
|   | |||||||
| @@ -64,7 +64,8 @@ class tip_2x: | |||||||
|                             "wpa3_enterprise", |                             "wpa3_enterprise", | ||||||
|                             "wpa_wpa2_enterprise_mixed", |                             "wpa_wpa2_enterprise_mixed", | ||||||
|                             "wpa3_enterprise_mixed", |                             "wpa3_enterprise_mixed", | ||||||
|                             "wpa3_enterprise_192" |                             "wpa3_enterprise_192", | ||||||
|  |                             "owe" | ||||||
|                             ] |                             ] | ||||||
|     tip_2x_specific_encryption_translation = {"open": "none", |     tip_2x_specific_encryption_translation = {"open": "none", | ||||||
|                                               "wpa": "psk", |                                               "wpa": "psk", | ||||||
| @@ -77,7 +78,8 @@ class tip_2x: | |||||||
|                                               "wpa3_enterprise": "wpa3", |                                               "wpa3_enterprise": "wpa3", | ||||||
|                                               "wpa_wpa2_enterprise_mixed": "wpa-mixed", |                                               "wpa_wpa2_enterprise_mixed": "wpa-mixed", | ||||||
|                                               "wpa3_enterprise_mixed": "wpa3-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, |     def __init__(self, controller_data=None, target=None, configuration=None, | ||||||
| @@ -231,6 +233,12 @@ class tip_2x: | |||||||
|                                   requested_combination=None, open_roaming=False): |                                   requested_combination=None, open_roaming=False): | ||||||
|         f_conf = self.setup_configuration_data(configuration=configuration, |         f_conf = self.setup_configuration_data(configuration=configuration, | ||||||
|                                                requested_combination=requested_combination) |                                                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: |         if open_roaming: | ||||||
|             logging.info("Selected Configuration of open roaming: " + str(json.dumps(f_conf, indent=2))) |             logging.info("Selected Configuration of open roaming: " + str(json.dumps(f_conf, indent=2))) | ||||||
|             final_configuration = f_conf.copy() |             final_configuration = f_conf.copy() | ||||||
| @@ -243,10 +251,11 @@ class tip_2x: | |||||||
|  |  | ||||||
|             # Setup Radio Scenario |             # Setup Radio Scenario | ||||||
|             if final_configuration["rf"] != {}: |             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: |             else: | ||||||
|                 final_configuration["rf"] = {"2G": {}, "5G": {}, "6G": {}} |                 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 in final_configuration["ssid_modes"]: | ||||||
|                 for ssid_data in final_configuration["ssid_modes"][ssid]: |                 for ssid_data in final_configuration["ssid_modes"][ssid]: | ||||||
|                     if final_configuration["radius"]: |                     if final_configuration["radius"]: | ||||||
| @@ -276,10 +285,10 @@ class tip_2x: | |||||||
|  |  | ||||||
|             # Setup Radio Scenario |             # Setup Radio Scenario | ||||||
|             if final_configuration["rf"] != {}: |             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: |             else: | ||||||
|                 final_configuration["rf"] = {"2G": {}, "5G": {}, "6G": {}} |                 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 in final_configuration["ssid_modes"]: | ||||||
|                 for ssid_data in final_configuration["ssid_modes"][ssid]: |                 for ssid_data in final_configuration["ssid_modes"][ssid]: | ||||||
|                     if final_configuration["radius"]: |                     if final_configuration["radius"]: | ||||||
| @@ -393,8 +402,8 @@ class tip_2x: | |||||||
|             logging.info("resp: " + str(resp)) |             logging.info("resp: " + str(resp)) | ||||||
|             uuid = resp["details"]["uuid"] |             uuid = resp["details"]["uuid"] | ||||||
|             logging.info("uuid from resp: " + str(uuid)) |             logging.info("uuid from resp: " + str(uuid)) | ||||||
|             logging.info("Waiting for 30 sec after config push") |             logging.info("Waiting for 45 sec after config push") | ||||||
|             time.sleep(30) |             time.sleep(45) | ||||||
|             r_data = self.dut_library_object.ubus_call_ucentral_status(idx=i, print_log=True, attach_allure=False) |             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"] |             latest_uuid_after_apply = r_data["latest"] | ||||||
|             active_uuid_after_apply = r_data["active"] |             active_uuid_after_apply = r_data["active"] | ||||||
| @@ -425,9 +434,9 @@ class tip_2x: | |||||||
|                     pytest.fail("Config is not Properly Applied on AP") |                     pytest.fail("Config is not Properly Applied on AP") | ||||||
|  |  | ||||||
|             self.dut_library_object.get_active_config(idx=i, print_log=True, attach_allure=False) |             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 |             # wait time interfaces to come up | ||||||
|             time.sleep(30) |             time.sleep(45) | ||||||
|  |  | ||||||
|             # x = 0 |             # x = 0 | ||||||
|             # while uuid_before_apply == uuid_after_apply: |             # while uuid_before_apply == uuid_after_apply: | ||||||
| @@ -502,15 +511,30 @@ class tip_2x: | |||||||
|             n = len(temp_data[dut]) |             n = len(temp_data[dut]) | ||||||
|             lst = list(range(0, n)) |             lst = list(range(0, n)) | ||||||
|             ret_val[dut]["ssid_data"] = dict.fromkeys(lst) |             ret_val[dut]["ssid_data"] = dict.fromkeys(lst) | ||||||
|  |             fields = ["SSID", "Encryption", "Password", "Band", "BSSID"] | ||||||
|             for j in ret_val[dut]["ssid_data"]: |             for j in ret_val[dut]["ssid_data"]: | ||||||
|                 a = temp_data[dut][j].copy() |                 ssid_entry = temp_data[dut][j] | ||||||
|                 a = dict.fromkeys(["ssid", "encryption", "password", "band", "bssid"]) |                 expected_length = 5 | ||||||
|                 a["ssid"] = temp_data[dut][j][0] |                 if len(ssid_entry) < expected_length: | ||||||
|                 a["encryption"] = temp_data[dut][j][1] |                     missing_fields = [] | ||||||
|                 a["password"] = temp_data[dut][j][2] |                     # Check each field for its presence | ||||||
|                 a["band"] = temp_data[dut][j][3] |                     for index, field in enumerate(fields): | ||||||
|                 a["bssid"] = temp_data[dut][j][4] |                         if len(ssid_entry) <= index: | ||||||
|                 ret_val[dut]["ssid_data"][j] = a |                             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] | ||||||
|  |                     a["encryption"] = temp_data[dut][j][1] | ||||||
|  |                     a["password"] = temp_data[dut][j][2] | ||||||
|  |                     a["band"] = temp_data[dut][j][3] | ||||||
|  |                     a["bssid"] = temp_data[dut][j][4] | ||||||
|  |                     ret_val[dut]["ssid_data"][j] = a | ||||||
|             temp = ret_val[dut]["radio_data"].copy() |             temp = ret_val[dut]["radio_data"].copy() | ||||||
|             logging.info(f"temp:{temp}") |             logging.info(f"temp:{temp}") | ||||||
|             for j in temp: |             for j in temp: | ||||||
| @@ -660,14 +684,19 @@ class tip_2x: | |||||||
|                     band = "2G" |                     band = "2G" | ||||||
|                 elif o[i + 9].__contains__("5."): |                 elif o[i + 9].__contains__("5."): | ||||||
|                     band = "5G" |                     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: |                 else: | ||||||
|                     band = "6G" |                     band = "6G" | ||||||
|                 iwinfo_bssid_data[o[i - 1]] = [o[i + 1].replace('"', ''), o[i + 4], band] |                 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 p in iwinfo_bssid_data: | ||||||
|             for q in ssid_info_sdk: |             for q in ssid_info_sdk: | ||||||
|                 if iwinfo_bssid_data[p][0] == q[0] and iwinfo_bssid_data[p][2] == q[3]: |                 if iwinfo_bssid_data[p][0] == q[0] and iwinfo_bssid_data[p][2] == q[3]: | ||||||
|                     q.append(iwinfo_bssid_data[p][1]) |                     q.append(iwinfo_bssid_data[p][1]) | ||||||
|         ssid_info_sdk.append(channel_info) |         ssid_info_sdk.append(channel_info) | ||||||
|  |         logging.info(f"ssid_info_sdk:{ssid_info_sdk}") | ||||||
|         return ssid_info_sdk |         return ssid_info_sdk | ||||||
|  |  | ||||||
|     def get_dut_version(self): |     def get_dut_version(self): | ||||||
|   | |||||||
| @@ -252,7 +252,7 @@ def get_security_flags(): | |||||||
|     security = ["open", "wpa", "wep", "wpa2_personal", "wpa3_personal", "wpa3_personal_mixed", |     security = ["open", "wpa", "wep", "wpa2_personal", "wpa3_personal", "wpa3_personal_mixed", | ||||||
|                 "wpa_wpa2_enterprise_mixed", "wpa2_eap", "wpa2_only_eap", |                 "wpa_wpa2_enterprise_mixed", "wpa2_eap", "wpa2_only_eap", | ||||||
|                 "wpa_wpa2_personal_mixed", "wpa_enterprise", "wpa2_enterprise", "wpa3_enterprise_mixed", |                 "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 |     yield security | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ | |||||||
|     pytest -m "external_captive_portal_tests and bridge" |     pytest -m "external_captive_portal_tests and bridge" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
| import re | import re | ||||||
| import time | import time | ||||||
| @@ -12,47 +13,127 @@ import paramiko | |||||||
| import pytest | import pytest | ||||||
| from tabulate import tabulate | 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] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | captive = { | ||||||
|  |     "auth-mode": "uam", | ||||||
|  |     "uam-port": 3990, | ||||||
|  |     "uam-secret": "hotsys123", | ||||||
|  |     "uam-server": "https://customer.hotspotsystem.com/customer/hotspotlogin.php", | ||||||
|  |     "nasid": "AlmondLabs", | ||||||
|  |     "auth-server": "radius.hotspotsystem.com", | ||||||
|  |     "auth-port": 1812, | ||||||
|  |     "auth-secret": "hotsys123", | ||||||
|  |     "walled-garden-fqdn": ["*.google.com", "telecominfraproject.com", "customer.hotspotsystem.com", "youtube.com"] | ||||||
|  | } | ||||||
| setup_params_general = { | setup_params_general = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
|     "ssid_modes": { |     "ssid_modes": { | ||||||
|         "open": [ |         "open": [ | ||||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", |             {"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", | ||||||
|              "captive": { |              "captive": captive | ||||||
|                  "auth-mode": "uam", |              }, | ||||||
|                  "uam-port": 3990, |             {"ssid_name": "ssid_ext_cap_portal_open_5g_ctc", "appliedRadios": ["5G"], "security_key": "something", | ||||||
|                  "uam-secret": "hotsys123", |              "captive": captive | ||||||
|                  "uam-server": "https://customer.hotspotsystem.com/customer/hotspotlogin.php", |  | ||||||
|                  "nasid": "AlmondLabs", |  | ||||||
|                  "auth-server": "radius.hotspotsystem.com", |  | ||||||
|                  "auth-port": 1812, |  | ||||||
|                  "auth-secret": "hotsys123", |  | ||||||
|                  "walled-garden-fqdn": [ |  | ||||||
|                      "*.google.com", |  | ||||||
|                      "telecominfraproject.com", |  | ||||||
|                      "customer.hotspotsystem.com", |  | ||||||
|                      "youtube.com" |  | ||||||
|                  ] |  | ||||||
|              } |              } | ||||||
|  |         ], | ||||||
|  |         "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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="External Captive Portal") | @allure.suite(suite_name="External Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @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): | class TestBridgeModeExternalCaptivePortal(object): | ||||||
|     """ |     """ | ||||||
|             External Captive Portal Test: BRIDGE Mode |             External Captive Portal Test: BRIDGE Mode | ||||||
| @@ -61,17 +142,17 @@ class TestBridgeModeExternalCaptivePortal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.click_to_continue |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band Bridge mode") |     @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") |     @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, |     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, setup_configuration, |                                               get_test_device_logs, check_connectivity, | ||||||
|                                               get_testbed_details, get_target_object): |                                               get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             BRIDGE Mode External Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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): |         def run_command_using_ssh(ssh_client, command: str): | ||||||
|             output = "" |             output = "" | ||||||
|             try_count = 1 |             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] |             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||||
|             security = "open" |             security = "open" | ||||||
|             station = 'sta_ecp' |             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...") |             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( |             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]", |                 passkey="[BLANK]", | ||||||
|                 security="open", |                 security="open", | ||||||
|                 mode=setup_params_general["mode"], |                 mode=setup_params_general["mode"], | ||||||
| @@ -106,6 +371,178 @@ class TestBridgeModeExternalCaptivePortal(object): | |||||||
|                 station_name=[station], |                 station_name=[station], | ||||||
|                 attach_port_info=False |                 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}") |             sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}") | ||||||
|             dict_table_sta = { |             dict_table_sta = { | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ | |||||||
|     pytest -m "external_captive_portal_tests and NAT" |     pytest -m "external_captive_portal_tests and NAT" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
| import re | import re | ||||||
| import time | import time | ||||||
| @@ -12,14 +13,9 @@ import paramiko | |||||||
| import pytest | import pytest | ||||||
| from tabulate import tabulate | 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 = { | captive = { | ||||||
|     "mode": "NAT", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "uam", |                  "auth-mode": "uam", | ||||||
|                  "uam-port": 3990, |                  "uam-port": 3990, | ||||||
|                  "uam-secret": "hotsys123", |                  "uam-secret": "hotsys123", | ||||||
| @@ -35,43 +31,132 @@ setup_params_general = { | |||||||
|                      "youtube.com" |                      "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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="External Captive Portal") | @allure.suite(suite_name="External Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @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): | class TestNatModeExternalCaptivePortal(object): | ||||||
|     """ |     """ | ||||||
|             External Captive Portal Test: NAT Mode |             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.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.click_to_continue |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band NAT mode") |     @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") |     @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, |     def test_nat_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||||
|                                               get_test_device_logs, check_connectivity, setup_configuration, |                                            get_dut_logs_per_test_case,get_test_device_logs, check_connectivity, | ||||||
|                                               get_testbed_details, get_target_object): |                                             get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             NAT Mode External Captive Portal Test with open encryption 2.4 GHz Band |             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): |         def run_command_using_ssh(ssh_client, command: str): | ||||||
|             output = "" |             output = "" | ||||||
|             try_count = 1 |             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] |             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||||
|             security = "open" |             security = "open" | ||||||
|             station = 'sta_ecp' |             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...") |             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( |             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]", |                 passkey="[BLANK]", | ||||||
|                 security="open", |                 security="open", | ||||||
|                 mode="NAT-WAN", |                 mode="NAT-WAN", | ||||||
|                 radio=radio_port_name, |                 radio=radio_port_name, | ||||||
|  |                 band="twog", | ||||||
|                 station_name=[station], |                 station_name=[station], | ||||||
|                 attach_port_info=False |                 attach_port_info=False | ||||||
|             ) |             ) | ||||||
| @@ -218,3 +314,348 @@ class TestNatModeExternalCaptivePortal(object): | |||||||
|                 pytest.fail(f"Error occurred: {e}") |                 pytest.fail(f"Error occurred: {e}") | ||||||
|             finally: |             finally: | ||||||
|                 client.close() |                 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" |     pytest -m "external_captive_portal_tests and bridge" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
| import re | import re | ||||||
| import time | import time | ||||||
| @@ -13,14 +14,10 @@ import pytest | |||||||
| from tabulate import tabulate | from tabulate import tabulate | ||||||
| from bs4 import BeautifulSoup | 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 = { | captive ={ | ||||||
|     "mode": "BRIDGE", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "uam", |                  "auth-mode": "uam", | ||||||
|                  "uam-port": 3990, |                  "uam-port": 3990, | ||||||
|                  "uam-secret": "hotsys123", |                  "uam-secret": "hotsys123", | ||||||
| @@ -36,24 +33,113 @@ setup_params_general = { | |||||||
|                      "youtube.com" |                      "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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="External Captive Portal") | @allure.suite(suite_name="External Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @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): | class TestBridgeModeExternalCaptivePortal(object): | ||||||
|     """ |     """ | ||||||
|             External Captive Portal Test: BRIDGE Mode |             External Captive Portal Test: BRIDGE Mode | ||||||
| @@ -62,17 +148,17 @@ class TestBridgeModeExternalCaptivePortal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.local_user_and_pass |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band Bridge mode") |     @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") |     @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, |     def test_bridge_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||||
|                                                 get_test_device_logs, check_connectivity, setup_configuration, |                                                 get_dut_logs_per_test_case,get_test_device_logs, check_connectivity, | ||||||
|                                                 get_testbed_details, get_target_object): |                                                 get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             BRIDGE Mode External Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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): |         def run_command_using_ssh(ssh_client, command: str): | ||||||
|             output = "" |             output = "" | ||||||
|             try_count = 1 |             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] |             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||||
|             security = "open" |             security = "open" | ||||||
|             station = 'sta_ecp' |             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...") |             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( |             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]", |                 passkey="[BLANK]", | ||||||
|                 security="open", |                 security="open", | ||||||
|                 mode=setup_params_general["mode"], |                 mode=setup_params_general["mode"], | ||||||
| @@ -251,3 +347,408 @@ class TestBridgeModeExternalCaptivePortal(object): | |||||||
|                 logging.info("Throughput exceeded than set threshold") |                 logging.info("Throughput exceeded than set threshold") | ||||||
|                 pytest.fail("Throughput exceeded than set threshold") |                 pytest.fail("Throughput exceeded than set threshold") | ||||||
|             logging.info("Throughput is within the 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" |     pytest -m "external_captive_portal_tests and nat" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
| import re | import re | ||||||
| import time | import time | ||||||
| @@ -13,14 +14,10 @@ import pytest | |||||||
| from tabulate import tabulate | from tabulate import tabulate | ||||||
| from bs4 import BeautifulSoup | 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 = { | captive = { | ||||||
|     "mode": "NAT", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "uam", |                  "auth-mode": "uam", | ||||||
|                  "uam-port": 3990, |                  "uam-port": 3990, | ||||||
|                  "uam-secret": "hotsys123", |                  "uam-secret": "hotsys123", | ||||||
| @@ -36,24 +33,113 @@ setup_params_general = { | |||||||
|                      "youtube.com" |                      "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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="External Captive Portal") | @allure.suite(suite_name="External Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @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): | class TestNatModeExternalCaptivePortal(object): | ||||||
|     """ |     """ | ||||||
|             External Captive Portal Test: NAT Mode |             External Captive Portal Test: NAT Mode | ||||||
| @@ -62,17 +148,17 @@ class TestNatModeExternalCaptivePortal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.local_user_and_pass |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band NAT mode") |     @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") |     @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, |     def test_nat_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||||
|                                                 get_test_device_logs, check_connectivity, setup_configuration, |                                              get_dut_logs_per_test_case,get_test_device_logs, check_connectivity, | ||||||
|                                                 get_testbed_details, get_target_object): |                                              get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             NAT Mode External Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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): |         def run_command_using_ssh(ssh_client, command: str): | ||||||
|             output = "" |             output = "" | ||||||
|             try_count = 1 |             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] |             radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0] | ||||||
|             security = "open" |             security = "open" | ||||||
|             station = 'sta_ecp' |             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...") |             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( |             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]", |                 passkey="[BLANK]", | ||||||
|                 security="open", |                 security="open", | ||||||
|                 mode="NAT-WAN", |                 mode="NAT-WAN", | ||||||
| @@ -251,3 +347,408 @@ class TestNatModeExternalCaptivePortal(object): | |||||||
|                 logging.info("Throughput exceeded than set threshold") |                 logging.info("Throughput exceeded than set threshold") | ||||||
|                 pytest.fail("Throughput exceeded than set threshold") |                 pytest.fail("Throughput exceeded than set threshold") | ||||||
|             logging.info("Throughput is within the 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" |     pytest -m "advanced_captive_portal_tests and bridge" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | 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.click_to_continue] | ||||||
| setup_params_general = { | captive = { | ||||||
|     "mode": "BRIDGE", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "click-to-continue", |                  "auth-mode": "click-to-continue", | ||||||
|                  "walled-garden-fqdn": [ |                  "walled-garden-fqdn": [ | ||||||
|                      "*.google.com", |                      "*.google.com", | ||||||
|                      "telecominfraproject.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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="Internal Captive Portal") | @allure.suite(suite_name="Internal Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @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): | class TestBridgeModeadvancedcaptiveportal(object): | ||||||
|     """ |     """ | ||||||
|         Advanced Captive Portal Test: BRIDGE Mode |         Advanced Captive Portal Test: BRIDGE Mode | ||||||
| @@ -49,13 +135,12 @@ class TestBridgeModeadvancedcaptiveportal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.click_to_continue |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band Bridge mode") |     @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") |     @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, |     def test_bridge_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||||
|                                               get_test_device_logs, num_stations, check_connectivity, |                                               get_dut_logs_per_test_case,get_test_device_logs, num_stations, | ||||||
|                                               setup_configuration, get_testbed_details, get_target_object): |                                               check_connectivity, get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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 " |                       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.") |                            "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, |         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, |                                                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, |                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||||
|                                                                   get_testbed_details=get_testbed_details, |                                                                   get_testbed_details=get_testbed_details, | ||||||
|                                                                   tip_2x_obj=get_target_object) |                                                                   tip_2x_obj=get_target_object) | ||||||
|         assert passes == "PASS", result |         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" |     pytest -m "advanced_captive_portal_tests and nat" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | captive = { | ||||||
|     "mode": "NAT", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "click-to-continue", |                  "auth-mode": "click-to-continue", | ||||||
|                  "walled-garden-fqdn": [ |                  "walled-garden-fqdn": [ | ||||||
|                      "*.google.com", |                      "*.google.com", | ||||||
|                      "telecominfraproject.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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="Internal Captive Portal") | @allure.suite(suite_name="Internal Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @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): | class TestNatModeadvancedcaptiveportal(object): | ||||||
|     """ |     """ | ||||||
|         Advanced Captive Portal Test: NAT Mode |         Advanced Captive Portal Test: NAT Mode | ||||||
| @@ -49,13 +135,13 @@ class TestNatModeadvancedcaptiveportal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.click_to_continue |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Click-to-continue mode with open encryption 2.4 GHz Band NAT mode") |     @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") |     @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, |     def test_nat_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, | ||||||
|                                               get_test_device_logs, num_stations, check_connectivity, |                                             get_dut_logs_per_test_case,get_test_device_logs, | ||||||
|                                               setup_configuration, get_testbed_details, get_target_object): |                                             num_stations, check_connectivity, | ||||||
|  |                                             get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             nat Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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 " |                       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.") |                            "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, |         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, |                                                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, |                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||||
|                                                                   get_testbed_details=get_testbed_details, |                                                                   get_testbed_details=get_testbed_details, | ||||||
|                                                                   tip_2x_obj=get_target_object) |                                                                   tip_2x_obj=get_target_object) | ||||||
|         assert passes == "PASS", result |         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" |     pytest -m "advanced_captive_portal_tests and bridge" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | captive = { | ||||||
|     "mode": "BRIDGE", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "credentials", |                  "auth-mode": "credentials", | ||||||
|                  "credentials": [ |                  "credentials": [ | ||||||
|                      { |                      { | ||||||
| @@ -29,24 +26,111 @@ setup_params_general = { | |||||||
|                      "telecominfraproject.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_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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="Internal Captive Portal") | @allure.suite(suite_name="Internal Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @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): | class TestBridgeModeadvancedcaptiveportal(object): | ||||||
|     """ |     """ | ||||||
|         Advanced Captive Portal Test: BRIDGE Mode |         Advanced Captive Portal Test: BRIDGE Mode | ||||||
| @@ -55,13 +139,12 @@ class TestBridgeModeadvancedcaptiveportal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.local_user_and_pass |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band Bridge mode") |     @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") |     @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, |     def test_bridge_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||||
|                                                 get_test_device_logs, num_stations, check_connectivity, |                                                 get_dut_logs_per_test_case,get_test_device_logs, | ||||||
|                                                 setup_configuration, get_testbed_details, get_target_object): |                                                 num_stations,check_connectivity,get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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 " |                       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.") |                            "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, |         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, |                                                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, |                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||||
|                                                                   get_testbed_details=get_testbed_details, |                                                                   get_testbed_details=get_testbed_details, | ||||||
|                                                                   tip_2x_obj=get_target_object) |                                                                   tip_2x_obj=get_target_object) | ||||||
|         assert passes == "PASS", result |         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" |     pytest -m "advanced_captive_portal_tests and nat" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | 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.local_user_and_pass] | ||||||
| setup_params_general = { | captive = { | ||||||
|     "mode": "NAT", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "credentials", |                  "auth-mode": "credentials", | ||||||
|                  "credentials": [ |                  "credentials": [ | ||||||
|                      { |                      { | ||||||
| @@ -29,24 +25,111 @@ setup_params_general = { | |||||||
|                      "telecominfraproject.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_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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="Internal Captive Portal") | @allure.suite(suite_name="Internal Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @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): | class TestNatModeadvancedcaptiveportal(object): | ||||||
|     """ |     """ | ||||||
|         Advanced Captive Portal Test: NAT Mode |         Advanced Captive Portal Test: NAT Mode | ||||||
| @@ -55,13 +138,12 @@ class TestNatModeadvancedcaptiveportal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.local_user_and_pass |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Local user/pass mode with open encryption 2.4 GHz Band NAT mode") |     @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") |     @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, |     def test_nat_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||||
|                                                 get_test_device_logs, num_stations, check_connectivity, |                                              get_dut_logs_per_test_case,get_test_device_logs, num_stations, | ||||||
|                                                 setup_configuration, get_testbed_details, get_target_object): |                                              check_connectivity, get_testbed_details, get_target_object): | ||||||
|         """ |         """ | ||||||
|             NAT Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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 " |                       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.") |                            "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, |         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, |                                                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, |                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||||
|                                                                   get_testbed_details=get_testbed_details, |                                                                   get_testbed_details=get_testbed_details, | ||||||
|                                                                   tip_2x_obj=get_target_object) |                                                                   tip_2x_obj=get_target_object) | ||||||
|         assert passes == "PASS", result |         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" |     pytest -m "advanced_captive_portal_tests and bridge" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | captive = { | ||||||
|     "mode": "BRIDGE", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "radius", |                  "auth-mode": "radius", | ||||||
|                  "auth-server": "10.28.3.21", |                  "auth-server": "10.28.3.21", | ||||||
|                  "auth-port": 1812, |                  "auth-port": 1812, | ||||||
| @@ -26,24 +23,110 @@ setup_params_general = { | |||||||
|                      "telecominfraproject.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_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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="Internal Captive Portal") | @allure.suite(suite_name="Internal Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @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): | class TestBridgeModeadvancedcaptiveportal(object): | ||||||
|     """ |     """ | ||||||
|         Advanced Captive Portal Test: BRIDGE Mode |         Advanced Captive Portal Test: BRIDGE Mode | ||||||
| @@ -52,14 +135,12 @@ class TestBridgeModeadvancedcaptiveportal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.radius_user_and_pass |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Radius user/pass mode with open encryption 2.4 GHz Band Bridge mode") |     @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") |     @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, |     def test_bridge_open_2g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||||
|                                                  get_test_device_logs, num_stations, check_connectivity, |                                                  get_dut_logs_per_test_case,get_test_device_logs, num_stations, | ||||||
|                                                  setup_configuration, get_testbed_details, get_target_object, |                                                  check_connectivity,get_testbed_details,get_target_object,radius_info): | ||||||
|                                                  radius_info): |  | ||||||
|         """ |         """ | ||||||
|             BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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 valid credentials that are configured in the radius server being used to get " | ||||||
|                            "the internet access.") |                            "the internet access.") | ||||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, |         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, |                                                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, |                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||||
|                                                                   get_testbed_details=get_testbed_details, |                                                                   get_testbed_details=get_testbed_details, | ||||||
|                                                                   tip_2x_obj=get_target_object) |                                                                   tip_2x_obj=get_target_object) | ||||||
|         assert passes == "PASS", result |         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" |     pytest -m "advanced_captive_portal_tests and nat" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import copy | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | 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.radius_user_and_pass] | ||||||
| setup_params_general = { | captive = { | ||||||
|     "mode": "NAT", |  | ||||||
|     "ssid_modes": { |  | ||||||
|         "open": [ |  | ||||||
|             {"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something", |  | ||||||
|              "captive": { |  | ||||||
|                  "auth-mode": "radius", |                  "auth-mode": "radius", | ||||||
|                  "auth-server": "10.28.3.21", |                  "auth-server": "10.28.3.21", | ||||||
|                  "auth-port": 1812, |                  "auth-port": 1812, | ||||||
| @@ -26,24 +22,110 @@ setup_params_general = { | |||||||
|                      "telecominfraproject.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_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 |     "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.feature("Advanced Captive Portal Test") | ||||||
| @allure.parent_suite("Advanced Captive Portal Tests") | @allure.parent_suite("Advanced Captive Portal Tests") | ||||||
| @allure.suite(suite_name="Internal Captive Portal") | @allure.suite(suite_name="Internal Captive Portal") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @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): | class TestNATModeadvancedcaptiveportal(object): | ||||||
|     """ |     """ | ||||||
|         Advanced Captive Portal Test: NAT Mode |         Advanced Captive Portal Test: NAT Mode | ||||||
| @@ -52,14 +134,12 @@ class TestNATModeadvancedcaptiveportal(object): | |||||||
|  |  | ||||||
|     @pytest.mark.open |     @pytest.mark.open | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.radius_user_and_pass |  | ||||||
|     @pytest.mark.ow_regression_lf |     @pytest.mark.ow_regression_lf | ||||||
|     @allure.title("Radius user/pass mode with open encryption 2.4 GHz Band NAT mode") |     @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") |     @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, |     def test_nat_open_2g_radius_user_and_pass(self, setup_initial_configuration, get_test_library, | ||||||
|                                                  get_test_device_logs, num_stations, check_connectivity, |                                               get_dut_logs_per_test_case, get_test_device_logs, num_stations, | ||||||
|                                                  setup_configuration, get_testbed_details, get_target_object, |                                               check_connectivity, get_testbed_details, get_target_object, radius_info): | ||||||
|                                                  radius_info): |  | ||||||
|         """ |         """ | ||||||
|             NAT Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band |             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" |             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 valid credentials that are configured in the radius server being used to get " | ||||||
|                            "the internet access.") |                            "the internet access.") | ||||||
|         passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security, |         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, |                                                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                                                   num_sta=num_stations, json_post_data=json_post_data, |                                                                   num_sta=num_stations, json_post_data=json_post_data, | ||||||
|                                                                   get_testbed_details=get_testbed_details, |                                                                   get_testbed_details=get_testbed_details, | ||||||
|                                                                   tip_2x_obj=get_target_object) |                                                                   tip_2x_obj=get_target_object) | ||||||
|         assert passes == "PASS", result |         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", |             "band": "5G", | ||||||
|             "country": "US", |             "country": "US", | ||||||
|             "allow-dfs": True, |             "allow-dfs": True, | ||||||
|             "channel-mode": "VHT", |  | ||||||
|             "channel-width": 80, |             "channel-width": 80, | ||||||
|             "channel": 52 |             "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 |         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" |         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] |         profile_data = setup_params_general1["ssid_modes"]["wpa2_personal"][0] | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         security = "wpa2" |         security = "wpa2" | ||||||
|         band = "fiveg" |         band = "fiveg" | ||||||
|         mode = "BRIDGE" |         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, |                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) |                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) | ||||||
|         get_target_object.reboot() |         get_target_object.reboot() | ||||||
| @@ -78,7 +79,6 @@ setup_params_general2 = { | |||||||
|             "band": "5G", |             "band": "5G", | ||||||
|             "country": "US", |             "country": "US", | ||||||
|             "allow-dfs": True, |             "allow-dfs": True, | ||||||
|             "channel-mode": "VHT", |  | ||||||
|             "channel-width": 80, |             "channel-width": 80, | ||||||
|             "channel": 100 |             "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 |         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" |         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] |         profile_data = setup_params_general2["ssid_modes"]["wpa2_personal"][0] | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         security = "wpa2" |         security = "wpa2" | ||||||
|         band = "fiveg" |         band = "fiveg" | ||||||
|         mode = "BRIDGE" |         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, |                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) |                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) | ||||||
|         get_target_object.reboot() |         get_target_object.reboot() | ||||||
| @@ -135,7 +136,6 @@ setup_params_general11 = { | |||||||
|             "band": "5G", |             "band": "5G", | ||||||
|             "country": "US", |             "country": "US", | ||||||
|             "allow-dfs": True, |             "allow-dfs": True, | ||||||
|             "channel-mode": "VHT", |  | ||||||
|             "channel-width": 80, |             "channel-width": 80, | ||||||
|             "channel": 132 |             "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" |         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] |         profile_data = setup_params_general11["ssid_modes"]["wpa2_personal"][0] | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         security = "wpa2" |         security = "wpa2" | ||||||
|         band = "fiveg" |         band = "fiveg" | ||||||
|         mode = "BRIDGE" |         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, |                                   passkey=security_key, mode=mode, band=band, | ||||||
|                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) |                                   num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object) | ||||||
|         get_target_object.reboot() |         get_target_object.reboot() | ||||||
|   | |||||||
| @@ -14,10 +14,23 @@ setup_params_general_5G = { | |||||||
|         ] |         ] | ||||||
|     }, |     }, | ||||||
|     "rf": { |     "rf": { | ||||||
|  |         "2G": { | ||||||
|  |             "band": "2G", | ||||||
|  |             "channel-width": 20, | ||||||
|  |             "channel-mode": "HE", | ||||||
|  |             "channel": 6 | ||||||
|  |         }, | ||||||
|         "5G": { |         "5G": { | ||||||
|             "band": "5G", |             "band": "5G", | ||||||
|             "channel-width": 80, |             "channel-width": 80, | ||||||
|  |             "channel-mode": "HE", | ||||||
|             "channel": 36 |             "channel": 36 | ||||||
|  |         }, | ||||||
|  |         "6G": { | ||||||
|  |             "band": "6G", | ||||||
|  |             "channel-width": 160, | ||||||
|  |             "channel-mode": "HE", | ||||||
|  |             "channel": 33 | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
|     "radius": False |     "radius": False | ||||||
| @@ -208,7 +221,20 @@ setup_params_general_2G = { | |||||||
|         "2G": { |         "2G": { | ||||||
|             "band": "2G", |             "band": "2G", | ||||||
|             "channel-width": 20, |             "channel-width": 20, | ||||||
|  |             "channel-mode": "HE", | ||||||
|             "channel": 6 |             "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 |     "radius": False | ||||||
|   | |||||||
| @@ -14,10 +14,23 @@ setup_params_general_5G = { | |||||||
|         ] |         ] | ||||||
|     }, |     }, | ||||||
|     "rf": { |     "rf": { | ||||||
|  |         "2G": { | ||||||
|  |             "band": "2G", | ||||||
|  |             "channel-width": 20, | ||||||
|  |             "channel-mode": "HE", | ||||||
|  |             "channel": 6 | ||||||
|  |         }, | ||||||
|         "5G": { |         "5G": { | ||||||
|             "band": "5G", |             "band": "5G", | ||||||
|             "channel-width": 80, |             "channel-width": 80, | ||||||
|  |             "channel-mode": "HE", | ||||||
|             "channel": 36 |             "channel": 36 | ||||||
|  |         }, | ||||||
|  |         "6G": { | ||||||
|  |             "band": "6G", | ||||||
|  |             "channel-width": 160, | ||||||
|  |             "channel-mode": "HE", | ||||||
|  |             "channel": 33 | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
|     "radius": False |     "radius": False | ||||||
| @@ -209,7 +222,20 @@ setup_params_general_2G = { | |||||||
|         "2G": { |         "2G": { | ||||||
|             "band": "2G", |             "band": "2G", | ||||||
|             "channel-width": 20, |             "channel-width": 20, | ||||||
|  |             "channel-mode": "HE", | ||||||
|             "channel": 6 |             "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 |     "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 |     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||||
|     pytest -m "client_scale_test and BRIDGE" |     pytest -m "ax_client_scale_tests and BRIDGE" | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| import logging | import logging | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | setup_params_general_2G = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="Open Security") | @allure.suite(suite_name="Open Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | |||||||
| @pytest.mark.twog | @pytest.mark.twog | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityBRIDGEMode2G(object): | class TestWifiCapacityBRIDGEMode2G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and open and twog" |         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") |     @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") |     @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, |     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): |                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and twog and tcp_download" |             pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -66,8 +66,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | |||||||
|     @allure.title("Test for UDP Download 2.4 GHz") |     @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, |     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): |                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and twog and udp_download" |             pytest -m "ax_client_scale_tests and bridge and open and twog and udp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and twog and tcp_bidirectional" |             pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and twog and udp_bidirectional" |             pytest -m "ax_client_scale_tests and bridge and open and twog and udp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and twog and tcp_upload" |             pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and twog and udp_upload" |             pytest -m "ax_client_scale_tests and bridge and open and twog and udp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -170,8 +170,8 @@ setup_params_general_5G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="Open Security") | @allure.suite(suite_name="Open Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -185,8 +185,8 @@ setup_params_general_5G = { | |||||||
| @pytest.mark.fiveg | @pytest.mark.fiveg | ||||||
| @pytest.mark.fiveg_band | @pytest.mark.fiveg_band | ||||||
| class TestWifiCapacityBRIDGEMode5G(object): | class TestWifiCapacityBRIDGEMode5G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and open and fiveg" |         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") |     @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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and tcp_download" |             pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and udp_download" |             pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and tcp_bidirectional" |             pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and udp_bidirectional" |             pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and udp_upload" |             pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and open and fiveg and tcp_upload" |             pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|     Performance Test: Client Scale Test : NAT Mode |     Performance Test: AX Client Scale Test : NAT Mode | ||||||
|     pytest -m "client_scale_test and nat" |     pytest -m "ax_client_scale_tests and nat" | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| import logging | import logging | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | setup_params_general_2G = { | ||||||
|     "mode": "NAT", |     "mode": "NAT", | ||||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="Open Security") | @allure.suite(suite_name="Open Security") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @allure.sub_suite(sub_suite_name="NAT Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | |||||||
| @pytest.mark.twog | @pytest.mark.twog | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityNATMode2G(object): | class TestWifiCapacityNATMode2G(object): | ||||||
|     """ Client Scale Test NAT mode |     """ AX Client Scale Test NAT mode | ||||||
|         pytest -m "client_scale_tests and nat and open and twog" |         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") |     @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") |     @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, |     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): |                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and twog and tcp_download" |             pytest -m "ax_client_scale_tests and nat and open and twog and tcp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -66,8 +66,8 @@ class TestWifiCapacityNATMode2G(object): | |||||||
|     @allure.title("Test for UDP Download 2.4 GHz") |     @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, |     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): |                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and twog and udp_download" |             pytest -m "ax_client_scale_tests and nat and open and twog and udp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and twog and tcp_bidirectional" |             pytest -m "ax_client_scale_tests and nat and open and twog and tcp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and twog and udp_bidirectional" |             pytest -m "ax_client_scale_tests and nat and open and twog and udp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                     get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and twog and tcp_upload" |             pytest -m "ax_client_scale_tests and nat and open and twog and tcp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                     get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and twog and udp_upload" |             pytest -m "ax_client_scale_tests and nat and open and twog and udp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} |         profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -170,8 +170,8 @@ setup_params_general_5G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="Open Security") | @allure.suite(suite_name="Open Security") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @allure.sub_suite(sub_suite_name="NAT Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -185,8 +185,8 @@ setup_params_general_5G = { | |||||||
| @pytest.mark.fiveg | @pytest.mark.fiveg | ||||||
| @pytest.mark.fiveg_band | @pytest.mark.fiveg_band | ||||||
| class TestWifiCapacityNATMode5G(object): | class TestWifiCapacityNATMode5G(object): | ||||||
|     """ Client Scale Test NAT mode |     """ AX Client Scale Test NAT mode | ||||||
|         pytest -m "client_scale_tests and nat and open and fiveg" |         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") |     @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, |     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, |                                     get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and fiveg and tcp_download" |             pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                     get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and fiveg and udp_download" |             pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_download" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and fiveg and tcp_bidirectional" |             pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and fiveg and udp_bidirectional" |             pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_bidirectional" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                     get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and fiveg and udp_upload" |             pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                     get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and open and fiveg and tcp_upload" |             pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_upload" | ||||||
|         """ |         """ | ||||||
|         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} |         profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -306,4 +306,4 @@ class TestWifiCapacityNATMode5G(object): | |||||||
|                                        upload_rate="1Gbps", protocol="TCP", duration="60000", |                                        upload_rate="1Gbps", protocol="TCP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||||
|                                        num_stations={"5G": max_stations}) |                                        num_stations={"5G": max_stations}) | ||||||
|         assert True |         assert True | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|     Performance Test: Client Scale Test : BRIDGE Mode |     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||||
|     pytest -m "client_scale_test and BRIDGE" |     pytest -m "ax_client_scale_tests and BRIDGE" | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| import logging | import logging | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | setup_params_general_2G = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
| @@ -17,13 +17,32 @@ setup_params_general_2G = { | |||||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} |             {"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 |     "radius": False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -37,18 +56,19 @@ setup_params_general_2G = { | |||||||
| @pytest.mark.twog | @pytest.mark.twog | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityBRIDGEMode2G(object): | class TestWifiCapacityBRIDGEMode2G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and wpa2_personal and twog" |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3928", name="WIFI-3928") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Download 2.4 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3930", name="WIFI-3930") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Download 2.4 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Upload 2.4 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Upload 2.4 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -167,13 +190,32 @@ setup_params_general_5G = { | |||||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} |             {"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 |     "radius": False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -187,19 +229,20 @@ setup_params_general_5G = { | |||||||
| @pytest.mark.fiveg | @pytest.mark.fiveg | ||||||
| @pytest.mark.fiveg_band | @pytest.mark.fiveg_band | ||||||
| class TestWifiCapacityBRIDGEMode5G(object): | class TestWifiCapacityBRIDGEMode5G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg" |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3929", name="WIFI-3929") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Download 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3931", name="WIFI-3931") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Download 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX  Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -274,12 +318,13 @@ class TestWifiCapacityBRIDGEMode5G(object): | |||||||
| 
 | 
 | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Upload 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -293,12 +338,13 @@ class TestWifiCapacityBRIDGEMode5G(object): | |||||||
| 
 | 
 | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Upload 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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"} |             {"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 |     "radius": False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -340,18 +405,19 @@ setup_params_general_dual = { | |||||||
| @pytest.mark.dual_band | @pytest.mark.dual_band | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityBRIDGEModeDual(object): | class TestWifiCapacityBRIDGEModeDual(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band" |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3926", name="WIFI-3926") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Download 2.4 GHz and 5 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3927", name="WIFI-3927") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Download 2.4 GHz and 5 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Upload 2.4 GHz and 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Upload 2.4 GHz and 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                        max_stations): |                                        max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -460,4 +529,4 @@ class TestWifiCapacityBRIDGEModeDual(object): | |||||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", |                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}) |                                        num_stations={"2G": max_stations, "5G": max_stations}) | ||||||
|         assert True |         assert True | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|     Performance Test: Client Scale Test : NAT Mode |     Performance Test: AX Client Scale Test : NAT Mode | ||||||
|     pytest -m "client_scale_test and nat" |     pytest -m "ax_client_scale_tests and nat" | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| import logging | import logging | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | setup_params_general_2G = { | ||||||
|     "mode": "NAT", |     "mode": "NAT", | ||||||
| @@ -17,13 +17,32 @@ setup_params_general_2G = { | |||||||
|             {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} |             {"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 |     "radius": False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @allure.sub_suite(sub_suite_name="NAT Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -37,18 +56,19 @@ setup_params_general_2G = { | |||||||
| @pytest.mark.twog | @pytest.mark.twog | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityNATMode2G(object): | class TestWifiCapacityNATMode2G(object): | ||||||
|     """ Client Scale Test NAT mode |     """ AX Client Scale Test NAT mode | ||||||
|         pytest -m "client_scale_tests and nat and wpa2_personal and twog" |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3928", name="WIFI-3928") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Download 2.4 GHz") |     @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, |     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): |                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3930", name="WIFI-3930") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Download 2.4 GHz") |     @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, |     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): |                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Upload 2.4 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Upload 2.4 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -167,13 +190,32 @@ setup_params_general_5G = { | |||||||
|             {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} |             {"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 |     "radius": False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @allure.sub_suite(sub_suite_name="NAT Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -187,19 +229,20 @@ setup_params_general_5G = { | |||||||
| @pytest.mark.fiveg | @pytest.mark.fiveg | ||||||
| @pytest.mark.fiveg_band | @pytest.mark.fiveg_band | ||||||
| class TestWifiCapacityNATMode5G(object): | class TestWifiCapacityNATMode5G(object): | ||||||
|     """ Client Scale Test NAT mode |     """ AX Client Scale Test NAT mode | ||||||
|         pytest -m "client_scale_tests and nat and wpa2_personal and fiveg" |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3929", name="WIFI-3929") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Download 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3931", name="WIFI-3931") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Download 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -274,12 +318,13 @@ class TestWifiCapacityNATMode5G(object): | |||||||
| 
 | 
 | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Upload 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -293,12 +338,13 @@ class TestWifiCapacityNATMode5G(object): | |||||||
| 
 | 
 | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Upload 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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"} |             {"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 |     "radius": False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @allure.sub_suite(sub_suite_name="NAT Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -340,18 +405,19 @@ setup_params_general_dual = { | |||||||
| @pytest.mark.dual_band | @pytest.mark.dual_band | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityNATModeDual(object): | class TestWifiCapacityNATModeDual(object): | ||||||
|     """ Client Scale Test NAT mode |     """ AX Client Scale Test NAT mode | ||||||
|         pytest -m "client_scale_tests and nat and wpa2_personal and dual_band" |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3926", name="WIFI-3926") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Download 2.4 GHz and 5 GHz") |     @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, |     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): |                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3927", name="WIFI-3927") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Download 2.4 GHz and 5 GHz") |     @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, |     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): |                                     get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                max_stations): |                                                max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Upload 2.4 GHz and 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128") | ||||||
|     @pytest.mark.wpa2_personal |     @pytest.mark.wpa2_personal | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Upload 2.4 GHz and 5 GHz") |     @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, |     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_test_device_logs, num_stations, setup_configuration, | ||||||
|                                     max_stations): |                                     max_stations): | ||||||
|         """ Client Scale Test NAT mode |         """ AX Client Scale Test NAT mode | ||||||
|             pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -460,4 +529,4 @@ class TestWifiCapacityNATModeDual(object): | |||||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", |                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||||
|                                        num_stations={"2G": max_stations, "5G": max_stations}) |                                        num_stations={"2G": max_stations, "5G": max_stations}) | ||||||
|         assert True |         assert True | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|     Performance Test: Client Scale Test : BRIDGE Mode |     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||||
|     pytest -m "client_scale_tests and bridge" |     pytest -m "ax_client_scale_tests and bridge" | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| import os | import os | ||||||
| import pytest | import pytest | ||||||
| import allure | 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 = { | setup_params_general_2G = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA3 Personal Security") | @allure.suite(suite_name="WPA3 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | |||||||
| @pytest.mark.twog | @pytest.mark.twog | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityBRIDGEMode2G(object): | class TestWifiCapacityBRIDGEMode2G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and wpa3_personal and twog" |         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") |     @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") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -65,8 +65,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | |||||||
|     @allure.title("Test for TCP Upload 2.4 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -83,8 +83,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | |||||||
|     @allure.title("Test for UDP Upload 2.4 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -102,8 +102,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | |||||||
|     @allure.title("Test for UDP Download 2.4 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|                     pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_download" |                     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"} |         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -168,8 +168,8 @@ setup_params_general_5G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA3 Personal Security") | @allure.suite(suite_name="WPA3 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -183,8 +183,8 @@ setup_params_general_5G = { | |||||||
| @pytest.mark.fiveg | @pytest.mark.fiveg | ||||||
| @pytest.mark.fiveg_band | @pytest.mark.fiveg_band | ||||||
| class TestWifiCapacityBRIDGEMode5G(object): | class TestWifiCapacityBRIDGEMode5G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|            client_scale_tests and bridge and wpa3_personal and fiveg" |            ax_client_scale_tests and bridge and wpa3_personal and fiveg" | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3653", name="WIFI-3653") |     @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") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -212,8 +212,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | |||||||
|     @allure.title("Test for UDP Download 5 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -270,8 +270,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | |||||||
|     @allure.title("Test for TCP Upload 5 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -288,8 +288,8 @@ class TestWifiCapacityBRIDGEMode5G(object): | |||||||
|     @allure.title("Test for UDP Upload 5 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -310,13 +310,32 @@ setup_params_general_6G = { | |||||||
|             {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} |             {"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 |     "radius": False | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA3 Personal Security") | @allure.suite(suite_name="WPA3 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -328,20 +347,20 @@ setup_params_general_6G = { | |||||||
| @pytest.mark.usefixtures("setup_configuration") | @pytest.mark.usefixtures("setup_configuration") | ||||||
| @pytest.mark.wpa3_personal | @pytest.mark.wpa3_personal | ||||||
| @pytest.mark.twog | @pytest.mark.twog | ||||||
| @pytest.mark.performance |  | ||||||
| class TestWifiCapacityBRIDGEMode6G(object): | class TestWifiCapacityBRIDGEMode6G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|            client_scale_tests and bridge and wpa3_personal and sixg" |            ax_client_scale_tests and bridge and wpa3_personal and sixg" | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     @pytest.mark.wpa3_personal |     @pytest.mark.wpa3_personal | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|     @pytest.mark.sixg |     @pytest.mark.sixg | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Download 6 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -357,11 +376,12 @@ class TestWifiCapacityBRIDGEMode6G(object): | |||||||
|     @pytest.mark.wpa3_personal |     @pytest.mark.wpa3_personal | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|     @pytest.mark.sixg |     @pytest.mark.sixg | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Download 6 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                   get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                   max_stations): |                                                   max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -418,11 +438,12 @@ class TestWifiCapacityBRIDGEMode6G(object): | |||||||
|     @pytest.mark.wpa3_personal |     @pytest.mark.wpa3_personal | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|     @pytest.mark.sixg |     @pytest.mark.sixg | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for TCP Upload 6 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -437,11 +458,12 @@ class TestWifiCapacityBRIDGEMode6G(object): | |||||||
|     @pytest.mark.wpa3_personal |     @pytest.mark.wpa3_personal | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|     @pytest.mark.sixg |     @pytest.mark.sixg | ||||||
|  |     @pytest.mark.performance | ||||||
|     @allure.title("Test for UDP Upload 6 GHz") |     @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, |     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): |                                        get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -451,4 +473,4 @@ class TestWifiCapacityBRIDGEMode6G(object): | |||||||
|                                        upload_rate="1Gbps", protocol="UDP", duration="60000", |                                        upload_rate="1Gbps", protocol="UDP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||||
|                                        num_stations={"6G": max_stations}) |                                        num_stations={"6G": max_stations}) | ||||||
|         assert True |         assert True | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|     Performance Test: Client Scale Test : BRIDGE Mode |     Performance Test: AX Client Scale Test : BRIDGE Mode | ||||||
|     pytest -m "client_scale_test and BRIDGE" |     pytest -m "ax_client_scale_tests and BRIDGE" | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| import logging | import logging | ||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | setup_params_general_2G = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
| @@ -22,8 +22,8 @@ setup_params_general_2G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="WPA Personal Security") | @allure.suite(suite_name="WPA Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -37,8 +37,8 @@ setup_params_general_2G = { | |||||||
| @pytest.mark.twog | @pytest.mark.twog | ||||||
| @pytest.mark.twog_band | @pytest.mark.twog_band | ||||||
| class TestWifiCapacityBRIDGEMode2G(object): | class TestWifiCapacityBRIDGEMode2G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and wpa_personal and twog" |         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") |     @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") |     @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, |     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): |                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -66,8 +66,8 @@ class TestWifiCapacityBRIDGEMode2G(object): | |||||||
|     @allure.title("Test for UDP Download 2.4 GHz") |     @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, |     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): |                                       get_test_device_logs, num_stations, setup_configuration, max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -170,8 +170,8 @@ setup_params_general_5G = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @allure.feature("Client Scale Tests") | @allure.feature("AX Client Scale Tests") | ||||||
| @allure.parent_suite("Client Scale Tests") | @allure.parent_suite("AX Client Scale Tests") | ||||||
| @allure.suite(suite_name="wpa Personal Security") | @allure.suite(suite_name="wpa Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @allure.sub_suite(sub_suite_name="BRIDGE Mode") | ||||||
| @pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||||
| @@ -185,8 +185,8 @@ setup_params_general_5G = { | |||||||
| @pytest.mark.fiveg | @pytest.mark.fiveg | ||||||
| @pytest.mark.fiveg_band | @pytest.mark.fiveg_band | ||||||
| class TestWifiCapacityBRIDGEMode5G(object): | class TestWifiCapacityBRIDGEMode5G(object): | ||||||
|     """ Client Scale Test BRIDGE mode |     """ AX Client Scale Test BRIDGE mode | ||||||
|         pytest -m "client_scale_tests and bridge and wpa_personal and fiveg" |         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") |     @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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_download" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                                  get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                                  max_stations): |                                                  max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_bidirectional" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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, |     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, |                                       get_test_device_logs, num_stations, setup_configuration, | ||||||
|                                       max_stations): |                                       max_stations): | ||||||
|         """ Client Scale Test BRIDGE mode |         """ AX Client Scale Test BRIDGE mode | ||||||
|             pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_upload" |             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"} |         profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         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" |     pytest -m "dataplane_tests wpa2_personal security and bridge" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import logging | ||||||
| import os | import os | ||||||
| import pytest | import pytest | ||||||
| import allure | import allure | ||||||
| @@ -11,28 +12,146 @@ import allure | |||||||
| pytestmark = [pytest.mark.dataplane_tests, | pytestmark = [pytest.mark.dataplane_tests, | ||||||
|               pytest.mark.bridge, pytest.mark.wpa2_personal, pytest.mark.performance] |               pytest.mark.bridge, pytest.mark.wpa2_personal, pytest.mark.performance] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general1 = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
|     "ssid_modes": { |     "ssid_modes": { | ||||||
|         "wpa2_personal": [ |         "wpa2_personal": [ | ||||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, |             {"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_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 |     "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.feature("Dataplane Tests") | ||||||
| @allure.parent_suite("Dataplane Tests") | @allure.parent_suite("Dataplane Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @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): | class TestDataplaneThroughputBRIDGE(object): | ||||||
|     """Dataplane THroughput BRIDGE Mode |     """Dataplane THroughput BRIDGE Mode | ||||||
|        pytest -m "dataplane_tests and wpa2_personal and bridge" |        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, |     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_test_device_logs, client_type, | ||||||
|                                                   get_target_object, |                                                   get_target_object, | ||||||
|                                                   num_stations, setup_configuration): |                                                   num_stations, initialize_testbed): | ||||||
|         """Dataplane THroughput BRIDGE Mode. |         """Dataplane THroughput BRIDGE Mode. | ||||||
|            pytest -m "dataplane_tests and bridge and wpa2_personal and twog" |            pytest -m "dataplane_tests and bridge and wpa2_personal and twog" | ||||||
|         """ |         """ | ||||||
| @@ -55,14 +174,17 @@ class TestDataplaneThroughputBRIDGE(object): | |||||||
|         security = "wpa2" |         security = "wpa2" | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
|         band = "twog" |         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" |         influx_tags = "dataplane-tcp-udp-bridge-wpa2_personal-2.4G" | ||||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security, |         get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security, | ||||||
|                                                    num_sta=1, mode=mode, |                                                    num_sta=1, mode=mode, | ||||||
|                                                    band=band, |                                                    band=band, | ||||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_2G_BRIDGE", |                                                    instance_name="TIP_DPT_DPT_WPA2_2G_BRIDGE", | ||||||
|                                                    influx_tags=influx_tags, move_to_influx=False, |                                                    influx_tags=influx_tags, move_to_influx=False, | ||||||
|                                                    dut_data=setup_configuration, |                                                    dut_data=dut_data, | ||||||
|                                                    client_type=client_type |                                                    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") |     @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, |     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_test_device_logs, client_type, | ||||||
|                                                   get_target_object, |                                                   get_target_object, | ||||||
|                                                   num_stations, setup_configuration): |                                                   num_stations, initialize_testbed): | ||||||
|         """Dataplane THroughput BRIDGE Mode |         """Dataplane THroughput BRIDGE Mode | ||||||
|            pytest -m "dataplane_tests and bridge and wpa2_personal and fiveg" |            pytest -m "dataplane_tests and bridge and wpa2_personal and fiveg" | ||||||
|         """ |         """ | ||||||
| @@ -82,12 +204,15 @@ class TestDataplaneThroughputBRIDGE(object): | |||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
|         band = "fiveg" |         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" |         influx_tags = "dataplane-tcp-udp-bridge-wpa2_personal-5G" | ||||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security, |         get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security, | ||||||
|                                                    num_sta=1, mode=mode, |                                                    num_sta=1, mode=mode, | ||||||
|                                                    band=band, |                                                    band=band, | ||||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_5G_BRIDGE", |                                                    instance_name="TIP_DPT_DPT_WPA2_5G_BRIDGE", | ||||||
|                                                    influx_tags=influx_tags, move_to_influx=False, |                                                    influx_tags=influx_tags, move_to_influx=False, | ||||||
|                                                    dut_data=setup_configuration, |                                                    dut_data=dut_data, | ||||||
|                                                    client_type=client_type |                                                    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" |     pytest -m "dataplane_tests wpa2_personal security and nat" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import logging | ||||||
| import os | import os | ||||||
| import pytest | import pytest | ||||||
| import allure | import allure | ||||||
| @@ -11,28 +12,148 @@ import allure | |||||||
| pytestmark = [pytest.mark.dataplane_tests, | pytestmark = [pytest.mark.dataplane_tests, | ||||||
|               pytest.mark.nat, pytest.mark.wpa2_personal, pytest.mark.performance] |               pytest.mark.nat, pytest.mark.wpa2_personal, pytest.mark.performance] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general1 = { | ||||||
|     "mode": "NAT", |     "mode": "NAT", | ||||||
|     "ssid_modes": { |     "ssid_modes": { | ||||||
|         "wpa2_personal": [ |         "wpa2_personal": [ | ||||||
|             {"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"}, |             {"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_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": "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 |     "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.feature("Dataplane Tests") | ||||||
| @allure.parent_suite("Dataplane Tests") | @allure.parent_suite("Dataplane Tests") | ||||||
| @allure.suite(suite_name="WPA2 Personal Security") | @allure.suite(suite_name="WPA2 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @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): | class TestDataplaneThroughputNAT(object): | ||||||
|     """Dataplane THroughput NAT Mode |     """Dataplane THroughput NAT Mode | ||||||
|        pytest -m "dataplane_tests and wpa2_personal and nat" |        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, |     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_test_device_logs, client_type, | ||||||
|                                                get_target_object, |                                                get_target_object, | ||||||
|                                                num_stations, setup_configuration): |                                                num_stations, initialize_testbed): | ||||||
|         """Dataplane THroughput NAT Mode. |         """Dataplane THroughput NAT Mode. | ||||||
|            pytest -m "dataplane_tests and nat and wpa2_personal and twog" |            pytest -m "dataplane_tests and nat and wpa2_personal and twog" | ||||||
|         """ |         """ | ||||||
| @@ -55,14 +176,17 @@ class TestDataplaneThroughputNAT(object): | |||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         mode = "NAT-WAN" |         mode = "NAT-WAN" | ||||||
|         band = "twog" |         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" |         influx_tags = "dataplane-tcp-udp-nat-wpa2_personal-2.4G" | ||||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, |         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||||
|                                                    num_sta=1, mode=mode, |                                                    num_sta=1, mode=mode, | ||||||
|                                                    band=band, |                                                    band=band, | ||||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_2G_NAT", |                                                    instance_name="TIP_DPT_DPT_WPA2_2G_NAT", | ||||||
|                                                    influx_tags=influx_tags, move_to_influx=False, |                                                    influx_tags=influx_tags, move_to_influx=False, | ||||||
|                                                    dut_data=setup_configuration, |                                                    dut_data=dut_data, | ||||||
|                                                    client_type=client_type |                                                    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") |     @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, |     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_test_device_logs, client_type, | ||||||
|                                                get_target_object, |                                                get_target_object, | ||||||
|                                                num_stations, setup_configuration): |                                                num_stations, initialize_testbed): | ||||||
|         """Dataplane THroughput NAT Mode |         """Dataplane THroughput NAT Mode | ||||||
|            pytest -m "dataplane_tests and nat and wpa2_personal and fiveg" |            pytest -m "dataplane_tests and nat and wpa2_personal and fiveg" | ||||||
|         """ |         """ | ||||||
| @@ -82,12 +206,15 @@ class TestDataplaneThroughputNAT(object): | |||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         mode = "NAT-WAN" |         mode = "NAT-WAN" | ||||||
|         band = "fiveg" |         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" |         influx_tags = "dataplane-tcp-udp-nat-wpa2_personal-5G" | ||||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, |         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||||
|                                                    num_sta=1, mode=mode, |                                                    num_sta=1, mode=mode, | ||||||
|                                                    band=band, |                                                    band=band, | ||||||
|                                                    instance_name="TIP_DPT_DPT_WPA2_5G_NAT", |                                                    instance_name="TIP_DPT_DPT_WPA2_5G_NAT", | ||||||
|                                                    influx_tags=influx_tags, move_to_influx=False, |                                                    influx_tags=influx_tags, move_to_influx=False, | ||||||
|                                                    dut_data=setup_configuration, |                                                    dut_data=dut_data, | ||||||
|                                                    client_type=client_type |                                                    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" |     pytest -m "dataplane_tests wpa3_personal security and bridge" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import logging | ||||||
| import os | import os | ||||||
| import pytest | import pytest | ||||||
| import allure | import allure | ||||||
| @@ -11,7 +12,7 @@ import allure | |||||||
| pytestmark = [pytest.mark.dataplane_tests, | pytestmark = [pytest.mark.dataplane_tests, | ||||||
|               pytest.mark.bridge, pytest.mark.wpa3_personal] |               pytest.mark.bridge, pytest.mark.wpa3_personal] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general1 = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
|     "ssid_modes": { |     "ssid_modes": { | ||||||
|         "wpa3_personal": [ |         "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_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "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 |     "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.feature("Dataplane Tests") | ||||||
| @allure.parent_suite("Dataplane Tests") | @allure.parent_suite("Dataplane Tests") | ||||||
| @allure.suite(suite_name="WPA3 Personal Security") | @allure.suite(suite_name="WPA3 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="BRIDGE Mode") | @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): | class TestDataplaneThroughputBRIDGE(object): | ||||||
|     """Dataplane THroughput BRIDGE Mode |     """Dataplane THroughput BRIDGE Mode | ||||||
|        pytest -m "dataplane_tests and wpa3_personal and bridge" |        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, |     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_test_device_logs, client_type, | ||||||
|                                                   get_target_object, |                                                   get_target_object, | ||||||
|                                                   num_stations, setup_configuration): |                                                   num_stations, initialize_testbed): | ||||||
|         """Dataplane THroughput BRIDGE Mode |         """Dataplane THroughput BRIDGE Mode | ||||||
|            pytest -m "dataplane_tests and bridge and wpa3_personal and sixg" |            pytest -m "dataplane_tests and bridge and wpa3_personal and sixg" | ||||||
|         """ |         """ | ||||||
| @@ -112,12 +232,15 @@ class TestDataplaneThroughputBRIDGE(object): | |||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
|         band = "sixg" |         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" |         influx_tags = "dataplane-tcp-udp-bridge-wpa3_personal-6G" | ||||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, |         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||||
|                                                    num_sta=num_stations, mode=mode, |                                                    num_sta=num_stations, mode=mode, | ||||||
|                                                    band=band, |                                                    band=band, | ||||||
|                                                    instance_name="TIP_DPT_DPT_WPA_6G_BRIDGE", |                                                    instance_name="TIP_DPT_DPT_WPA_6G_BRIDGE", | ||||||
|                                                    influx_tags=influx_tags, move_to_influx=False, |                                                    influx_tags=influx_tags, move_to_influx=False, | ||||||
|                                                    dut_data=setup_configuration, |                                                    dut_data=dut_data, | ||||||
|                                                    client_type=client_type |                                                    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" |     pytest -m "dataplane_tests wpa3_personal security and nat" | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import logging | ||||||
| import os | import os | ||||||
| import pytest | import pytest | ||||||
| import allure | import allure | ||||||
| @@ -11,7 +12,7 @@ import allure | |||||||
| pytestmark = [pytest.mark.dataplane_tests, | pytestmark = [pytest.mark.dataplane_tests, | ||||||
|               pytest.mark.nat, pytest.mark.wpa3_personal] |               pytest.mark.nat, pytest.mark.wpa3_personal] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general1 = { | ||||||
|     "mode": "NAT", |     "mode": "NAT", | ||||||
|     "ssid_modes": { |     "ssid_modes": { | ||||||
|         "wpa3_personal": [ |         "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_5g", "appliedRadios": ["5G"], "security_key": "something"}, | ||||||
|             {"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "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 |     "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.feature("Dataplane Tests") | ||||||
| @allure.parent_suite("Dataplane Tests") | @allure.parent_suite("Dataplane Tests") | ||||||
| @allure.suite(suite_name="WPA3 Personal Security") | @allure.suite(suite_name="WPA3 Personal Security") | ||||||
| @allure.sub_suite(sub_suite_name="NAT Mode") | @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): | class TestDataplaneThroughputNAT(object): | ||||||
|     """Dataplane THroughput NAT Mode |     """Dataplane THroughput NAT Mode | ||||||
|        pytest -m "dataplane_tests and wpa3_personal and nat" |        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, |     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_test_device_logs, client_type, | ||||||
|                                                get_target_object, |                                                get_target_object, | ||||||
|                                                num_stations, setup_configuration): |                                                num_stations, initialize_testbed): | ||||||
|         """Dataplane THroughput NAT Mode |         """Dataplane THroughput NAT Mode | ||||||
|            pytest -m "dataplane_tests and nat and wpa3_personal and sixg" |            pytest -m "dataplane_tests and nat and wpa3_personal and sixg" | ||||||
|         """ |         """ | ||||||
| @@ -112,12 +233,15 @@ class TestDataplaneThroughputNAT(object): | |||||||
|         security_key = profile_data["security_key"] |         security_key = profile_data["security_key"] | ||||||
|         mode = "NAT-WAN" |         mode = "NAT-WAN" | ||||||
|         band = "sixg" |         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" |         influx_tags = "dataplane-tcp-udp-nat-wpa3_personal-6G" | ||||||
|         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, |         get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key, | ||||||
|                                                    num_sta=1, mode=mode, |                                                    num_sta=1, mode=mode, | ||||||
|                                                    band=band, |                                                    band=band, | ||||||
|                                                    instance_name="TIP_DPT_DPT_WPA3_PERSONAL_6G_NAT", |                                                    instance_name="TIP_DPT_DPT_WPA3_PERSONAL_6G_NAT", | ||||||
|                                                    influx_tags=influx_tags, move_to_influx=False, |                                                    influx_tags=influx_tags, move_to_influx=False, | ||||||
|                                                    dut_data=setup_configuration, |                                                    dut_data=dut_data, | ||||||
|                                                    client_type=client_type |                                                    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 |        Multi Band Performance Test : BRIDGE Mode | ||||||
|        pytest -m "performance and dual_band_tests and bridge" |        pytest -m "performance and multi_band_tests and bridge" | ||||||
|  |  | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import logging | ||||||
| import allure | import allure | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
| pytestmark = [pytest.mark.dual_band_tests, pytest.mark.bridge, | pytestmark = [pytest.mark.performance, pytest.mark.multi_band_tests, pytest.mark.bridge] | ||||||
|               pytest.mark.single_station_dual_band_throughput] |  | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general1 = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
|     "ssid_modes": { |     "ssid_modes": { | ||||||
|         "wpa3_personal": [ |         "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 |     "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.wifi5 | ||||||
| @pytest.mark.wifi6 | @pytest.mark.wifi6 | ||||||
| @pytest.mark.parametrize( | @pytest.mark.wifi7 | ||||||
|     'setup_configuration', | @allure.parent_suite("Multi Band Tests") | ||||||
|     [setup_params_general], | @allure.suite("Multi Band Tests: Bridge mode") | ||||||
|     indirect=True, |  | ||||||
|     scope="class" |  | ||||||
| ) |  | ||||||
| @allure.parent_suite("Dual Band Tests") |  | ||||||
| @allure.suite("Dual Band Tests: Bridge mode") |  | ||||||
| @allure.sub_suite("wpa3_personal security") | @allure.sub_suite("wpa3_personal security") | ||||||
| @allure.feature("Dual band performance test") | @allure.feature("Multi band performance test") | ||||||
| @pytest.mark.usefixtures("setup_configuration") | class TestWpa3MultibandPerformanceBridge(object): | ||||||
| class TestWpa3DualbandPerformanceBridge(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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728") | ||||||
|     @pytest.mark.wpa3_personal |     @pytest.mark.wpa3_personal | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.fiveg |     @pytest.mark.fiveg | ||||||
|     @allure.title("Test Dual Band with ApAuto test of bridge mode") |     @pytest.mark.sixg | ||||||
|     def test_client_wpa3_personal_bridge(self, get_test_library, setup_configuration, check_connectivity): |     @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 |                             Multi Band Test with wpa3_personal encryption | ||||||
|                             pytest -m "dual_band_tests and wpa3_personal" |                             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"] |         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"] |         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" |         mode = "BRIDGE" | ||||||
|         vlan = 1 |         vlan = 1 | ||||||
|         dut_5g, dut_2g = "", "" |         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" |         influx_tags = "dual-band-bridge-wpa3" | ||||||
|         for i in setup_configuration[dut_name]['ssid_data']: |         for i in dut_data[dut_name]['ssid_data']: | ||||||
|             get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) |             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": |             if get_test_library.dut_idx_mapping[str(i)][3] == "5G": | ||||||
|                 dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ |                 dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||||
|                          get_test_library.dut_idx_mapping[str(i)][4] |                          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] + ' ' + \ |                 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.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_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, |                 dut_6g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||||
|                                                     move_to_influx=False, dut_data=setup_configuration) |                          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=dut_data) | ||||||
|  |  | ||||||
|         assert True |         assert True | ||||||
|   | |||||||
| @@ -1,64 +1,192 @@ | |||||||
| """ | """ | ||||||
|        Dual Band Performance Test : NAT Mode |        Multi Band Performance Test : NAT Mode | ||||||
|        pytest -m "performance and dual_band_tests and nat" |        pytest -m "performance and multi_band_tests and nat" | ||||||
|  |  | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  | import logging | ||||||
| import allure | import allure | ||||||
| import pytest | 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", |     "mode": "NAT", | ||||||
|     "ssid_modes": { |     "ssid_modes": { | ||||||
|         "wpa3_personal": [ |         "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 |     "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.wifi5 | ||||||
| @pytest.mark.wifi6 | @pytest.mark.wifi6 | ||||||
| @pytest.mark.parametrize( | @pytest.mark.wifi7 | ||||||
|     'setup_configuration', | @allure.parent_suite("Multi Band Tests") | ||||||
|     [setup_params_general], | @allure.suite("Multi Band Tests: NAT mode") | ||||||
|     indirect=True, |  | ||||||
|     scope="class" |  | ||||||
| ) |  | ||||||
| @allure.parent_suite("Dual Band Tests") |  | ||||||
| @allure.suite("Dual Band Tests: NAT mode") |  | ||||||
| @allure.sub_suite("wpa3_personal security") | @allure.sub_suite("wpa3_personal security") | ||||||
| @allure.feature("Dual band performance test") | @allure.feature("Multi band performance test") | ||||||
| @pytest.mark.usefixtures("setup_configuration") | class TestWpa3MultibandPerformanceNat(object): | ||||||
| class TestWpa3DualbandPerformanceNat(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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728") | ||||||
|     @pytest.mark.wpa3_personal |     @pytest.mark.wpa3_personal | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.fiveg |     @pytest.mark.fiveg | ||||||
|     @allure.title("Test Dual Band with ApAuto test of NAT mode") |     @pytest.mark.sixg | ||||||
|     def test_client_wpa3_personal_nat(self, get_test_library, setup_configuration, check_connectivity): |     @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 |                             Multi Band Test with wpa3_personal encryption | ||||||
|                             pytest -m "dual_band_tests and wpa3_personal" |                             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"] |         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"] |         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" |         mode = "NAT-WAN" | ||||||
|         vlan = 1 |         vlan = 1 | ||||||
|         dut_5g, dut_2g = "", "" |         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" |         influx_tags = "dual-band-nat-wpa3" | ||||||
|         for i in setup_configuration[dut_name]['ssid_data']: |         for i in dut_data[dut_name]['ssid_data']: | ||||||
|             get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values()) |             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": |             if get_test_library.dut_idx_mapping[str(i)][3] == "5G": | ||||||
|                 dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ |                 dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||||
|                          get_test_library.dut_idx_mapping[str(i)][4] |                          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] + ' ' + \ |                 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.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_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags, |                 dut_6g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \ | ||||||
|                                                     move_to_influx=False, dut_data=setup_configuration) |                          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=dut_data) | ||||||
|  |  | ||||||
|         assert True |         assert True | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ import allure | |||||||
| import pytest | import pytest | ||||||
| import time | 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] |               pytest.mark.single_station_dual_band_throughput] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general = { | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ import os | |||||||
| import allure | import allure | ||||||
| import pytest | 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] |               pytest.mark.single_station_dual_band_throughput] | ||||||
| setup_params_general = { | setup_params_general = { | ||||||
|     "mode": "NAT", |     "mode": "NAT", | ||||||
|   | |||||||
| @@ -20,9 +20,24 @@ setup_params_general = { | |||||||
|  |  | ||||||
|                           ]}, |                           ]}, | ||||||
|     "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": { |         "6G": { | ||||||
|             'band': '6G', |             "band": "6G", | ||||||
|             'channel-width': 160} |             "channel-width": 160, | ||||||
|  |             "channel-mode": "HE", | ||||||
|  |             "channel": 33 | ||||||
|  |         } | ||||||
|     }, |     }, | ||||||
|     "radius": False |     "radius": False | ||||||
| } | } | ||||||
| @@ -61,17 +76,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | |||||||
|         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_download", mode=mode, | ||||||
|                                        download_rate="10Gbps", batch_size="1", |                                        download_rate="10Gbps", batch_size="1", | ||||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", |                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|  |  | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12395", name="WIFI-12395") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12395", name="WIFI-12395") | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|     @pytest.mark.sixg |     @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.performance | ||||||
|  |     @pytest.mark.wifi_capacity_ax_tests | ||||||
|     @allure.title("Single client UDP Download wifi capacity 160Mhz Bw") |     @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, |     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): |                                        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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_dl", mode=mode, | ||||||
|                                        download_rate="10Gbps", batch_size="1", |                                        download_rate="10Gbps", batch_size="1", | ||||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", |                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|  |  | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12397", name="WIFI-12397") |     @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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12393", name="WIFI-12393") | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|     @pytest.mark.sixg |     @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.performance | ||||||
|  |     @pytest.mark.wifi_capacity_ax_tests | ||||||
|     @allure.title("Single client TCP Upload wifi capacity 160Mhz Bw") |     @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, |     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): |                                        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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_ul", mode=mode, | ||||||
|                                        download_rate="56Kbps", batch_size="1", |                                        download_rate="56Kbps", batch_size="1", | ||||||
|                                        upload_rate="10Gbps", protocol="TCP", duration="60000", |                                        upload_rate="10Gbps", protocol="TCP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|  |  | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12392", name="WIFI-12392") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12392", name="WIFI-12392") | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|     @pytest.mark.sixg |     @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.performance | ||||||
|  |     @pytest.mark.wifi_capacity_ax_tests | ||||||
|     @allure.title("Single client UDP Upload wifi capacity 160Mhz Bw") |     @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, |     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): |                                        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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_ul", mode=mode, | ||||||
|                                        download_rate="56Kbps", batch_size="1", |                                        download_rate="56Kbps", batch_size="1", | ||||||
|                                        upload_rate="10Gbps", protocol="UDP", duration="60000", |                                        upload_rate="10Gbps", protocol="UDP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|   | |||||||
| @@ -19,9 +19,24 @@ setup_params_general = { | |||||||
|             {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} |             {"ssid_name": "ssid_wpa3_6g_channel_auto", "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": { |         "6G": { | ||||||
|             'band': '6G', |             "band": "6G", | ||||||
|             'channel-width': 160} |             "channel-width": 160, | ||||||
|  |             "channel-mode": "HE", | ||||||
|  |             "channel": 33 | ||||||
|  |         } | ||||||
|     }, |     }, | ||||||
|     "radius": False |     "radius": False | ||||||
| } | } | ||||||
| @@ -45,7 +60,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object): | |||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12400", name="WIFI-12400") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12400", name="WIFI-12400") | ||||||
|     @pytest.mark.tcp_download |     @pytest.mark.tcp_download | ||||||
|     @pytest.mark.sixg |     @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.performance | ||||||
|  |     @pytest.mark.wifi_capacity_ax_tests | ||||||
|     @allure.title("Single client TCP Download wifi capacity 160Mhz Bw") |     @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, |     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): |                                     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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "NAT-WAN" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_download", mode=mode, | ||||||
|                                        download_rate="10Gbps", batch_size="1", |                                        download_rate="10Gbps", batch_size="1", | ||||||
|                                        upload_rate="56Kbps", protocol="TCP", duration="60000", |                                        upload_rate="56Kbps", protocol="TCP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|  |  | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12401", name="WIFI-12401") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12401", name="WIFI-12401") | ||||||
|     @pytest.mark.udp_download |     @pytest.mark.udp_download | ||||||
|     @pytest.mark.sixg |     @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.performance | ||||||
|  |     @pytest.mark.wifi_capacity_ax_tests | ||||||
|     @allure.title("Single client UDP Download wifi capacity 160Mhz Bw") |     @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, |     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): |                                     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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "NAT-WAN" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_dl", mode=mode, | ||||||
|                                        download_rate="10Gbps", batch_size="1", |                                        download_rate="10Gbps", batch_size="1", | ||||||
|                                        upload_rate="56Kbps", protocol="UDP", duration="60000", |                                        upload_rate="56Kbps", protocol="UDP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|  |  | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12403", name="WIFI-12403") |     @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") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12399", name="WIFI-12399") | ||||||
|     @pytest.mark.tcp_upload |     @pytest.mark.tcp_upload | ||||||
|     @pytest.mark.sixg |     @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.performance | ||||||
|  |     @pytest.mark.wifi_capacity_ax_tests | ||||||
|     @allure.title("Single client TCP Upload wifi capacity 160Mhz Bw") |     @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, |     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): |                                     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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "NAT-WAN" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_ul", mode=mode, | ||||||
|                                        download_rate="56Kbps", batch_size="1", |                                        download_rate="56Kbps", batch_size="1", | ||||||
|                                        upload_rate="10Gbps", protocol="TCP", duration="60000", |                                        upload_rate="10Gbps", protocol="TCP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|  |  | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12398", name="WIFI-12398") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12398", name="WIFI-12398") | ||||||
|     @pytest.mark.udp_upload |     @pytest.mark.udp_upload | ||||||
|     @pytest.mark.sixg |     @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.performance | ||||||
|  |     @pytest.mark.wifi_capacity_ax_tests | ||||||
|     @allure.title("Single client UDP Upload wifi capacity 160Mhz Bw") |     @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, |     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): |                                     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"} |         profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "NAT-WAN" |         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, |         get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_ul", mode=mode, | ||||||
|                                        download_rate="56Kbps", batch_size="1", |                                        download_rate="56Kbps", batch_size="1", | ||||||
|                                        upload_rate="10Gbps", protocol="UDP", duration="60000", |                                        upload_rate="10Gbps", protocol="UDP", duration="60000", | ||||||
|                                        move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, |                                        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 |         assert True | ||||||
|   | |||||||
| @@ -377,9 +377,9 @@ | |||||||
|         "TCP": 3000, |         "TCP": 3000, | ||||||
|         "UDP": 3000 |         "UDP": 3000 | ||||||
|       }, |       }, | ||||||
|       "6G 4x4 160MHz": { |       "6G 2x2 160MHz": { | ||||||
|         "TCP": null, |         "TCP": 2000, | ||||||
|         "UDP": null |         "UDP": 2000 | ||||||
|       } |       } | ||||||
|      } |      } | ||||||
|     }, |     }, | ||||||
| @@ -478,9 +478,9 @@ | |||||||
|         "TCP": 3000, |         "TCP": 3000, | ||||||
|         "UDP": 3000 |         "UDP": 3000 | ||||||
|       }, |       }, | ||||||
|       "6G 4x4 160MHz": { |       "6G 2x2 160MHz": { | ||||||
|         "TCP": null, |         "TCP": 2000, | ||||||
|         "UDP": null |         "UDP": 2000 | ||||||
|       } |       } | ||||||
|      } |      } | ||||||
|     }, |     }, | ||||||
| @@ -548,9 +548,9 @@ | |||||||
|         "TCP": 3000, |         "TCP": 3000, | ||||||
|         "UDP": 3000 |         "UDP": 3000 | ||||||
|       }, |       }, | ||||||
|       "6G 4x4 160MHz": { |       "6G 2x2 160MHz": { | ||||||
|         "TCP": null, |         "TCP": 2000, | ||||||
|         "UDP": null |         "UDP": 2000 | ||||||
|       } |       } | ||||||
|      } |      } | ||||||
|     }, |     }, | ||||||
| @@ -643,6 +643,72 @@ | |||||||
|         "UDP": null |         "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"}], |             {"ssid_name": "tls_ssid_wpa2_eap_5g", "appliedRadios": ["5G"], "security_key": "something"}], | ||||||
|         "wpa3_enterprise": [ |         "wpa3_enterprise": [ | ||||||
|             {"ssid_name": "tls_ssid_wpa3_eap_2g", "appliedRadios": ["2G"], "security_key": "something"}, |             {"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_5g", "appliedRadios": ["5G"], "security_key": "something"}]}, | ||||||
|             {"ssid_name": "tls_ssid_wpa3_eap_6g", "appliedRadios": ["6G"], "security_key": "something"}]}, |  | ||||||
|  |  | ||||||
|     "rf": {}, |     "rf": {}, | ||||||
|     "radius": True |     "radius": True | ||||||
| @@ -155,7 +154,7 @@ class TestBridgeModeEnterpriseTLSSuiteA(object): | |||||||
|                                     get_target_object, |                                     get_target_object, | ||||||
|                                     num_stations, setup_configuration, check_connectivity, radius_info): |                                     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" |         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.wpa_wpa2_enterprise_mixed | ||||||
|     @pytest.mark.twog |     @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") |     @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, |     def test_wpa_wpa2_enterprise_2g(self, get_test_library, get_dut_logs_per_test_case, | ||||||
|                                     get_test_device_logs, |                                     get_test_device_logs, | ||||||
|                                     get_target_object, |                                     get_target_object, | ||||||
|                                     num_stations, setup_configuration, check_connectivity, radius_info): |                                     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" |           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"]} |         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.wpa_wpa2_enterprise_mixed | ||||||
|     @pytest.mark.fiveg |     @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") |     @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, |     def test_wpa_wpa2_enterprise_5g(self, get_test_library, get_dut_logs_per_test_case, | ||||||
|                                     get_test_device_logs, |                                     get_test_device_logs, | ||||||
|                                     get_target_object, |                                     get_target_object, | ||||||
|                                     num_stations, setup_configuration, check_connectivity, radius_info): |                                     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" |                  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"]} |         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.wpa3_enterprise_mixed | ||||||
|     @pytest.mark.twog |     @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") |     @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, |     def test_wpa3_enterprise_mixed_2g(self, get_test_library, get_dut_logs_per_test_case, | ||||||
|                                       get_test_device_logs, |                                       get_test_device_logs, | ||||||
|                                       get_target_object, |                                       get_target_object, | ||||||
|                                       num_stations, setup_configuration, check_connectivity, radius_info): |                                       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" |                          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"]} |         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.wpa3_enterprise_mixed | ||||||
|     @pytest.mark.fiveg |     @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") |     @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, |     def test_wpa3_enterprise_mixed_5g(self, get_test_library, get_dut_logs_per_test_case, | ||||||
|                                       get_test_device_logs, |                                       get_test_device_logs, | ||||||
|                                       get_target_object, |                                       get_target_object, | ||||||
|                                       num_stations, setup_configuration, check_connectivity, radius_info): |                                       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" |          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"]} |         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 |      pytest -m "multipsk and wpa2_personal and twog" -s -vvv --skip-testrail --testbed=basic-03 --alluredir=../allure_reports | ||||||
|         wifi-3493 |         wifi-3493 | ||||||
| """ | """ | ||||||
|  | import json | ||||||
|  | import logging | ||||||
|  | from datetime import time | ||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | import pytest | ||||||
|  | import requests | ||||||
|  |  | ||||||
| pytestmark = [pytest.mark.multi_psk_tests, | pytestmark = [pytest.mark.multi_psk_tests, | ||||||
|               pytest.mark.ow_regression_lf, |  | ||||||
|               pytest.mark.bridge, |               pytest.mark.bridge, | ||||||
|               pytest.mark.wpa2_personal, |               pytest.mark.wpa2_personal, | ||||||
|               pytest.mark.ow_sanity_lf, |               pytest.mark.twog, | ||||||
|               pytest.mark.twog] |               pytest.mark.ow_sanity_lf] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general = { | ||||||
|     "mode": "BRIDGE", |     "mode": "BRIDGE", | ||||||
| @@ -48,11 +52,11 @@ setup_params_general = { | |||||||
| @allure.parent_suite("MultiPsk Test") | @allure.parent_suite("MultiPsk Test") | ||||||
| @allure.suite("BRIDGE Mode") | @allure.suite("BRIDGE Mode") | ||||||
| @allure.sub_suite("WPA2 Security") | @allure.sub_suite("WPA2 Security") | ||||||
|  | @pytest.mark.ow_regression_lf | ||||||
| @pytest.mark.usefixtures("setup_configuration") | @pytest.mark.usefixtures("setup_configuration") | ||||||
| class TestMultipskBridgeWPA2(object): | class TestMultipskBridgeWPA2(object): | ||||||
|  |  | ||||||
|     @pytest.mark.vlan1 |     @pytest.mark.vlan1 | ||||||
|     @pytest.mark.ow_sanity_lf |  | ||||||
|     @pytest.mark.wpa2 |     @pytest.mark.wpa2 | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3493", name="WIFI-3493") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3493", name="WIFI-3493") | ||||||
|     @allure.title("Test for Client Connect with 1 VLAN") |     @allure.title("Test for Client Connect with 1 VLAN") | ||||||
| @@ -91,7 +95,6 @@ class TestMultipskBridgeWPA2(object): | |||||||
|         assert True |         assert True | ||||||
|  |  | ||||||
|     @pytest.mark.vlan2 |     @pytest.mark.vlan2 | ||||||
|     @pytest.mark.ow_sanity_lf |  | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10657", name="WIFI-10657") |     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10657", name="WIFI-10657") | ||||||
|     @allure.title("Test for Client Connect with 2 VLAN's") |     @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, |     def test_client_wpa2_2g_vlan2(self, get_test_library, get_dut_logs_per_test_case, | ||||||
| @@ -126,4 +129,125 @@ class TestMultipskBridgeWPA2(object): | |||||||
|         get_test_library.multi_psk_test(band=band, mpsk_data=mpsk_data, ssid=ssid, bssid="['BLANK']", |         get_test_library.multi_psk_test(band=band, mpsk_data=mpsk_data, ssid=ssid, bssid="['BLANK']", | ||||||
|                                         passkey=security_key, |                                         passkey=security_key, | ||||||
|                                         encryption=security, mode=mode, num_sta=1, dut_data=setup_configuration) |                                         encryption=security, mode=mode, num_sta=1, dut_data=setup_configuration) | ||||||
|         assert True |         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.sixg | ||||||
|     @pytest.mark.upload_download |     @pytest.mark.upload_download | ||||||
|     @pytest.mark.batch_size_125 |     @pytest.mark.batch_size_125 | ||||||
|  |     @pytest.mark.ow_sanity_lf | ||||||
|     @pytest.mark.rate_limiting_tests |     @pytest.mark.rate_limiting_tests | ||||||
|     @pytest.mark.bridge |     @pytest.mark.bridge | ||||||
|     @allure.testcase(name="WIFI-14364", |     @allure.testcase(name="WIFI-14364", | ||||||
|   | |||||||
| @@ -36,8 +36,8 @@ setup_params_general = { | |||||||
|              "appliedRadios": ["2G"], |              "appliedRadios": ["2G"], | ||||||
|              "security_key": "something", |              "security_key": "something", | ||||||
|              "rate-limit": { |              "rate-limit": { | ||||||
|                  "ingress-rate": 10, |                  "ingress-rate": 20, | ||||||
|                  "egress-rate": 10 |                  "egress-rate": 20 | ||||||
|              }, |              }, | ||||||
|              "radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA, |              "radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA, | ||||||
|              "radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA |              "radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA | ||||||
| @@ -47,8 +47,8 @@ setup_params_general = { | |||||||
|              "appliedRadios": ["5G"], |              "appliedRadios": ["5G"], | ||||||
|              "security_key": "something", |              "security_key": "something", | ||||||
|              "rate-limit": { |              "rate-limit": { | ||||||
|                  "ingress-rate": 10, |                  "ingress-rate": 20, | ||||||
|                  "egress-rate": 10 |                  "egress-rate": 20 | ||||||
|              }, |              }, | ||||||
|              "radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA, |              "radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA, | ||||||
|              "radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA |              "radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA | ||||||
| @@ -75,7 +75,6 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|  |  | ||||||
|     @pytest.mark.wpa2_enterprise |     @pytest.mark.wpa2_enterprise | ||||||
|     @pytest.mark.twog |     @pytest.mark.twog | ||||||
|     @pytest.mark.ow_sanity_lf |  | ||||||
|     @pytest.mark.twog_upload_per_ssid |     @pytest.mark.twog_upload_per_ssid | ||||||
|     @allure.title("Test for Upload per SSID 2.4 GHz") |     @allure.title("Test for Upload per SSID 2.4 GHz") | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5849", name="WIFI-5849") |     @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 | ||||||
|     @pytest.mark.twog_download_perssid_persta |     @pytest.mark.twog_download_perssid_persta | ||||||
|     @pytest.mark.ow_sanity_lf |     @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") |     @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, |     def test_radius_server_2g_download_perssid_persta(self, get_test_library, get_dut_logs_per_test_case, | ||||||
|                                                       get_test_device_logs, |                                                       get_test_device_logs, | ||||||
| @@ -314,7 +313,8 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|     @pytest.mark.wpa2_enterprise |     @pytest.mark.wpa2_enterprise | ||||||
|     @pytest.mark.fiveg |     @pytest.mark.fiveg | ||||||
|     @pytest.mark.fiveg_upload_per_ssid |     @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") |     @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, |     def test_radius_server_fiveg_per_ssid_upload(self, get_test_library, get_dut_logs_per_test_case, | ||||||
|                                                  get_test_device_logs, |                                                  get_test_device_logs, | ||||||
| @@ -334,7 +334,8 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|         band = "fiveg" |         band = "fiveg" | ||||||
|         eap = "TTLS" |         eap = "TTLS" | ||||||
|         ttls_passwd = "password" |         ttls_passwd = "password" | ||||||
|         identity = "bandwidth10m" |         identity = "user" | ||||||
|  |         configured = 5 | ||||||
|         allure.attach(name="ssid-rates", body=str(profile_data["rate-limit"])) |         allure.attach(name="ssid-rates", body=str(profile_data["rate-limit"])) | ||||||
|         get_test_library.pre_cleanup() |         get_test_library.pre_cleanup() | ||||||
|         passes, result = get_test_library.enterprise_client_connectivity_test(ssid=ssid_name, security=security, |         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 |             assert passes == "PASS", result | ||||||
|         if passes == "PASS": |         if passes == "PASS": | ||||||
|             raw_lines = [["dl_rate_sel: Total Download Rate:"], ["ul_rate_sel:  Per-Station Download Rate:"]] |             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", |                                            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, |                                            move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name, | ||||||
|                                            add_stations=False, raw_lines=raw_lines) |                                            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" | ||||||
|  |  | ||||||
|         assert True |  | ||||||
|  |  | ||||||
|     @pytest.mark.wpa2_enterprise |     @pytest.mark.wpa2_enterprise | ||||||
|     @pytest.mark.fiveg |     @pytest.mark.fiveg | ||||||
| @@ -797,8 +804,8 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|                         "appliedRadios": ["2G"], |                         "appliedRadios": ["2G"], | ||||||
|                         "security_key": "something", |                         "security_key": "something", | ||||||
|                         "rate-limit": { |                         "rate-limit": { | ||||||
|                             "ingress-rate": 10, |                             "ingress-rate": 20, | ||||||
|                             "egress-rate": 10 |                             "egress-rate": 30 | ||||||
|                         }} |                         }} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
| @@ -860,8 +867,8 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|                         "appliedRadios": ["2G"], |                         "appliedRadios": ["2G"], | ||||||
|                         "security_key": "something", |                         "security_key": "something", | ||||||
|                         "rate-limit": { |                         "rate-limit": { | ||||||
|                             "ingress-rate": 10, |                             "ingress-rate": 60, | ||||||
|                             "egress-rate": 10 |                             "egress-rate": 50 | ||||||
|                         }} |                         }} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
| @@ -923,8 +930,8 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|                         "appliedRadios": ["2G"], |                         "appliedRadios": ["2G"], | ||||||
|                         "security_key": "something", |                         "security_key": "something", | ||||||
|                         "rate-limit": { |                         "rate-limit": { | ||||||
|                             "ingress-rate": 10, |                             "ingress-rate": 60, | ||||||
|                             "egress-rate": 10 |                             "egress-rate": 50 | ||||||
|                         }} |                         }} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
| @@ -986,7 +993,7 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|                         "appliedRadios": ["2G"], |                         "appliedRadios": ["2G"], | ||||||
|                         "security_key": "something", |                         "security_key": "something", | ||||||
|                         "rate-limit": { |                         "rate-limit": { | ||||||
|                             "ingress-rate": 10, |                             "ingress-rate": 50, | ||||||
|                             "egress-rate": 10 |                             "egress-rate": 10 | ||||||
|                         }} |                         }} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -1048,7 +1055,7 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|                         "appliedRadios": ["2G"], |                         "appliedRadios": ["2G"], | ||||||
|                         "security_key": "something", |                         "security_key": "something", | ||||||
|                         "rate-limit": { |                         "rate-limit": { | ||||||
|                             "ingress-rate": 10, |                             "ingress-rate": 50, | ||||||
|                             "egress-rate": 10 |                             "egress-rate": 10 | ||||||
|                         }} |                         }} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
| @@ -1112,7 +1119,7 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|                         "security_key": "something", |                         "security_key": "something", | ||||||
|                         "rate-limit": { |                         "rate-limit": { | ||||||
|                             "ingress-rate": 10, |                             "ingress-rate": 10, | ||||||
|                             "egress-rate": 10 |                             "egress-rate": 50 | ||||||
|                         }} |                         }} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
| @@ -1175,7 +1182,7 @@ class TestRateLimitingWithRadiusBridge(object): | |||||||
|                         "security_key": "something", |                         "security_key": "something", | ||||||
|                         "rate-limit": { |                         "rate-limit": { | ||||||
|                             "ingress-rate": 10, |                             "ingress-rate": 10, | ||||||
|                             "egress-rate": 10 |                             "egress-rate": 50 | ||||||
|                         }} |                         }} | ||||||
|         ssid_name = profile_data["ssid_name"] |         ssid_name = profile_data["ssid_name"] | ||||||
|         mode = "BRIDGE" |         mode = "BRIDGE" | ||||||
| @@ -1274,6 +1281,7 @@ class TestRateLimitingWithRadiusBridgeSixg(object): | |||||||
|     @pytest.mark.wpa3_enterprise |     @pytest.mark.wpa3_enterprise | ||||||
|     @pytest.mark.sixg |     @pytest.mark.sixg | ||||||
|     @pytest.mark.sixg_upload_per_ssid |     @pytest.mark.sixg_upload_per_ssid | ||||||
|  |     @pytest.mark.ow_sanity_lf | ||||||
|     @allure.title("Test for UDP Upload per SSID 6 GHz") |     @allure.title("Test for UDP Upload per SSID 6 GHz") | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14366", name="WIFI-14366") |     @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, |     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.wpa3_enterprise | ||||||
|     @pytest.mark.sixg |     @pytest.mark.sixg | ||||||
|     @pytest.mark.sixg_download_perssid_persta |     @pytest.mark.sixg_download_perssid_persta | ||||||
|  |     @pytest.mark.ow_sanity_lf | ||||||
|     @allure.title("Test for TCP Download per Station 6GHz") |     @allure.title("Test for TCP Download per Station 6GHz") | ||||||
|     @allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14365", name="WIFI-14365") |     @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, |     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"]}], |             {"ssid_name": "ssid_wpa2_eap_5g", "appliedRadios": ["5G"]}], | ||||||
|         "wpa3_enterprise": [ |         "wpa3_enterprise": [ | ||||||
|             {"ssid_name": "ssid_wpa3_eap_2g", "appliedRadios": ["2G"]}, |             {"ssid_name": "ssid_wpa3_eap_2g", "appliedRadios": ["2G"]}, | ||||||
|             {"ssid_name": "ssid_wpa3_eap_5g", "appliedRadios": ["5G"]}, |             {"ssid_name": "ssid_wpa3_eap_5g", "appliedRadios": ["5G"]}]}, | ||||||
|             {"ssid_name": "ttls_ssid_wpa3_eap_6g", "appliedRadios": ["6G"]}]}, |  | ||||||
|  |  | ||||||
|     "rf": {}, |     "rf": {}, | ||||||
|     "radius": True |     "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", |             {"ssid_name": "ssid_wpa_wpa2_p_m_5g_vlan", "appliedRadios": ["5G"], "security_key": "something", | ||||||
|              "vlan": 100}] |              "vlan": 100}] | ||||||
|     }, |     }, | ||||||
|     "rf": {}, |     "rf": { | ||||||
|  |         "6G": { | ||||||
|  |             "band": "6G", | ||||||
|  |             "channel-mode": "EHT", | ||||||
|  |             "channel-width": 80, | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|     "radius": False |     "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 | DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA = lf_library.DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA | ||||||
|  |  | ||||||
| pytestmark = [pytest.mark.dynamic_vlan_tests, | pytestmark = [pytest.mark.dynamic_vlan_tests, | ||||||
|               pytest.mark.vlan] |               pytest.mark.vlan, pytest.mark.ow_sanity_lf] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general = { | ||||||
|     "mode": "VLAN", |     "mode": "VLAN", | ||||||
| @@ -71,8 +71,11 @@ class TestDynamicVlanOverSsid6GWpa3(object): | |||||||
|                 pytest -m "dynamic_precedence_over_ssid and wpa3_enterprise and vlan and sixg" |                 pytest -m "dynamic_precedence_over_ssid and wpa3_enterprise and vlan and sixg" | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         profile_data = setup_params_general["ssid_modes"]["wpa3_enterprise"] |         profile_data = {"ssid_name": "ssid_wpa3e_6g", "appliedRadios": ["6G"], | ||||||
|         ssid_name = profile_data[1]["ssid_name"] |              "security_key": "something", | ||||||
|  |              "vlan": 100 | ||||||
|  |              } | ||||||
|  |         ssid_name = profile_data["ssid_name"] | ||||||
|         security = "wpa3" |         security = "wpa3" | ||||||
|         extra_secu = [] |         extra_secu = [] | ||||||
|         mode = "VLAN" |         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 | DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA = lf_library.DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA | ||||||
|  |  | ||||||
| pytestmark = [pytest.mark.dynamic_vlan_tests, | pytestmark = [pytest.mark.dynamic_vlan_tests, | ||||||
|               pytest.mark.vlan] |               pytest.mark.vlan, pytest.mark.ow_sanity_lf] | ||||||
|  |  | ||||||
| setup_params_general = { | setup_params_general = { | ||||||
|     "mode": "VLAN", |     "mode": "VLAN", | ||||||
| @@ -72,8 +72,11 @@ class TestDynamicVlan6GWpa3(object): | |||||||
|                 pytest -m "absence_of_radius_vlan_identifier and wpa3_enterprise and vlan and sixg" |                 pytest -m "absence_of_radius_vlan_identifier and wpa3_enterprise and vlan and sixg" | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         profile_data = setup_params_general["ssid_modes"]["wpa3_enterprise"] |         profile_data = {"ssid_name": "ssid_wpa3e_6g", "appliedRadios": ["6G"], | ||||||
|         ssid_name = profile_data[1]["ssid_name"] |              "security_key": "something", | ||||||
|  |              "vlan": 100 | ||||||
|  |              } | ||||||
|  |         ssid_name = profile_data["ssid_name"] | ||||||
|         security = "wpa3" |         security = "wpa3" | ||||||
|         extra_secu = [] |         extra_secu = [] | ||||||
|         band = "sixg" |         band = "sixg" | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ | |||||||
| import allure | import allure | ||||||
| import pytest | 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 = { | setup_params_general = { | ||||||
|     "mode": "VLAN", |     "mode": "VLAN", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user