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
2025-06-27 10:40:42 +05:30
committed by GitHub
parent ae0fb31623
commit 98e67832aa
64 changed files with 9407 additions and 887 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -22,7 +22,7 @@ on:
description: "revision of the Open Wifi Helm chart"
ap_models:
required: true
default: "cig_wf186h,edgecore_eap104,cig_wf196,udaya_a6-id2,sonicfi_rap630c-311g,hfcl_ion4xe,yuncore_fap655,cig_wf189,edgecore_eap105,sonicfi_rap7110c-341x,edgecore_eap101,edgecore_eap111"
default: "cig_wf186h,edgecore_eap104,sonicfi_rap630c-311g,hfcl_ion4xe,yuncore_fap655,cig_wf189,edgecore_eap105,sonicfi_rap7110c-341x,edgecore_eap101,edgecore_eap111,edgecore_oap103,edgecore_eap112,cig_wf189h"
description: "the AP models to test"
ap_version:
required: true
@@ -103,7 +103,7 @@ jobs:
AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf189,edgecore_eap105,edgecore_eap111' }}"
fi
else
AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf186h,cig_wf196,yuncore_ax820,yuncore_fap655,sercomm_ap72tip,edgecore_eap101' }}"
AP_MODELS="${{ github.event.inputs.ap_models || 'cig_wf186h,cig_wf196,yuncore_ax820,yuncore_fap655,sercomm_ap72tip,edgecore_eap101,edgecore_oap103,edgecore_eap112,cig_wf189h' }}"
fi
echo "List of AP models to test - $AP_MODELS"
@@ -1208,11 +1208,277 @@ jobs:
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owsec
test-edgecore-oap103:
needs: [ "vars", "build" ]
runs-on: ubuntu-latest
if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_oap103')"
env:
AP_MODEL: edgecore_oap103
steps:
- name: Set AP model output
id: ap_model
run: |
echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
# TODO WIFI-7839 delete when issue is resolved on AWS CLI side
- name: install kubectl
run: |
curl -s -LO "https://dl.k8s.io/release/v1.27.6/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- name: get EKS access credentials
run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
- name: prepare namespace name
id: namespace
run: |
NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')"
echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT
- name: prepare configuration
run: |
cat << EOF > lab_info.json
${{ secrets.LAB_INFO_JSON }}
EOF
- name: run tests
uses: ./.github/actions/run-tests
with:
namespace: ${{ steps.namespace.outputs.name }}
testbed: basic-3
marker_expression: "${{ needs.vars.outputs.marker_expression }}"
configuration_file: "./lab_info.json"
testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"'
allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}"
dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build"
# necessary because if conditionals in composite actions are currently not respected
- name: get tests logs
if: always()
continue-on-error: true
run: |
podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///")
kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true
- name: delete namespace
if: always()
continue-on-error: true
run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }}
- name: show gw logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owgw
- name: show fms logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owfms
- name: show prov logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owprov
- name: show analytics logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owanalytics
- name: show subscription (userportal) logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owsub
- name: show sec logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owsec
test-edgecore-eap112:
needs: [ "vars", "build" ]
runs-on: ubuntu-latest
if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'edgecore_eap112')"
env:
AP_MODEL: edgecore_eap112
steps:
- name: Set AP model output
id: ap_model
run: |
echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
# TODO WIFI-7839 delete when issue is resolved on AWS CLI side
- name: install kubectl
run: |
curl -s -LO "https://dl.k8s.io/release/v1.27.6/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- name: get EKS access credentials
run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
- name: prepare namespace name
id: namespace
run: |
NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')"
echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT
- name: prepare configuration
run: |
cat << EOF > lab_info.json
${{ secrets.LAB_INFO_JSON }}
EOF
- name: run tests
uses: ./.github/actions/run-tests
with:
namespace: ${{ steps.namespace.outputs.name }}
testbed: basic-1
marker_expression: "${{ needs.vars.outputs.marker_expression }}"
configuration_file: "./lab_info.json"
testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"'
allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}"
dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build"
# necessary because if conditionals in composite actions are currently not respected
- name: get tests logs
if: always()
continue-on-error: true
run: |
podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///")
kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true
- name: delete namespace
if: always()
continue-on-error: true
run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }}
- name: show gw logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owgw
- name: show fms logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owfms
- name: show prov logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owprov
- name: show analytics logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owanalytics
- name: show subscription (userportal) logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owsub
- name: show sec logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owsec
test-cig-wf189h:
needs: [ "vars", "build" ]
runs-on: ubuntu-latest
if: "!cancelled() && contains(fromJSON(needs.vars.outputs.ap_models), 'cig_wf189h')"
env:
AP_MODEL: cig_wf189h
steps:
- name: Set AP model output
id: ap_model
run: |
echo "model=${AP_MODEL}" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
# TODO WIFI-7839 delete when issue is resolved on AWS CLI side
- name: install kubectl
run: |
curl -s -LO "https://dl.k8s.io/release/v1.27.6/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- name: get EKS access credentials
run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
- name: prepare namespace name
id: namespace
run: |
NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ steps.ap_model.outputs.model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')"
echo "name=${NAMESPACE}" >> $GITHUB_OUTPUT
- name: prepare configuration
run: |
cat << EOF > lab_info.json
${{ secrets.LAB_INFO_JSON }}
EOF
- name: run tests
uses: ./.github/actions/run-tests
with:
namespace: ${{ steps.namespace.outputs.name }}
testbed: basic-4
marker_expression: "${{ needs.vars.outputs.marker_expression }}"
configuration_file: "./lab_info.json"
testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
additional_args: '-o firmware="${{ needs.vars.outputs.ap_version }}"'
allure_results_artifact_name: "allure-results-${{ steps.ap_model.outputs.model }}"
dns_records_to_resolve: "sec-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build gw-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build fms-${{ needs.vars.outputs.existing_controller }}.cicd.lab.wlan.tip.build"
# necessary because if conditionals in composite actions are currently not respected
- name: get tests logs
if: always()
continue-on-error: true
run: |
podname=$(kubectl get pods -n ${{ steps.namespace.outputs.name }} --no-headers -o custom-columns=":metadata.name" -l job-name=testing | sed "s/pod\///")
kubectl logs --timestamps -n ${{ steps.namespace.outputs.name }} $podname || true
- name: delete namespace
if: always()
continue-on-error: true
run: kubectl delete ns --ignore-not-found=true --wait ${{ steps.namespace.outputs.name }}
- name: show gw logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owgw
- name: show fms logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owfms
- name: show prov logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owprov
- name: show analytics logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owanalytics
- name: show subscription (userportal) logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owsub
- name: show sec logs
if: failure()
run: kubectl -n openwifi-qa01 logs deployment/owsec
# Save reports
report:
if: "!cancelled()"
runs-on: ubuntu-latest
needs: [vars, test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111]
needs: [vars, test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111,test-edgecore-oap103,test-edgecore-eap112,test-cig-wf189h]
strategy:
fail-fast: false
matrix:
@@ -1263,7 +1529,7 @@ jobs:
# Cleanup
cleanup:
needs: [test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111]
needs: [test-cig-wf186h, test-edgecore-eap104, test-cig-wf196, test-udaya-a6-id2, test-sonicfi-rap630c-311g, test-hfcl-ion4xe, test-yuncore-fap655, test-cig-wf189, test-edgecore-eap105, test-sonicfi-rap7110c-341x, test-edgecore-eap101, test-edgecore-eap111,test-edgecore-oap103,test-edgecore-eap112,test-cig-wf189h]
runs-on: ubuntu-latest
if: always()
steps:

File diff suppressed because it is too large Load Diff

View File

@@ -462,9 +462,21 @@ class APLIBS:
logging.info("Status count: " + str(status_count_1))
if status_count_1 == 1:
logging.info("In Mediatek Chipsets")
cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy1/mt76/ && ls && echo 1 > radar_trigger'
cmd = f'cd && cd //sys/kernel/debug/ieee80211/phy1/mt76/ && ls && echo 1 > radar_trigger'
else:
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":
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,
@@ -478,7 +490,7 @@ class APLIBS:
if status_count == 1:
cmd = "cd && cd /sys/kernel/debug/ieee80211/phy0/ && cd ath12k_hw1 && echo 1 > dfs_simulate_radar"
else:
cmd = f'cd && cd /sys/kernel/debug/ath12k/ && cd qcn* && cd mac1 && ls && echo 1 > dfs_simulate_radar'
cmd = "cd && cd /sys/kernel/debug/ieee80211/phy00/ && cd ath12k_hw1 && echo 1 > dfs_simulate_radar"
output = self.run_generic_command(cmd=cmd, idx=idx,
print_log=print_log,
attach_allure=attach_allure,
@@ -525,7 +537,7 @@ class APLIBS:
cmd = f'cd && cd /sys/kernel/debug/ath11k/ && cd qcn6122_2 && cd mac0 && logread | grep DFS'
else:
#cmd = f'cd && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && logread | grep DFS'
cmd1 = '[ -f /sys/kernel/debug/ieee80211/phy1/mt76/radar_trigger ] && echo "True" || echo "False"'
cmd1 = '[ -f //sys/kernel/debug/ieee80211/phy1/mt76/radar_trigger ] && echo "True" || echo "False"'
output = self.run_generic_command(cmd=cmd1, idx=idx,
print_log=print_log,
attach_allure=attach_allure,
@@ -534,9 +546,21 @@ class APLIBS:
status_count_1 = int(ret.count("True"))
logging.info("Status count: " + str(status_count_1))
if status_count_1 == 1:
cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy1/mt76/ && logread | grep DFS'
cmd = f'cd && cd //sys/kernel/debug/ieee80211/phy1/mt76/ && logread | grep DFS'
else:
cmd = f'cd && cd /sys/kernel/debug/ath11k/ && cd ipq* && cd mac0 && logread | grep DFS'
# 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":
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,
@@ -545,9 +569,9 @@ class APLIBS:
expected_attachment_type=allure.attachment_type.JSON)
logging.info("DFS logread output: " + str(output))
if output.__contains__("False"):
cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/ && logread | grep DFS'
cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy00/ath12k_hw1/ && logread | grep DFS'
else:
cmd = f'cd && cd /sys/kernel/debug/ath12k/ && cd qcn* && cd mac1 && logread | grep DFS'
cmd = f'cd && cd /sys/kernel/debug/ieee80211/phy0/ath12k_hw1/ && logread | grep DFS'
try:
output = self.run_generic_command(cmd=cmd, idx=idx,
@@ -692,4 +716,4 @@ if __name__ == '__main__':
# a = obj.get_active_config()
# if a == l:
# print("a = l")
# print(obj.get_ap_version())
# print(obj.get_ap_version())

View File

@@ -2611,7 +2611,7 @@ class UProfileUtility:
ssid_info.append(temp)
return ssid_info
def set_radio_config(self, radio_config={}, open_roaming=False):
def set_radio_config(self, radio_config={}, open_roaming=False, ap_mode="wifi6"):
if open_roaming:
base_radio_config_2g = {
"band": "2G",
@@ -2627,6 +2627,13 @@ class UProfileUtility:
"channel-width": 80,
"channel": "auto"
}
if ap_mode == "wifi6" or ap_mode =="wifi6e":
base_radio_config_2g["channel-mode"] = "HE"
base_radio_config_5g["channel-mode"] = "HE"
if ap_mode == "wifi7":
logging.info("yes it's wifi7 AP and open_roaming")
base_radio_config_2g["channel-mode"] = "EHT"
base_radio_config_5g["channel-mode"] = "EHT"
for band in radio_config:
if band == "2G" and radio_config[band] is not None:
@@ -2641,22 +2648,33 @@ class UProfileUtility:
base_radio_config_2g = {
"band": "2G",
"country": "US",
"channel-mode": "HE",
"channel-mode": "EHT",
"channel": "auto"
}
base_radio_config_5g = {
"band": "5G",
"country": "US",
"allow-dfs": False,
"channel-mode": "HE",
"channel-mode": "EHT",
"channel": "auto"
}
base_radio_config_6g = {
"band": "6G",
"country": "US",
"channel-mode": "HE",
"channel-mode": "EHT",
"channel": "auto"
}
if ap_mode == "wifi6" or ap_mode =="wifi6e":
base_radio_config_2g["channel-mode"] = "HE"
base_radio_config_5g["channel-mode"] = "HE"
base_radio_config_6g["channel-mode"] = "HE"
if ap_mode == "wifi7":
logging.info("yes it's wifi7 AP")
base_radio_config_2g["channel-mode"] = "EHT"
base_radio_config_5g["channel-mode"] = "EHT"
base_radio_config_6g["channel-mode"] = "EHT"
for band in radio_config:
if band == "2G" and radio_config[band] is not None:
for keys in radio_config[band]:
@@ -2671,6 +2689,8 @@ class UProfileUtility:
self.base_profile_config["radios"].append(base_radio_config_2g)
self.base_profile_config["radios"].append(base_radio_config_5g)
self.base_profile_config["radios"].append(base_radio_config_6g)
logging.info(f"base_profile_config:{self.base_profile_config}")
self.vlan_section["ssids"] = []
self.vlan_ids = []

View File

@@ -64,7 +64,8 @@ class tip_2x:
"wpa3_enterprise",
"wpa_wpa2_enterprise_mixed",
"wpa3_enterprise_mixed",
"wpa3_enterprise_192"
"wpa3_enterprise_192",
"owe"
]
tip_2x_specific_encryption_translation = {"open": "none",
"wpa": "psk",
@@ -77,7 +78,8 @@ class tip_2x:
"wpa3_enterprise": "wpa3",
"wpa_wpa2_enterprise_mixed": "wpa-mixed",
"wpa3_enterprise_mixed": "wpa3-mixed",
"wpa3_enterprise_192": "wpa3-192"
"wpa3_enterprise_192": "wpa3-192",
"owe":"owe"
}
def __init__(self, controller_data=None, target=None, configuration=None,
@@ -231,6 +233,12 @@ class tip_2x:
requested_combination=None, open_roaming=False):
f_conf = self.setup_configuration_data(configuration=configuration,
requested_combination=requested_combination)
# fetch ap_mode from DUT data (ap_mode can be wifii6 or wifi6e or wifi7)
for i in range(0, len(self.device_under_tests_info)):
ap_mode = self.device_under_tests_info[i]["mode"]
logging.info(f"ap_mode:{ap_mode}")
if open_roaming:
logging.info("Selected Configuration of open roaming: " + str(json.dumps(f_conf, indent=2)))
final_configuration = f_conf.copy()
@@ -243,10 +251,11 @@ class tip_2x:
# Setup Radio Scenario
if final_configuration["rf"] != {}:
profile_object.set_radio_config(radio_config=final_configuration["rf"], open_roaming=open_roaming)
profile_object.set_radio_config(radio_config=final_configuration["rf"], open_roaming=open_roaming,
ap_mode=ap_mode)
else:
final_configuration["rf"] = {"2G": {}, "5G": {}, "6G": {}}
profile_object.set_radio_config(open_roaming=open_roaming)
profile_object.set_radio_config(open_roaming=open_roaming, ap_mode=ap_mode)
for ssid in final_configuration["ssid_modes"]:
for ssid_data in final_configuration["ssid_modes"][ssid]:
if final_configuration["radius"]:
@@ -276,10 +285,10 @@ class tip_2x:
# Setup Radio Scenario
if final_configuration["rf"] != {}:
profile_object.set_radio_config(radio_config=final_configuration["rf"])
profile_object.set_radio_config(radio_config=final_configuration["rf"], ap_mode=ap_mode)
else:
final_configuration["rf"] = {"2G": {}, "5G": {}, "6G": {}}
profile_object.set_radio_config()
profile_object.set_radio_config(ap_mode=ap_mode)
for ssid in final_configuration["ssid_modes"]:
for ssid_data in final_configuration["ssid_modes"][ssid]:
if final_configuration["radius"]:
@@ -393,8 +402,8 @@ class tip_2x:
logging.info("resp: " + str(resp))
uuid = resp["details"]["uuid"]
logging.info("uuid from resp: " + str(uuid))
logging.info("Waiting for 30 sec after config push")
time.sleep(30)
logging.info("Waiting for 45 sec after config push")
time.sleep(45)
r_data = self.dut_library_object.ubus_call_ucentral_status(idx=i, print_log=True, attach_allure=False)
latest_uuid_after_apply = r_data["latest"]
active_uuid_after_apply = r_data["active"]
@@ -425,9 +434,9 @@ class tip_2x:
pytest.fail("Config is not Properly Applied on AP")
self.dut_library_object.get_active_config(idx=i, print_log=True, attach_allure=False)
logging.info("Waiting for 30 Seconds for All interfaces to come up")
logging.info("Waiting for 45 Seconds for All interfaces to come up")
# wait time interfaces to come up
time.sleep(30)
time.sleep(45)
# x = 0
# while uuid_before_apply == uuid_after_apply:
@@ -502,15 +511,30 @@ class tip_2x:
n = len(temp_data[dut])
lst = list(range(0, n))
ret_val[dut]["ssid_data"] = dict.fromkeys(lst)
fields = ["SSID", "Encryption", "Password", "Band", "BSSID"]
for j in ret_val[dut]["ssid_data"]:
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
ssid_entry = temp_data[dut][j]
expected_length = 5
if len(ssid_entry) < expected_length:
missing_fields = []
# Check each field for its presence
for index, field in enumerate(fields):
if len(ssid_entry) <= index:
missing_fields.append(field)
if missing_fields:
logging.error(
f"Error: Missing field(s) {', '.join(missing_fields)} for SSID entry '{ssid_entry[0]}' in {ssid_entry}. Please check iwinfo")
pytest.fail(
f"Error: Missing field(s) {', '.join(missing_fields)} for SSID entry '{ssid_entry[0]}' in {ssid_entry}. Please check iwinfo")
else:
a = temp_data[dut][j].copy()
a = dict.fromkeys(["ssid", "encryption", "password", "band", "bssid"])
a["ssid"] = temp_data[dut][j][0]
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()
logging.info(f"temp:{temp}")
for j in temp:
@@ -660,14 +684,19 @@ class tip_2x:
band = "2G"
elif o[i + 9].__contains__("5."):
band = "5G"
elif "unknown" in o[i + 9]:
logging.info(f"Error: {o[i - 1]} has an unknown channel frequency from iwinfo")
pytest.fail(f"Error: {o[i - 1]} has an unknown channel frequency from iwinfo")
else:
band = "6G"
iwinfo_bssid_data[o[i - 1]] = [o[i + 1].replace('"', ''), o[i + 4], band]
logging.info(f"iwinfo_bssid_data:{iwinfo_bssid_data}")
for p in iwinfo_bssid_data:
for q in ssid_info_sdk:
if iwinfo_bssid_data[p][0] == q[0] and iwinfo_bssid_data[p][2] == q[3]:
q.append(iwinfo_bssid_data[p][1])
ssid_info_sdk.append(channel_info)
logging.info(f"ssid_info_sdk:{ssid_info_sdk}")
return ssid_info_sdk
def get_dut_version(self):

View File

@@ -252,7 +252,7 @@ def get_security_flags():
security = ["open", "wpa", "wep", "wpa2_personal", "wpa3_personal", "wpa3_personal_mixed",
"wpa_wpa2_enterprise_mixed", "wpa2_eap", "wpa2_only_eap",
"wpa_wpa2_personal_mixed", "wpa_enterprise", "wpa2_enterprise", "wpa3_enterprise_mixed",
"wpa3_enterprise", "twog", "fiveg", "sixg", "fiveg_lower", "fiveg_upper", "radius"]
"wpa3_enterprise", "twog", "fiveg", "sixg", "fiveg_lower", "fiveg_upper", "radius", "owe"]
yield security

View File

@@ -4,6 +4,7 @@
pytest -m "external_captive_portal_tests and bridge"
"""
import copy
import logging
import re
import time
@@ -12,47 +13,127 @@ import paramiko
import pytest
from tabulate import tabulate
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests]
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests,
pytest.mark.click_to_continue]
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 = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something",
"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"
]
"captive": captive
},
{"ssid_name": "ssid_ext_cap_portal_open_5g_ctc", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "ext_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ext_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="External Captive Portal")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestBridgeModeExternalCaptivePortal(object):
"""
External Captive Portal Test: BRIDGE Mode
@@ -61,17 +142,17 @@ class TestBridgeModeExternalCaptivePortal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.click_to_continue
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 2.4 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-11148", name="WIFI-11148")
def test_bridge_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, check_connectivity, setup_configuration,
def test_bridge_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
BRIDGE Mode External Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and bridge and click_to_continue"
"""
get_test_library.check_band_ap(band="twog")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
@@ -96,9 +177,193 @@ class TestBridgeModeExternalCaptivePortal(object):
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "2G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"],
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode=setup_params_general["mode"],
radio=radio_port_name,
station_name=[station],
attach_port_info=False,
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (
f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address="
f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3="
f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}"
f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id="
f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1"
)
expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"'
response_302 = run_command_using_ssh(client, expected_302)
logging.info(f"\n{response_302}")
allure.attach(name="Expected 302 response: ", body=str(response_302),
attachment_type=allure.attachment_type.TEXT)
link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0]
logging.info(f"Link to hit: {link_to_hit}")
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 5 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
BRIDGE Mode External Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and bridge and click_to_continue"
"""
get_test_library.check_band_ap(band="fiveg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_dict = get_test_library.get_radio_availabilities(num_stations_5g=1)
logging.info(f"radio_port_dict value:{radio_port_dict}")
radio_port_name = list(radio_port_dict[1].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "5G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode=setup_params_general["mode"],
@@ -106,6 +371,178 @@ class TestBridgeModeExternalCaptivePortal(object):
station_name=[station],
attach_port_info=False
)
logging.info("station creation done")
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (
f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address="
f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3="
f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}"
f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id="
f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1"
)
expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"'
response_302 = run_command_using_ssh(client, expected_302)
logging.info(f"\n{response_302}")
allure.attach(name="Expected 302 response: ", body=str(response_302),
attachment_type=allure.attachment_type.TEXT)
link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0]
logging.info(f"Link to hit: {link_to_hit}")
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with owe encryption 6 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_6g_click_to_continue(self, setup_initial_configuration, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
BRIDGE Mode External Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and bridge and click_to_continue"
"""
get_test_library.check_band_ap(band="sixg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0]
station = 'sta_ecp'
desired_band = "6G"
ssid_list = setup_params_general["ssid_modes"]["owe"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="owe",
mode=setup_params_general["mode"],
radio=radio_port_name,
station_name=[station],
attach_port_info=False, enable_owe = True,
is_bw320=is_bw320, is_ht160=is_ht160
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {

View File

@@ -4,6 +4,7 @@
pytest -m "external_captive_portal_tests and NAT"
"""
import copy
import logging
import re
import time
@@ -12,14 +13,9 @@ import paramiko
import pytest
from tabulate import tabulate
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.NAT, pytest.mark.advanced_captive_portal_tests]
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.nat, pytest.mark.advanced_captive_portal_tests, pytest.mark.click_to_continue]
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
captive = {
"auth-mode": "uam",
"uam-port": 3990,
"uam-secret": "hotsys123",
@@ -35,43 +31,132 @@ setup_params_general = {
"youtube.com"
]
}
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_ext_cap_portal_open_2g_ctc", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_ext_cap_portal_open_5g_ctc", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "ext_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ext_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="External Captive Portal")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestNatModeExternalCaptivePortal(object):
"""
External Captive Portal Test: NAT Mode
pytest -m "advanced_captive_portal_tests and NAT and external_captive_portal_tests"
pytest -m "advanced_captive_portal_tests and nat and external_captive_portal_tests"
"""
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.click_to_continue
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 2.4 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14124", name="WIFI-14124")
def test_nat_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, check_connectivity, setup_configuration,
get_testbed_details, get_target_object):
def test_nat_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
NAT Mode External Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and NAT and click_to_continue"
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and nat and click_to_continue"
"""
get_test_library.check_band_ap(band="twog")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
@@ -96,13 +181,24 @@ class TestNatModeExternalCaptivePortal(object):
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "2G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"],
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode="NAT-WAN",
radio=radio_port_name,
band="twog",
station_name=[station],
attach_port_info=False
)
@@ -218,3 +314,348 @@ class TestNatModeExternalCaptivePortal(object):
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 5 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
NAT Mode External Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and nat and click_to_continue"
"""
get_test_library.check_band_ap(band="fiveg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_5g=1)[1].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "5G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode="NAT-WAN",
radio=radio_port_name,
band="fiveg",
station_name=[station],
attach_port_info=False
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (
f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address="
f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3="
f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}"
f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id="
f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1"
)
expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"'
response_302 = run_command_using_ssh(client, expected_302)
logging.info(f"\n{response_302}")
allure.attach(name="Expected 302 response: ", body=str(response_302),
attachment_type=allure.attachment_type.TEXT)
link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0]
logging.info(f"Link to hit: {link_to_hit}")
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with owe encryption 6 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_6g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
NAT Mode External Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and nat and click_to_continue"
"""
get_test_library.check_band_ap(band="sixg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0]
station = 'sta_ecp'
desired_band = "6G"
ssid_list = setup_params_general["ssid_modes"]["owe"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="owe",
mode="NAT-WAN",
radio=radio_port_name,
band="sixg",
station_name=[station],
attach_port_info=False, enable_owe = True,
is_bw320=is_bw320, is_ht160=is_ht160
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (
f"https://customer.hotspotsystem.com/customer/hotspotlogin.php?name=&email=&company=&address="
f"&city=&state=&country=&zip=&phone=&capture_custom_1=&capture_custom_2=&capture_custom_3="
f"&capture_custom_4=&capture_custom_5=&ssl-login=&chal={challenge}&uamip={inet_ip_addr}"
f"&uamport={uamport}&nasid={nasid}&mac={station_mac}&userurl=&login=login&skin_id="
f"&uid={station_mac}&pwd=password&operator={nasid}&location_id=1&lang=en&agree=1"
)
expected_302 = f'/home/lanforge/vrf_exec.bash {station} curl -I "{link}"'
response_302 = run_command_using_ssh(client, expected_302)
logging.info(f"\n{response_302}")
allure.attach(name="Expected 302 response: ", body=str(response_302),
attachment_type=allure.attachment_type.TEXT)
link_to_hit = re.findall(r'^Location:\s+(.*?)\s*$', response_302, re.MULTILINE)[0]
logging.info(f"Link to hit: {link_to_hit}")
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{link_to_hit}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()

View File

@@ -4,6 +4,7 @@
pytest -m "external_captive_portal_tests and bridge"
"""
import copy
import logging
import re
import time
@@ -13,14 +14,10 @@ import pytest
from tabulate import tabulate
from bs4 import BeautifulSoup
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests]
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.bridge, pytest.mark.advanced_captive_portal_tests,
pytest.mark.local_user_and_pass]
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
captive ={
"auth-mode": "uam",
"uam-port": 3990,
"uam-secret": "hotsys123",
@@ -36,24 +33,113 @@ setup_params_general = {
"youtube.com"
]
}
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_ext_cap_portal_open_5g_id_p", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "ext_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ext_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="External Captive Portal")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestBridgeModeExternalCaptivePortal(object):
"""
External Captive Portal Test: BRIDGE Mode
@@ -62,17 +148,17 @@ class TestBridgeModeExternalCaptivePortal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.local_user_and_pass
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 2.4 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-13683", name="WIFI-13683")
def test_bridge_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, check_connectivity, setup_configuration,
def test_bridge_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
BRIDGE Mode External Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and bridge and local_user_and_pass"
"""
get_test_library.check_band_ap(band="twog")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
@@ -97,9 +183,19 @@ class TestBridgeModeExternalCaptivePortal(object):
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "2G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"],
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode=setup_params_general["mode"],
@@ -251,3 +347,408 @@ class TestBridgeModeExternalCaptivePortal(object):
logging.info("Throughput exceeded than set threshold")
pytest.fail("Throughput exceeded than set threshold")
logging.info("Throughput is within the set threshold")
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 5 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
BRIDGE Mode External Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and bridge and local_user_and_pass"
"""
get_test_library.check_band_ap(band="fiveg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_5g=1)[1].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "5G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode=setup_params_general["mode"],
radio=radio_port_name,
station_name=[station],
attach_port_info=False
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}'
f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}'
f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1')
html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"'
html_response = run_command_using_ssh(client, html_request)
logging.info(f"HTML response containing authentication url:\n{html_response}")
allure.attach(name="HTML response containing authentication url:", body=str(html_response),
attachment_type=allure.attachment_type.TEXT)
soup = BeautifulSoup(html_response, 'html.parser')
meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'})
content = meta_tag['content']
authentication_url = "=".join(content.split('=')[1:])
logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n")
allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url))
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
logging.info("Checking throughput speed...")
wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="BRIDGE",
download_rate="10Gbps",
upload_rate="56Kbps",
protocol="UDP-IPv4",
duration="60000",
batch_size="1",
stations=radio_port_name[:4] + station,
add_stations=False,
create_stations=False)
report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/"
numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report)
expected_throughput = 10
throughput = {
"download": [numeric_score[0][0]],
"upload": [numeric_score[1][0]],
"total": [numeric_score[2][0]],
"expected": [f"<= {expected_throughput}"],
"unit": ["Mbps"],
"PASS": [numeric_score[2][0] <= expected_throughput]
}
data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid')
allure.attach(name='Throughput Data', body=data_table)
logging.info(f"\n{data_table}")
if not throughput["PASS"][0]:
logging.info("Throughput exceeded than set threshold")
pytest.fail("Throughput exceeded than set threshold")
logging.info("Throughput is within the set threshold")
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with owe encryption 6 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
BRIDGE Mode External Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and bridge and local_user_and_pass"
"""
get_test_library.check_band_ap(band="sixg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0]
station = 'sta_ecp'
desired_band = "6G"
ssid_list = setup_params_general["ssid_modes"]["owe"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="owe",
mode=setup_params_general["mode"],
radio=radio_port_name,
station_name=[station],
attach_port_info=False, enable_owe=True,
is_bw320=is_bw320, is_ht160=is_ht160
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}'
f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}'
f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1')
html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"'
html_response = run_command_using_ssh(client, html_request)
logging.info(f"HTML response containing authentication url:\n{html_response}")
allure.attach(name="HTML response containing authentication url:", body=str(html_response),
attachment_type=allure.attachment_type.TEXT)
soup = BeautifulSoup(html_response, 'html.parser')
meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'})
content = meta_tag['content']
authentication_url = "=".join(content.split('=')[1:])
logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n")
allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url))
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
logging.info("Checking throughput speed...")
wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="BRIDGE",
download_rate="10Gbps",
upload_rate="56Kbps",
protocol="UDP-IPv4",
duration="60000",
batch_size="1",
stations=radio_port_name[:4] + station,
add_stations=False,
create_stations=False)
report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/"
numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report)
expected_throughput = 10
throughput = {
"download": [numeric_score[0][0]],
"upload": [numeric_score[1][0]],
"total": [numeric_score[2][0]],
"expected": [f"<= {expected_throughput}"],
"unit": ["Mbps"],
"PASS": [numeric_score[2][0] <= expected_throughput]
}
data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid')
allure.attach(name='Throughput Data', body=data_table)
logging.info(f"\n{data_table}")
if not throughput["PASS"][0]:
logging.info("Throughput exceeded than set threshold")
pytest.fail("Throughput exceeded than set threshold")
logging.info("Throughput is within the set threshold")

View File

@@ -4,6 +4,7 @@
pytest -m "external_captive_portal_tests and nat"
"""
import copy
import logging
import re
import time
@@ -13,14 +14,10 @@ import pytest
from tabulate import tabulate
from bs4 import BeautifulSoup
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.nat, pytest.mark.advanced_captive_portal_tests]
pytestmark = [pytest.mark.external_captive_portal_tests, pytest.mark.nat, pytest.mark.advanced_captive_portal_tests,
pytest.mark.local_user_and_pass]
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
captive = {
"auth-mode": "uam",
"uam-port": 3990,
"uam-secret": "hotsys123",
@@ -36,24 +33,113 @@ setup_params_general = {
"youtube.com"
]
}
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_ext_cap_portal_open_2g_id_p", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_ext_cap_portal_open_5g_id_p", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "ext_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ext_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="External Captive Portal")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestNatModeExternalCaptivePortal(object):
"""
External Captive Portal Test: NAT Mode
@@ -62,17 +148,17 @@ class TestNatModeExternalCaptivePortal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.local_user_and_pass
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 2.4 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14125", name="WIFI-14125")
def test_nat_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, check_connectivity, setup_configuration,
get_testbed_details, get_target_object):
def test_nat_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
NAT Mode External Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and twog and nat and local_user_and_pass"
"""
get_test_library.check_band_ap(band="twog")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
@@ -97,9 +183,19 @@ class TestNatModeExternalCaptivePortal(object):
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_2g=1)[0].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "2G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=setup_params_general["ssid_modes"][security][0]["ssid_name"],
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode="NAT-WAN",
@@ -251,3 +347,408 @@ class TestNatModeExternalCaptivePortal(object):
logging.info("Throughput exceeded than set threshold")
pytest.fail("Throughput exceeded than set threshold")
logging.info("Throughput is within the set threshold")
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 5 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
NAT Mode External Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and open and fiveg and nat and local_user_and_pass"
"""
get_test_library.check_band_ap(band="fiveg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_5g=1)[1].keys())[0]
security = "open"
station = 'sta_ecp'
desired_band = "5G"
ssid_list = setup_params_general["ssid_modes"]["open"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="open",
mode="NAT-WAN",
radio=radio_port_name,
station_name=[station],
attach_port_info=False
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}'
f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}'
f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1')
html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"'
html_response = run_command_using_ssh(client, html_request)
logging.info(f"HTML response containing authentication url:\n{html_response}")
allure.attach(name="HTML response containing authentication url:", body=str(html_response),
attachment_type=allure.attachment_type.TEXT)
soup = BeautifulSoup(html_response, 'html.parser')
meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'})
content = meta_tag['content']
authentication_url = "=".join(content.split('=')[1:])
logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n")
allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url))
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
logging.info("Checking throughput speed...")
wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="NAT-WAN",
download_rate="10Gbps",
upload_rate="56Kbps",
protocol="UDP-IPv4",
duration="60000",
batch_size="1",
stations=radio_port_name[:4] + station,
add_stations=False,
create_stations=False)
report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/"
numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report)
expected_throughput = 10
throughput = {
"download": [numeric_score[0][0]],
"upload": [numeric_score[1][0]],
"total": [numeric_score[2][0]],
"expected": [f"<= {expected_throughput}"],
"unit": ["Mbps"],
"PASS": [numeric_score[2][0] <= expected_throughput]
}
data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid')
allure.attach(name='Throughput Data', body=data_table)
logging.info(f"\n{data_table}")
if not throughput["PASS"][0]:
logging.info("Throughput exceeded than set threshold")
pytest.fail("Throughput exceeded than set threshold")
logging.info("Throughput is within the set threshold")
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with owe encryption 6 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, check_connectivity,
get_testbed_details, get_target_object):
"""
NAT Mode External Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and external_captive_portal_tests and owe and sixg and nat and local_user_and_pass"
"""
get_test_library.check_band_ap(band="sixg")
def run_command_using_ssh(ssh_client, command: str):
output = ""
try_count = 1
while output.strip() == "" and try_count <= 10:
try:
try_count += 1
time.sleep(2)
logging.info(f"Executing command: {command}")
stdin, stdout, stderr = ssh_client.exec_command(command)
output = stdout.read().decode()
except Exception as exc:
logging.error(f"Handled Exception while running {command}: {exc}", exc_info=True)
if output.strip() == "":
allure.attach(name="No response while running following command:", body=f"{command}")
raise Exception("No output from command, check test body!")
return output
for dut in get_test_library.dut_data:
get_test_library.pre_cleanup()
radio_port_name = list(get_test_library.get_radio_availabilities(num_stations_6g=1).keys())[0]
station = 'sta_ecp'
desired_band = "6G"
ssid_list = setup_params_general["ssid_modes"]["owe"]
ssid_name = None
for ssid_info in ssid_list:
if desired_band in ssid_info["appliedRadios"]:
ssid_name = ssid_info["ssid_name"]
break
logging.info(f"ssid_name:{ssid_name}")
if ssid_name is None:
raise Exception(f"No SSID found configured for {desired_band}")
logging.info(f"Creating a station on the configured ssid on {radio_port_name} radio...")
sta_got_ip = get_test_library.client_connect_using_radio(
ssid=ssid_name,
passkey="[BLANK]",
security="owe",
mode="NAT-WAN",
radio=radio_port_name,
station_name=[station],
attach_port_info=False, enable_owe=True,
is_bw320=is_bw320, is_ht160=is_ht160
)
sta_info = get_test_library.json_get(_req_url=f"port/1/1/{station}")
dict_table_sta = {
"Key": list(sta_info["interface"].keys()),
"Value": list(sta_info["interface"].values())
}
data_table_sta = tabulate(dict_table_sta, headers='keys', tablefmt='fancy_grid')
logging.info(f"Stations Data ({station}): \n{data_table_sta}\n")
allure.attach(name=f"Stations Data ({station})", body=str(data_table_sta))
if sta_got_ip is False:
logging.info("Station Failed to get IP")
pytest.fail("Station Failed to get IP")
logging.info("Connecting SSH connection...")
hostname = get_test_library.manager_ip
port = get_test_library.manager_ssh_port
username = 'root'
password = 'lanforge'
ping_host = "google.com"
ping_count = 10
ping_command = f"/home/lanforge/vrf_exec.bash {station} ping -c {ping_count} {ping_host}"
client = paramiko.SSHClient()
try:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port=port, username=username, password=password)
logging.info("Making sure client not getting internet access before UAM authentication...")
ping_output_pre_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nBefore Captive Portal-UAM authentication:\n{ping_output_pre_authentication}\n")
allure.attach(name="Before Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_pre_authentication))
if "100% packet loss" not in ping_output_pre_authentication:
logging.info("Client already have internet access before UAM authentication!!!")
pytest.fail("Client already have internet access before UAM authentication")
logging.info("Client do not have internet access before UAM authentication.")
logging.info("Getting the inet ip address...")
logging.info(f"AP idx: {get_test_library.dut_data.index(dut)}")
cmd_output = get_target_object.get_dut_library_object().run_generic_command(
cmd="ifconfig up0v0",
idx=get_test_library.dut_data.index(dut),
attach_allure=False
)
ip_pattern = re.compile(r"inet addr:(\d+\.\d+\.\d+\.\d+)")
match = ip_pattern.search(cmd_output)
inet_ip_addr = match.group(1)
logging.info(f"inet ip addr: {inet_ip_addr}")
expected_location = f"/home/lanforge/vrf_exec.bash {station} curl -I http://{inet_ip_addr}/hotspot/"
expected_location_output = run_command_using_ssh(client, expected_location)
challenge_link = re.findall(r'^Location:\s+(.*?)\s*$', expected_location_output, re.MULTILINE)[0]
logging.info(f"Redirection link: {challenge_link}")
url_info = {}
for field in challenge_link.split('?')[1].split('&'):
key_val_list = field.split('=')
if len(key_val_list) == 2 and len(key_val_list[1]) != 0:
url_info[key_val_list[0]] = key_val_list[1]
logging.info(f"url_info: {url_info}")
challenge = url_info['challenge']
nasid = url_info['nasid']
station_mac = url_info['mac']
uamport = url_info['uamport']
link = (f'https://customer.hotspotsystem.com/customer/hotspotlogin.php?ssl-login=&chal={challenge}'
f'&uamip={inet_ip_addr}&uamport={uamport}&nasid={nasid}&mac={station_mac}'
f'&userurl=ct522-7481%2F&login=login&skin_id=&uid=userr1&pwd=password1')
html_request = f'/home/lanforge/vrf_exec.bash {station} curl "{link}"'
html_response = run_command_using_ssh(client, html_request)
logging.info(f"HTML response containing authentication url:\n{html_response}")
allure.attach(name="HTML response containing authentication url:", body=str(html_response),
attachment_type=allure.attachment_type.TEXT)
soup = BeautifulSoup(html_response, 'html.parser')
meta_tag = soup.find('meta', attrs={'http-equiv': 'refresh'})
content = meta_tag['content']
authentication_url = "=".join(content.split('=')[1:])
logging.info(f"Authentication URL extracted from HTML:\n{authentication_url}\n")
allure.attach(name="Authentication URL extracted from HTML:", body=str(authentication_url))
cmd_to_authenticate = f'/home/lanforge/vrf_exec.bash {station} curl "{authentication_url}"'
authentication_response = run_command_using_ssh(client, cmd_to_authenticate)
logging.info(f"\n{authentication_response}\n")
allure.attach(name="Response from captive portal: ",
body=authentication_response, attachment_type=allure.attachment_type.HTML)
if "<h1> Connected </h1>" not in authentication_response:
logging.info("Captive portal authentication Failed")
pytest.fail("Captive portal authentication Failed")
logging.info("Captive portal authentication successful! Checking if client got internet access...")
ping_output_post_authentication = run_command_using_ssh(client, ping_command)
logging.info(f"\nAfter Captive Portal-UAM authentication:\n{ping_output_post_authentication}\n")
allure.attach(name="After Captive Portal-UAM authentication, station ping response (google.com)",
body=str(ping_output_post_authentication))
if "100% packet loss" in ping_output_post_authentication:
logging.info("Client did not get internet access even after authentication!!!")
pytest.fail("Client did not get internet access even after authentication")
except Exception as e:
logging.error(f"Error occurred: {e}", exc_info=True)
pytest.fail(f"Error occurred: {e}")
finally:
client.close()
logging.info("Checking throughput speed...")
wifi_capacity_obj_list = get_test_library.wifi_capacity(mode="NAT-WAN",
download_rate="10Gbps",
upload_rate="56Kbps",
protocol="UDP-IPv4",
duration="60000",
batch_size="1",
stations=radio_port_name[:4] + station,
add_stations=False,
create_stations=False)
report = wifi_capacity_obj_list[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/"
numeric_score = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report)
expected_throughput = 10
throughput = {
"download": [numeric_score[0][0]],
"upload": [numeric_score[1][0]],
"total": [numeric_score[2][0]],
"expected": [f"<= {expected_throughput}"],
"unit": ["Mbps"],
"PASS": [numeric_score[2][0] <= expected_throughput]
}
data_table = tabulate(throughput, headers='keys', tablefmt='fancy_grid')
allure.attach(name='Throughput Data', body=data_table)
logging.info(f"\n{data_table}")
if not throughput["PASS"][0]:
logging.info("Throughput exceeded than set threshold")
pytest.fail("Throughput exceeded than set threshold")
logging.info("Throughput is within the set threshold")

View File

@@ -4,43 +4,129 @@
pytest -m "advanced_captive_portal_tests and bridge"
"""
import copy
import logging
import allure
import pytest
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests]
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests,
pytest.mark.click_to_continue]
captive = {
"auth-mode": "click-to-continue",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "int_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="Internal Captive Portal")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestBridgeModeadvancedcaptiveportal(object):
"""
Advanced Captive Portal Test: BRIDGE Mode
@@ -49,13 +135,12 @@ class TestBridgeModeadvancedcaptiveportal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.click_to_continue
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 2.4 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10977", name="WIFI-10977")
def test_bridge_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, check_connectivity,
setup_configuration, get_testbed_details, get_target_object):
def test_bridge_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object):
"""
BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and bridge and click_to_continue"
@@ -81,9 +166,90 @@ class TestBridgeModeadvancedcaptiveportal(object):
body="Click-to-continue mode: In this mode the client will be redirected to the page where "
"the client needs to accept the terms of service before getting internet.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=setup_configuration,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 5 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object):
"""
BRIDGE Mode Advanced Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and bridge and click_to_continue"
"""
profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"],
"security_key": "something",
"captive": {
"auth-mode": "click-to-continue",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "open"
mode = "BRIDGE"
band = "fiveg"
# json post data for API
json_post_data = 'action=click&accept_terms=clicked'
allure.attach(name="Definition",
body="Click-to-continue mode: In this mode the client will be redirected to the page where "
"the client needs to accept the terms of service before getting internet.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with owe encryption 6 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_6g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object):
"""
BRIDGE Mode Advanced Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and bridge and click_to_continue"
"""
profile_data = {"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"],
"security_key": "something",
"captive": {
"auth-mode": "click-to-continue",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "owe"
mode = "BRIDGE"
band = "sixg"
# json post data for API
json_post_data = 'action=click&accept_terms=clicked'
allure.attach(name="Definition",
body="Click-to-continue mode: In this mode the client will be redirected to the page where "
"the client needs to accept the terms of service before getting internet.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160)
assert passes == "PASS", result

View File

@@ -4,43 +4,129 @@
pytest -m "advanced_captive_portal_tests and nat"
"""
import copy
import logging
import allure
import pytest
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests]
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests,
pytest.mark.click_to_continue]
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
captive = {
"auth-mode": "click-to-continue",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "int_cap_portal_2g_ctc", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="Internal Captive Portal")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestNatModeadvancedcaptiveportal(object):
"""
Advanced Captive Portal Test: NAT Mode
@@ -49,13 +135,13 @@ class TestNatModeadvancedcaptiveportal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.click_to_continue
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 2.4 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14121", name="WIFI-14121")
def test_nat_open_2g_click_to_continue(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, check_connectivity,
setup_configuration, get_testbed_details, get_target_object):
def test_nat_open_2g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs,
num_stations, check_connectivity,
get_testbed_details, get_target_object):
"""
nat Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and nat and click_to_continue"
@@ -81,9 +167,92 @@ class TestNatModeadvancedcaptiveportal(object):
body="Click-to-continue mode: In this mode the client will be redirected to the page where "
"the client needs to accept the terms of service before getting internet.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=setup_configuration,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with open encryption 5 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_open_5g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs,
num_stations, check_connectivity,
get_testbed_details, get_target_object):
"""
nat Mode Advanced Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and nat and click_to_continue"
"""
profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"],
"security_key": "something",
"captive": {
"auth-mode": "click-to-continue",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "open"
mode = "NAT-WAN"
band = "fiveg"
# json post data for API
json_post_data = 'action=click&accept_terms=clicked'
allure.attach(name="Definition",
body="Click-to-continue mode: In this mode the client will be redirected to the page where "
"the client needs to accept the terms of service before getting internet.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Click-to-continue mode with owe encryption 6 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_6g_click_to_continue(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs,
num_stations, check_connectivity,
get_testbed_details, get_target_object):
"""
nat Mode Advanced Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and nat and click_to_continue"
"""
profile_data = {"ssid_name": "int_cap_portal_6g_ctc", "appliedRadios": ["6G"],
"security_key": "something",
"captive": {
"auth-mode": "click-to-continue",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "owe"
mode = "NAT-WAN"
band = "sixg"
# json post data for API
json_post_data = 'action=click&accept_terms=clicked'
allure.attach(name="Definition",
body="Click-to-continue mode: In this mode the client will be redirected to the page where "
"the client needs to accept the terms of service before getting internet.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160)
assert passes == "PASS", result

View File

@@ -4,19 +4,16 @@
pytest -m "advanced_captive_portal_tests and bridge"
"""
import copy
import logging
import allure
import pytest
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests]
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests,
pytest.mark.local_user_and_pass]
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
captive = {
"auth-mode": "credentials",
"credentials": [
{
@@ -29,24 +26,111 @@ setup_params_general = {
"telecominfraproject.com"
]
}
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "int_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="Internal Captive Portal")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestBridgeModeadvancedcaptiveportal(object):
"""
Advanced Captive Portal Test: BRIDGE Mode
@@ -55,13 +139,12 @@ class TestBridgeModeadvancedcaptiveportal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.local_user_and_pass
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 2.4 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10991", name="WIFI-10991")
def test_bridge_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, check_connectivity,
setup_configuration, get_testbed_details, get_target_object):
def test_bridge_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs,
num_stations,check_connectivity,get_testbed_details, get_target_object):
"""
BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and bridge and local_user_and_pass"
@@ -93,9 +176,106 @@ class TestBridgeModeadvancedcaptiveportal(object):
body="Local user/pass mode (Captive-Credentials): In this mode the client needs to "
"enter the valid credentials that are configured in the AP to get the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=setup_configuration,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 5 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs,
num_stations, check_connectivity, get_testbed_details,
get_target_object):
"""
BRIDGE Mode Advanced Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and bridge and local_user_and_pass"
"""
profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"],
"security_key": "something",
"captive": {
"auth-mode": "credentials",
"credentials": [
{
"username": "abc",
"password": "def"
}
],
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "open"
mode = "BRIDGE"
band = "fiveg"
# json post data for API
json_post_data = 'username=abc&password=def&action=credentials'
allure.attach(name="Definition",
body="Local user/pass mode (Captive-Credentials): In this mode the client needs to "
"enter the valid credentials that are configured in the AP to get the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with owe encryption 6 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs,
num_stations, check_connectivity, get_testbed_details,
get_target_object):
"""
BRIDGE Mode Advanced Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and bridge and local_user_and_pass"
"""
profile_data = {"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"],
"security_key": "something",
"captive": {
"auth-mode": "credentials",
"credentials": [
{
"username": "abc",
"password": "def"
}
],
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "owe"
mode = "BRIDGE"
band = "sixg"
# json post data for API
json_post_data = 'username=abc&password=def&action=credentials'
allure.attach(name="Definition",
body="Local user/pass mode (Captive-Credentials): In this mode the client needs to "
"enter the valid credentials that are configured in the AP to get the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160)
assert passes == "PASS", result

View File

@@ -4,19 +4,15 @@
pytest -m "advanced_captive_portal_tests and nat"
"""
import copy
import logging
import allure
import pytest
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests]
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests,
pytest.mark.local_user_and_pass]
captive = {
"auth-mode": "credentials",
"credentials": [
{
@@ -29,24 +25,111 @@ setup_params_general = {
"telecominfraproject.com"
]
}
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "int_cap_portal_2g_lup", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="Internal Captive Portal")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestNatModeadvancedcaptiveportal(object):
"""
Advanced Captive Portal Test: NAT Mode
@@ -55,13 +138,12 @@ class TestNatModeadvancedcaptiveportal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.local_user_and_pass
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 2.4 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14122", name="WIFI-14122")
def test_nat_open_2g_local_user_and_pass(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, check_connectivity,
setup_configuration, get_testbed_details, get_target_object):
def test_nat_open_2g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object):
"""
NAT Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and nat and local_user_and_pass"
@@ -93,9 +175,102 @@ class TestNatModeadvancedcaptiveportal(object):
body="Local user/pass mode (Captive-Credentials): In this mode the client needs to "
"enter the valid credentials that are configured in the AP to get the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=setup_configuration,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with open encryption 5 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_open_5g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object):
"""
NAT Mode Advanced Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and nat and local_user_and_pass"
"""
profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"],
"security_key": "something",
"captive": {
"auth-mode": "credentials",
"credentials": [
{
"username": "abc",
"password": "def"
}
],
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "open"
mode = "NAT-WAN"
band = "fiveg"
# json post data for API
json_post_data = 'username=abc&password=def&action=credentials'
allure.attach(name="Definition",
body="Local user/pass mode (Captive-Credentials): In this mode the client needs to "
"enter the valid credentials that are configured in the AP to get the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Local user/pass mode with owe encryption 6 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_6g_local_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object):
"""
NAT Mode Advanced Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and nat and local_user_and_pass"
"""
profile_data = {"ssid_name": "int_cap_portal_6g_lup", "appliedRadios": ["6G"],
"security_key": "something",
"captive": {
"auth-mode": "credentials",
"credentials": [
{
"username": "abc",
"password": "def"
}
],
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "owe"
mode = "NAT-WAN"
band = "sixg"
# json post data for API
json_post_data = 'username=abc&password=def&action=credentials'
allure.attach(name="Definition",
body="Local user/pass mode (Captive-Credentials): In this mode the client needs to "
"enter the valid credentials that are configured in the AP to get the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160)
assert passes == "PASS", result

View File

@@ -4,19 +4,16 @@
pytest -m "advanced_captive_portal_tests and bridge"
"""
import copy
import logging
import allure
import pytest
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests]
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.bridge, pytest.mark.internal_captive_portal_tests,
pytest.mark.radius_user_and_pass]
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
captive = {
"auth-mode": "radius",
"auth-server": "10.28.3.21",
"auth-port": 1812,
@@ -26,24 +23,110 @@ setup_params_general = {
"telecominfraproject.com"
]
}
setup_params_general = {
"mode": "BRIDGE",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "int_cap_portal_2g_rup", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="Internal Captive Portal")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestBridgeModeadvancedcaptiveportal(object):
"""
Advanced Captive Portal Test: BRIDGE Mode
@@ -52,14 +135,12 @@ class TestBridgeModeadvancedcaptiveportal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.radius_user_and_pass
@pytest.mark.ow_regression_lf
@allure.title("Radius user/pass mode with open encryption 2.4 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10996", name="WIFI-10996")
def test_bridge_open_2g_radius_user_and_pass(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, check_connectivity,
setup_configuration, get_testbed_details, get_target_object,
radius_info):
def test_bridge_open_2g_radius_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case,get_test_device_logs, num_stations,
check_connectivity,get_testbed_details,get_target_object,radius_info):
"""
BRIDGE Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and bridge and radius_user_and_pass"
@@ -92,9 +173,106 @@ class TestBridgeModeadvancedcaptiveportal(object):
" the valid credentials that are configured in the radius server being used to get "
"the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=setup_configuration,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Radius user/pass mode with open encryption 5 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_open_5g_radius_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object,
radius_info):
"""
BRIDGE Mode Advanced Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and bridge and radius_user_and_pass"
"""
profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"],
"security_key": "something",
"captive": {
"auth-mode": "radius",
"auth-server": "10.28.3.21",
"auth-port": 1812,
"auth-secret": "testing123",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "open"
mode = "BRIDGE"
band = "fiveg"
identity = radius_info['user']
passwd = radius_info["password"]
# json post data for API
json_post_data = f"username={identity}&password={passwd}&action=radius"
print("json_post_data", json_post_data)
allure.attach(name="Definition",
body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter"
" the valid credentials that are configured in the radius server being used to get "
"the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Radius user/pass mode with owe encryption 6 GHz Band Bridge mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_bridge_6g_radius_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object,
radius_info):
"""
BRIDGE Mode Advanced Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and bridge and radius_user_and_pass"
"""
profile_data = {"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"],
"security_key": "something",
"captive": {
"auth-mode": "radius",
"auth-server": "10.28.3.21",
"auth-port": 1812,
"auth-secret": "testing123",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "owe"
mode = "BRIDGE"
band = "sixg"
identity = radius_info['user']
passwd = radius_info["password"]
# json post data for API
json_post_data = f"username={identity}&password={passwd}&action=radius"
print("json_post_data", json_post_data)
allure.attach(name="Definition",
body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter"
" the valid credentials that are configured in the radius server being used to get "
"the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160)
assert passes == "PASS", result

View File

@@ -4,19 +4,15 @@
pytest -m "advanced_captive_portal_tests and nat"
"""
import copy
import logging
import allure
import pytest
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests]
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": {
pytestmark = [pytest.mark.advanced_captive_portal_tests, pytest.mark.nat, pytest.mark.internal_captive_portal_tests,
pytest.mark.radius_user_and_pass]
captive = {
"auth-mode": "radius",
"auth-server": "10.28.3.21",
"auth-port": 1812,
@@ -26,24 +22,110 @@ setup_params_general = {
"telecominfraproject.com"
]
}
setup_params_general = {
"mode": "NAT",
"ssid_modes": {
"open": [
{"ssid_name": "ssid_captive_portal_open_2g_br", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"], "security_key": "something",
"captive": captive
}
],
"owe": [
{"ssid_name": "int_cap_portal_2g_rup", "appliedRadios": ["2G"], "security_key": "something",
"captive": captive
},
{"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"], "security_key": "something",
"captive": captive
}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel": 6,
"channel-mode": "HE"
},
"5G": {
"band": "5G",
"channel": 36,
"channel-mode": "HE"
},
"6G": {
"band": "6G",
"channel": 33,
"channel-width": 160,
"channel-mode": "HE"
}
},
"radius": False
}
# Deep copy the original dictionary to avoid modifying it
setup_params_general_wifi7 = copy.deepcopy(setup_params_general)
# Update channel-mode to 'EHT' for all bands
for band in setup_params_general_wifi7["rf"]:
setup_params_general_wifi7["rf"][band]["channel-mode"] = "EHT"
if band == "6G":
setup_params_general_wifi7["rf"][band]["channel-width"] = 320
testbed_details_global = None
dut_data = {}
is_bw320 = False
is_ht160 = False
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
global is_bw320
global is_ht160
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
if ap_mode == "wifi7":
is_bw320 = True
if ap_mode == "wifi6e":
is_ht160 = True
# Assign setup_params_general based on mode
if ap_mode == "wifi6" or ap_mode == "wifi6e":
setup_params_general = setup_params_general
elif ap_mode == "wifi7":
setup_params_general = setup_params_general_wifi7
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Advanced Captive Portal Test")
@allure.parent_suite("Advanced Captive Portal Tests")
@allure.suite(suite_name="Internal Captive Portal")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestNATModeadvancedcaptiveportal(object):
"""
Advanced Captive Portal Test: NAT Mode
@@ -52,14 +134,12 @@ class TestNATModeadvancedcaptiveportal(object):
@pytest.mark.open
@pytest.mark.twog
@pytest.mark.radius_user_and_pass
@pytest.mark.ow_regression_lf
@allure.title("Radius user/pass mode with open encryption 2.4 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14123", name="WIFI-14123")
def test_nat_open_2g_radius_user_and_pass(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, check_connectivity,
setup_configuration, get_testbed_details, get_target_object,
radius_info):
def test_nat_open_2g_radius_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object, radius_info):
"""
NAT Mode Advanced Captive Portal Test with open encryption 2.4 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and twog and nat and radius_user_and_pass"
@@ -92,9 +172,104 @@ class TestNATModeadvancedcaptiveportal(object):
" the valid credentials that are configured in the radius server being used to get "
"the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=setup_configuration,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.open
@pytest.mark.fiveg
@pytest.mark.ow_regression_lf
@allure.title("Radius user/pass mode with open encryption 5 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_open_5g_radius_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object, radius_info):
"""
NAT Mode Advanced Captive Portal Test with open encryption 5 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and open and fiveg and nat and radius_user_and_pass"
"""
profile_data = {"ssid_name": "ssid_captive_portal_open_5g_br", "appliedRadios": ["5G"],
"security_key": "something",
"captive": {
"auth-mode": "radius",
"auth-server": "10.28.3.21",
"auth-port": 1812,
"auth-secret": "testing123",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "open"
mode = "NAT-WAN"
band = "twog"
identity = radius_info['user']
passwd = radius_info["password"]
# json post data for API
json_post_data = f"username={identity}&password={passwd}&action=radius"
print("json_post_data", json_post_data)
allure.attach(name="Definition",
body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter"
" the valid credentials that are configured in the radius server being used to get "
"the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object)
assert passes == "PASS", result
@pytest.mark.owe
@pytest.mark.twog
@pytest.mark.sixg
@pytest.mark.ow_regression_lf
@allure.title("Radius user/pass mode with owe encryption 6 GHz Band NAT mode")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14498", name="WIFI-14498")
def test_nat_6g_radius_user_and_pass(self, setup_initial_configuration, get_test_library,
get_dut_logs_per_test_case, get_test_device_logs, num_stations,
check_connectivity, get_testbed_details, get_target_object, radius_info):
"""
NAT Mode Advanced Captive Portal Test with owe encryption 6 GHz Band
pytest -m "advanced_captive_portal_tests and internal_captive_portal_tests and owe and sixg and nat and radius_user_and_pass"
"""
profile_data = {"ssid_name": "int_cap_portal_6g_rup", "appliedRadios": ["6G"],
"security_key": "something",
"captive": {
"auth-mode": "radius",
"auth-server": "10.28.3.21",
"auth-port": 1812,
"auth-secret": "testing123",
"walled-garden-fqdn": [
"*.google.com",
"telecominfraproject.com"
]
}
}
ssid_name = profile_data["ssid_name"]
security_key = "[BLANK]"
security = "owe"
mode = "NAT-WAN"
band = "sixg"
identity = radius_info['user']
passwd = radius_info["password"]
# json post data for API
json_post_data = f"username={identity}&password={passwd}&action=radius"
print("json_post_data", json_post_data)
allure.attach(name="Definition",
body="Radius user/pass mode (Captive-Radius): In this mode the client needs to enter"
" the valid credentials that are configured in the radius server being used to get "
"the internet access.")
passes, result = get_test_library.advanced_captive_portal(ssid=ssid_name, security=security,
dut_data=dut_data,
passkey=security_key, mode=mode, band=band,
num_sta=num_stations, json_post_data=json_post_data,
get_testbed_details=get_testbed_details,
tip_2x_obj=get_target_object, enable_owe=True, is_bw320=is_bw320,is_ht160=is_ht160)
assert passes == "PASS", result

View File

@@ -21,7 +21,6 @@ setup_params_general1 = {
"band": "5G",
"country": "US",
"allow-dfs": True,
"channel-mode": "VHT",
"channel-width": 80,
"channel": 52
}
@@ -53,13 +52,15 @@ class TestDFSChannel52Bw80(object):
To verify that a 5G client operating on channel 52 shifts to a non-DFS channel if radar is detected
Unique Marker: pytest -m "bandwidth_80MHz and ow_sanity_lf and dfs_channel_52_bw_80"
"""
channel = setup_params_general1["rf"]["5G"]["channel"]
profile_data = setup_params_general1["ssid_modes"]["wpa2_personal"][0]
ssid_name = profile_data["ssid_name"]
security_key = profile_data["security_key"]
security = "wpa2"
band = "fiveg"
mode = "BRIDGE"
get_test_library.dfs_test(ssid=ssid_name, security=security,
print("channel:",channel)
get_test_library.dfs_test(ssid=ssid_name, security=security, channel=channel,
passkey=security_key, mode=mode, band=band,
num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object)
get_target_object.reboot()
@@ -78,7 +79,6 @@ setup_params_general2 = {
"band": "5G",
"country": "US",
"allow-dfs": True,
"channel-mode": "VHT",
"channel-width": 80,
"channel": 100
}
@@ -110,13 +110,14 @@ class TestDFSChannel100Bw80(object):
To verify that a 5G client operating on channel 100 shifts to a non-DFS channel if radar is detected
Unique Marker: pytest -m "bandwidth_80MHz and ow_sanity_lf and dfs_channel_100_bw_80"
"""
channel = setup_params_general2["rf"]["5G"]["channel"]
profile_data = setup_params_general2["ssid_modes"]["wpa2_personal"][0]
ssid_name = profile_data["ssid_name"]
security_key = profile_data["security_key"]
security = "wpa2"
band = "fiveg"
mode = "BRIDGE"
get_test_library.dfs_test(ssid=ssid_name, security=security,
get_test_library.dfs_test(ssid=ssid_name, security=security, channel=channel,
passkey=security_key, mode=mode, band=band,
num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object)
get_target_object.reboot()
@@ -135,7 +136,6 @@ setup_params_general11 = {
"band": "5G",
"country": "US",
"allow-dfs": True,
"channel-mode": "VHT",
"channel-width": 80,
"channel": 132
}
@@ -168,13 +168,14 @@ class TestDFSChannel132Bw80(object):
Unique Marker: pytest -m "bandwidth_80MHz and ow_sanity_lf and dfs_channel_132_bw_80"
"""
channel = setup_params_general11["rf"]["5G"]["channel"]
profile_data = setup_params_general11["ssid_modes"]["wpa2_personal"][0]
ssid_name = profile_data["ssid_name"]
security_key = profile_data["security_key"]
security = "wpa2"
band = "fiveg"
mode = "BRIDGE"
get_test_library.dfs_test(ssid=ssid_name, security=security,
get_test_library.dfs_test(ssid=ssid_name, security=security, channel=channel,
passkey=security_key, mode=mode, band=band,
num_sta=1, dut_data=setup_configuration, tip_2x_obj=get_target_object)
get_target_object.reboot()

View File

@@ -14,10 +14,23 @@ setup_params_general_5G = {
]
},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
@@ -208,7 +221,20 @@ setup_params_general_2G = {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False

View File

@@ -14,10 +14,23 @@ setup_params_general_5G = {
]
},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
@@ -209,7 +222,20 @@ setup_params_general_2G = {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,14 +1,14 @@
"""
Performance Test: Client Scale Test : BRIDGE Mode
pytest -m "client_scale_test and BRIDGE"
Performance Test: AX Client Scale Test : BRIDGE Mode
pytest -m "ax_client_scale_tests and BRIDGE"
"""
import logging
import allure
import pytest
pytestmark = [pytest.mark.bridge, pytest.mark.client_scale_tests]
pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests]
setup_params_general_2G = {
"mode": "BRIDGE",
@@ -22,8 +22,8 @@ setup_params_general_2G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="Open Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -37,8 +37,8 @@ setup_params_general_2G = {
@pytest.mark.twog
@pytest.mark.twog_band
class TestWifiCapacityBRIDGEMode2G(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and twog"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and twog"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3648", name="WIFI-3648")
@@ -47,8 +47,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for TCP Download 2.4 GHz")
def test_client_open_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and twog and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_download"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -66,8 +66,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for UDP Download 2.4 GHz")
def test_client_open_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and twog and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and twog and udp_download"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -86,8 +86,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_open_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and twog and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -106,8 +106,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_open_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and twog and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and twog and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -125,8 +125,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_open_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and twog and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and twog and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -144,8 +144,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_open_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and twog and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and twog and udp_upload"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -170,8 +170,8 @@ setup_params_general_5G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="Open Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -185,8 +185,8 @@ setup_params_general_5G = {
@pytest.mark.fiveg
@pytest.mark.fiveg_band
class TestWifiCapacityBRIDGEMode5G(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and fiveg"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and fiveg"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3649", name="WIFI-3649")
@@ -196,8 +196,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_open_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and fiveg and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_download"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -217,8 +217,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_open_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and fiveg and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_download"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -237,8 +237,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_open_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and fiveg and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -257,8 +257,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_open_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and fiveg and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -276,8 +276,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_open_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and fiveg and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and fiveg and udp_upload"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -295,8 +295,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_open_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and open and fiveg and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and open and fiveg and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]

View File

@@ -1,14 +1,14 @@
"""
Performance Test: Client Scale Test : NAT Mode
pytest -m "client_scale_test and nat"
Performance Test: AX Client Scale Test : NAT Mode
pytest -m "ax_client_scale_tests and nat"
"""
import logging
import allure
import pytest
pytestmark = [pytest.mark.nat, pytest.mark.client_scale_tests]
pytestmark = [pytest.mark.nat, pytest.mark.ax_client_scale_tests]
setup_params_general_2G = {
"mode": "NAT",
@@ -22,8 +22,8 @@ setup_params_general_2G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="Open Security")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
@@ -37,8 +37,8 @@ setup_params_general_2G = {
@pytest.mark.twog
@pytest.mark.twog_band
class TestWifiCapacityNATMode2G(object):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and twog"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and twog"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3648", name="WIFI-3648")
@@ -47,8 +47,8 @@ class TestWifiCapacityNATMode2G(object):
@allure.title("Test for TCP Download 2.4 GHz")
def test_client_open_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and twog and tcp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and twog and tcp_download"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -66,8 +66,8 @@ class TestWifiCapacityNATMode2G(object):
@allure.title("Test for UDP Download 2.4 GHz")
def test_client_open_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and twog and udp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and twog and udp_download"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -86,8 +86,8 @@ class TestWifiCapacityNATMode2G(object):
def test_client_open_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and twog and tcp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and twog and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -106,8 +106,8 @@ class TestWifiCapacityNATMode2G(object):
def test_client_open_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and twog and udp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and twog and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -125,8 +125,8 @@ class TestWifiCapacityNATMode2G(object):
def test_client_open_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and twog and tcp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and twog and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -144,8 +144,8 @@ class TestWifiCapacityNATMode2G(object):
def test_client_open_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and twog and udp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and twog and udp_upload"
"""
profile_data = {"ssid_name": "ssid_open_2g", "appliedRadios": ["2G"]}
ssid_name = profile_data["ssid_name"]
@@ -170,8 +170,8 @@ setup_params_general_5G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="Open Security")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
@@ -185,8 +185,8 @@ setup_params_general_5G = {
@pytest.mark.fiveg
@pytest.mark.fiveg_band
class TestWifiCapacityNATMode5G(object):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and fiveg"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and fiveg"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3649", name="WIFI-3649")
@@ -196,8 +196,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_open_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and fiveg and tcp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_download"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -217,8 +217,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_open_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and fiveg and udp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_download"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -237,8 +237,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_open_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and fiveg and tcp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -257,8 +257,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_open_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and fiveg and udp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -276,8 +276,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_open_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and fiveg and udp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and fiveg and udp_upload"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -295,8 +295,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_open_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and open and fiveg and tcp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and open and fiveg and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_open_5g", "appliedRadios": ["5G"]}
ssid_name = profile_data["ssid_name"]
@@ -306,4 +306,4 @@ class TestWifiCapacityNATMode5G(object):
upload_rate="1Gbps", protocol="TCP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"5G": max_stations})
assert True
assert True

View File

@@ -1,14 +1,14 @@
"""
Performance Test: Client Scale Test : BRIDGE Mode
pytest -m "client_scale_test and BRIDGE"
Performance Test: AX Client Scale Test : BRIDGE Mode
pytest -m "ax_client_scale_tests and BRIDGE"
"""
import logging
import allure
import pytest
pytestmark = [pytest.mark.performance, pytest.mark.bridge, pytest.mark.client_scale_tests]
pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests]
setup_params_general_2G = {
"mode": "BRIDGE",
@@ -17,13 +17,32 @@ setup_params_general_2G = {
{"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
]
},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -37,18 +56,19 @@ setup_params_general_2G = {
@pytest.mark.twog
@pytest.mark.twog_band
class TestWifiCapacityBRIDGEMode2G(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and twog"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3928", name="WIFI-3928")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_download
@pytest.mark.performance
@allure.title("Test for TCP Download 2.4 GHz")
def test_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -63,11 +83,12 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3930", name="WIFI-3930")
@pytest.mark.wpa2_personal
@pytest.mark.udp_download
@pytest.mark.performance
@allure.title("Test for UDP Download 2.4 GHz")
def test_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -86,8 +107,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa2_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -106,8 +127,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa2_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -122,12 +143,13 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_upload
@pytest.mark.performance
@allure.title("Test for TCP Upload 2.4 GHz")
def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and twog and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -142,12 +164,13 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128")
@pytest.mark.wpa2_personal
@pytest.mark.udp_upload
@pytest.mark.performance
@allure.title("Test for UDP Upload 2.4 GHz")
def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and twog and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and twog and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -167,13 +190,32 @@ setup_params_general_5G = {
{"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
]
},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -187,19 +229,20 @@ setup_params_general_5G = {
@pytest.mark.fiveg
@pytest.mark.fiveg_band
class TestWifiCapacityBRIDGEMode5G(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3929", name="WIFI-3929")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_download
@pytest.mark.performance
@allure.title("Test for TCP Download 5 GHz")
def test_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -215,12 +258,13 @@ class TestWifiCapacityBRIDGEMode5G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3931", name="WIFI-3931")
@pytest.mark.wpa2_personal
@pytest.mark.udp_download
@pytest.mark.performance
@allure.title("Test for UDP Download 5 GHz")
def test_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -239,8 +283,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa2_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -259,8 +303,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa2_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -274,12 +318,13 @@ class TestWifiCapacityBRIDGEMode5G(object):
@pytest.mark.udp_upload
@pytest.mark.wpa2_personal
@pytest.mark.performance
@allure.title("Test for UDP Upload 5 GHz")
def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -293,12 +338,13 @@ class TestWifiCapacityBRIDGEMode5G(object):
@pytest.mark.tcp_upload
@pytest.mark.wpa2_personal
@pytest.mark.performance
@allure.title("Test for TCP Upload 5 GHz")
def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and fiveg and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and fiveg and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -318,13 +364,32 @@ setup_params_general_dual = {
{"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
]
},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -340,18 +405,19 @@ setup_params_general_dual = {
@pytest.mark.dual_band
@pytest.mark.twog_band
class TestWifiCapacityBRIDGEModeDual(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3926", name="WIFI-3926")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_download
@pytest.mark.performance
@allure.title("Test for TCP Download 2.4 GHz and 5 GHz")
def test_client_wpa2_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -366,11 +432,12 @@ class TestWifiCapacityBRIDGEModeDual(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3927", name="WIFI-3927")
@pytest.mark.wpa2_personal
@pytest.mark.udp_download
@pytest.mark.performance
@allure.title("Test for UDP Download 2.4 GHz and 5 GHz")
def test_client_wpa2_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -389,8 +456,8 @@ class TestWifiCapacityBRIDGEModeDual(object):
def test_client_wpa2_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -409,8 +476,8 @@ class TestWifiCapacityBRIDGEModeDual(object):
def test_client_wpa2_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -425,12 +492,13 @@ class TestWifiCapacityBRIDGEModeDual(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_upload
@pytest.mark.performance
@allure.title("Test for TCP Upload 2.4 GHz and 5 GHz")
def test_client_wpa2_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -445,12 +513,13 @@ class TestWifiCapacityBRIDGEModeDual(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128")
@pytest.mark.wpa2_personal
@pytest.mark.udp_upload
@pytest.mark.performance
@allure.title("Test for UDP Upload 2.4 GHz and 5 GHz")
def test_client_wpa2_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa2_personal and dual_band and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa2_personal and dual_band and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -460,4 +529,4 @@ class TestWifiCapacityBRIDGEModeDual(object):
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})
assert True
assert True

View File

@@ -1,14 +1,14 @@
"""
Performance Test: Client Scale Test : NAT Mode
pytest -m "client_scale_test and nat"
Performance Test: AX Client Scale Test : NAT Mode
pytest -m "ax_client_scale_tests and nat"
"""
import logging
import allure
import pytest
pytestmark = [pytest.mark.performance, pytest.mark.nat, pytest.mark.client_scale_tests]
pytestmark = [pytest.mark.nat, pytest.mark.ax_client_scale_tests]
setup_params_general_2G = {
"mode": "NAT",
@@ -17,13 +17,32 @@ setup_params_general_2G = {
{"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
]
},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
@@ -37,18 +56,19 @@ setup_params_general_2G = {
@pytest.mark.twog
@pytest.mark.twog_band
class TestWifiCapacityNATMode2G(object):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and twog"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3928", name="WIFI-3928")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_download
@pytest.mark.performance
@allure.title("Test for TCP Download 2.4 GHz")
def test_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -63,11 +83,12 @@ class TestWifiCapacityNATMode2G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3930", name="WIFI-3930")
@pytest.mark.wpa2_personal
@pytest.mark.udp_download
@pytest.mark.performance
@allure.title("Test for UDP Download 2.4 GHz")
def test_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -86,8 +107,8 @@ class TestWifiCapacityNATMode2G(object):
def test_client_wpa2_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -106,8 +127,8 @@ class TestWifiCapacityNATMode2G(object):
def test_client_wpa2_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -122,12 +143,13 @@ class TestWifiCapacityNATMode2G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_upload
@pytest.mark.performance
@allure.title("Test for TCP Upload 2.4 GHz")
def test_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and twog and tcp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -142,12 +164,13 @@ class TestWifiCapacityNATMode2G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128")
@pytest.mark.wpa2_personal
@pytest.mark.udp_upload
@pytest.mark.performance
@allure.title("Test for UDP Upload 2.4 GHz")
def test_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and twog and udp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and twog and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -167,13 +190,32 @@ setup_params_general_5G = {
{"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
]
},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
@@ -187,19 +229,20 @@ setup_params_general_5G = {
@pytest.mark.fiveg
@pytest.mark.fiveg_band
class TestWifiCapacityNATMode5G(object):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and fiveg"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3929", name="WIFI-3929")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_download
@pytest.mark.performance
@allure.title("Test for TCP Download 5 GHz")
def test_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -215,12 +258,13 @@ class TestWifiCapacityNATMode5G(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3931", name="WIFI-3931")
@pytest.mark.wpa2_personal
@pytest.mark.udp_download
@pytest.mark.performance
@allure.title("Test for UDP Download 5 GHz")
def test_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -239,8 +283,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_wpa2_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -259,8 +303,8 @@ class TestWifiCapacityNATMode5G(object):
def test_client_wpa2_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -274,12 +318,13 @@ class TestWifiCapacityNATMode5G(object):
@pytest.mark.udp_upload
@pytest.mark.wpa2_personal
@pytest.mark.performance
@allure.title("Test for UDP Upload 5 GHz")
def test_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and udp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -293,12 +338,13 @@ class TestWifiCapacityNATMode5G(object):
@pytest.mark.tcp_upload
@pytest.mark.wpa2_personal
@pytest.mark.performance
@allure.title("Test for TCP Upload 5 GHz")
def test_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and fiveg and tcp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and fiveg and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -318,13 +364,32 @@ setup_params_general_dual = {
{"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
]
},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
@@ -340,18 +405,19 @@ setup_params_general_dual = {
@pytest.mark.dual_band
@pytest.mark.twog_band
class TestWifiCapacityNATModeDual(object):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and dual_band"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3926", name="WIFI-3926")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_download
@pytest.mark.performance
@allure.title("Test for TCP Download 2.4 GHz and 5 GHz")
def test_client_wpa2_NAT_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -366,11 +432,12 @@ class TestWifiCapacityNATModeDual(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3927", name="WIFI-3927")
@pytest.mark.wpa2_personal
@pytest.mark.udp_download
@pytest.mark.performance
@allure.title("Test for UDP Download 2.4 GHz and 5 GHz")
def test_client_wpa2_NAT_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_download"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -389,8 +456,8 @@ class TestWifiCapacityNATModeDual(object):
def test_client_wpa2_NAT_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -409,8 +476,8 @@ class TestWifiCapacityNATModeDual(object):
def test_client_wpa2_NAT_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_bidirectional"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -425,12 +492,13 @@ class TestWifiCapacityNATModeDual(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7127", name="WIFI-7127")
@pytest.mark.wpa2_personal
@pytest.mark.tcp_upload
@pytest.mark.performance
@allure.title("Test for TCP Upload 2.4 GHz and 5 GHz")
def test_client_wpa2_NAT_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and tcp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -445,12 +513,13 @@ class TestWifiCapacityNATModeDual(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-7128", name="WIFI-7128")
@pytest.mark.wpa2_personal
@pytest.mark.udp_upload
@pytest.mark.performance
@allure.title("Test for UDP Upload 2.4 GHz and 5 GHz")
def test_client_wpa2_NAT_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test NAT mode
pytest -m "client_scale_tests and nat and wpa2_personal and dual_band and udp_upload"
""" AX Client Scale Test NAT mode
pytest -m "ax_client_scale_tests and nat and wpa2_personal and dual_band and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa2_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -460,4 +529,4 @@ class TestWifiCapacityNATModeDual(object):
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})
assert True
assert True

View File

@@ -1,14 +1,14 @@
"""
Performance Test: Client Scale Test : BRIDGE Mode
pytest -m "client_scale_tests and bridge"
Performance Test: AX Client Scale Test : BRIDGE Mode
pytest -m "ax_client_scale_tests and bridge"
"""
import os
import pytest
import allure
pytestmark = [pytest.mark.bridge, pytest.mark.client_scale_tests]
pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests]
setup_params_general_2G = {
"mode": "BRIDGE",
@@ -22,8 +22,8 @@ setup_params_general_2G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA3 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -37,8 +37,8 @@ setup_params_general_2G = {
@pytest.mark.twog
@pytest.mark.twog_band
class TestWifiCapacityBRIDGEMode2G(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and twog"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3651", name="WIFI-3651")
@@ -47,8 +47,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for TCP Download 2.4 GHz")
def test_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -65,8 +65,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for TCP Upload 2.4 GHz")
def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -83,8 +83,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for UDP Upload 2.4 GHz")
def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -102,8 +102,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for UDP Download 2.4 GHz")
def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -122,8 +122,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa3_bridge_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and twog and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -142,8 +142,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa3_bridge_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and twog and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and twog and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa3_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -168,8 +168,8 @@ setup_params_general_5G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA3 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -183,8 +183,8 @@ setup_params_general_5G = {
@pytest.mark.fiveg
@pytest.mark.fiveg_band
class TestWifiCapacityBRIDGEMode5G(object):
""" Client Scale Test BRIDGE mode
client_scale_tests and bridge and wpa3_personal and fiveg"
""" AX Client Scale Test BRIDGE mode
ax_client_scale_tests and bridge and wpa3_personal and fiveg"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3653", name="WIFI-3653")
@@ -193,8 +193,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
@allure.title("Test for TCP Download 5 GHz")
def test_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -212,8 +212,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
@allure.title("Test for UDP Download 5 GHz")
def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -232,8 +232,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa3_bridge_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -252,8 +252,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa3_bridge_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -270,8 +270,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
@allure.title("Test for TCP Upload 5 GHz")
def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -288,8 +288,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
@allure.title("Test for UDP Upload 5 GHz")
def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and fiveg and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and fiveg and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa3_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -310,13 +310,32 @@ setup_params_general_6G = {
{"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"}
]
},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA3 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -328,20 +347,20 @@ setup_params_general_6G = {
@pytest.mark.usefixtures("setup_configuration")
@pytest.mark.wpa3_personal
@pytest.mark.twog
@pytest.mark.performance
class TestWifiCapacityBRIDGEMode6G(object):
""" Client Scale Test BRIDGE mode
client_scale_tests and bridge and wpa3_personal and sixg"
""" AX Client Scale Test BRIDGE mode
ax_client_scale_tests and bridge and wpa3_personal and sixg"
"""
@pytest.mark.wpa3_personal
@pytest.mark.tcp_download
@pytest.mark.sixg
@pytest.mark.performance
@allure.title("Test for TCP Download 6 GHz")
def test_client_wpa3_bridge_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -357,11 +376,12 @@ class TestWifiCapacityBRIDGEMode6G(object):
@pytest.mark.wpa3_personal
@pytest.mark.udp_download
@pytest.mark.sixg
@pytest.mark.performance
@allure.title("Test for UDP Download 6 GHz")
def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -381,8 +401,8 @@ class TestWifiCapacityBRIDGEMode6G(object):
def test_client_wpa3_bridge_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -402,8 +422,8 @@ class TestWifiCapacityBRIDGEMode6G(object):
def test_client_wpa3_bridge_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -418,11 +438,12 @@ class TestWifiCapacityBRIDGEMode6G(object):
@pytest.mark.wpa3_personal
@pytest.mark.tcp_upload
@pytest.mark.sixg
@pytest.mark.performance
@allure.title("Test for TCP Upload 6 GHz")
def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -437,11 +458,12 @@ class TestWifiCapacityBRIDGEMode6G(object):
@pytest.mark.wpa3_personal
@pytest.mark.udp_upload
@pytest.mark.sixg
@pytest.mark.performance
@allure.title("Test for UDP Upload 6 GHz")
def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa3_personal and sixg and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa3_personal and sixg and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa3_6g", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -451,4 +473,4 @@ class TestWifiCapacityBRIDGEMode6G(object):
upload_rate="1Gbps", protocol="UDP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": max_stations})
assert True
assert True

View File

@@ -1,14 +1,14 @@
"""
Performance Test: Client Scale Test : BRIDGE Mode
pytest -m "client_scale_test and BRIDGE"
Performance Test: AX Client Scale Test : BRIDGE Mode
pytest -m "ax_client_scale_tests and BRIDGE"
"""
import logging
import allure
import pytest
pytestmark = [pytest.mark.bridge, pytest.mark.client_scale_tests]
pytestmark = [pytest.mark.bridge, pytest.mark.ax_client_scale_tests]
setup_params_general_2G = {
"mode": "BRIDGE",
@@ -22,8 +22,8 @@ setup_params_general_2G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="WPA Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -37,8 +37,8 @@ setup_params_general_2G = {
@pytest.mark.twog
@pytest.mark.twog_band
class TestWifiCapacityBRIDGEMode2G(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and twog"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3650", name="WIFI-3650")
@@ -47,8 +47,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for TCP Download 2.4 GHz")
def test_client_wpa_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -66,8 +66,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
@allure.title("Test for UDP Download 2.4 GHz")
def test_client_wpa_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration, max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -86,8 +86,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -106,8 +106,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -125,8 +125,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and twog and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -144,8 +144,8 @@ class TestWifiCapacityBRIDGEMode2G(object):
def test_client_wpa_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and twog and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and twog and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa_2g", "appliedRadios": ["2G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -170,8 +170,8 @@ setup_params_general_5G = {
}
@allure.feature("Client Scale Tests")
@allure.parent_suite("Client Scale Tests")
@allure.feature("AX Client Scale Tests")
@allure.parent_suite("AX Client Scale Tests")
@allure.suite(suite_name="wpa Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
@@ -185,8 +185,8 @@ setup_params_general_5G = {
@pytest.mark.fiveg
@pytest.mark.fiveg_band
class TestWifiCapacityBRIDGEMode5G(object):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and fiveg"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3652", name="WIFI-3652")
@@ -196,8 +196,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa_BRIDGE_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and tcp_download"
"""
profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -217,8 +217,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa_BRIDGE_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_download"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and udp_download"
"""
profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -237,8 +237,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa_BRIDGE_tcp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and tcp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -257,8 +257,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa_BRIDGE_udp_bidirectional(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_bidirectional"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and udp_bidirectional"
"""
profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -276,8 +276,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and udp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and udp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
@@ -295,8 +295,8 @@ class TestWifiCapacityBRIDGEMode5G(object):
def test_client_wpa_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration,
max_stations):
""" Client Scale Test BRIDGE mode
pytest -m "client_scale_tests and bridge and wpa_personal and fiveg and tcp_upload"
""" AX Client Scale Test BRIDGE mode
pytest -m "ax_client_scale_tests and bridge and wpa_personal and fiveg and tcp_upload"
"""
profile_data = {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["5G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -4,6 +4,7 @@
pytest -m "dataplane_tests wpa2_personal security and bridge"
"""
import logging
import os
import pytest
import allure
@@ -11,28 +12,146 @@ import allure
pytestmark = [pytest.mark.dataplane_tests,
pytest.mark.bridge, pytest.mark.wpa2_personal, pytest.mark.performance]
setup_params_general = {
setup_params_general1 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa2_personal": [
{"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general2 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa2_personal": [
{"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general3 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa2_personal": [
{"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "EHT",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "EHT",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 320,
"channel-mode": "EHT",
"channel": 33
}
},
"radius": False
}
testbed_details_global = None
setup_params_general = None
dut_data = {}
@pytest.fixture(scope="class")
def initialize_testbed(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
# Assign setup_params_general based on mode
if ap_mode == "wifi6":
setup_params_general = setup_params_general1
elif ap_mode == "wifi6e":
setup_params_general = setup_params_general2
elif ap_mode == "wifi7":
setup_params_general = setup_params_general3
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
logging.info(f"get_marker result:{get_marker}")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Dataplane Tests")
@allure.parent_suite("Dataplane Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestDataplaneThroughputBRIDGE(object):
"""Dataplane THroughput BRIDGE Mode
pytest -m "dataplane_tests and wpa2_personal and bridge"
@@ -45,7 +164,7 @@ class TestDataplaneThroughputBRIDGE(object):
def test_tcp_upd_wpa2_personal_bridge_2g_band(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, client_type,
get_target_object,
num_stations, setup_configuration):
num_stations, initialize_testbed):
"""Dataplane THroughput BRIDGE Mode.
pytest -m "dataplane_tests and bridge and wpa2_personal and twog"
"""
@@ -55,14 +174,17 @@ class TestDataplaneThroughputBRIDGE(object):
security = "wpa2"
mode = "BRIDGE"
band = "twog"
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"ap_mode value:{ap_mode}")
influx_tags = "dataplane-tcp-udp-bridge-wpa2_personal-2.4G"
get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security,
num_sta=1, mode=mode,
band=band,
instance_name="TIP_DPT_DPT_WPA2_2G_BRIDGE",
influx_tags=influx_tags, move_to_influx=False,
dut_data=setup_configuration,
client_type=client_type
dut_data=dut_data,
client_type=client_type, duration="30s", path_loss=10,
download_rate="85%", upload_rate="0", ap_mode =ap_mode
)
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3674", name="WIFI-3674")
@@ -72,7 +194,7 @@ class TestDataplaneThroughputBRIDGE(object):
def test_tcp_upd_wpa2_personal_bridge_5g_band(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, client_type,
get_target_object,
num_stations, setup_configuration):
num_stations, initialize_testbed):
"""Dataplane THroughput BRIDGE Mode
pytest -m "dataplane_tests and bridge and wpa2_personal and fiveg"
"""
@@ -82,12 +204,15 @@ class TestDataplaneThroughputBRIDGE(object):
security_key = profile_data["security_key"]
mode = "BRIDGE"
band = "fiveg"
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"ap_mode value:{ap_mode}")
influx_tags = "dataplane-tcp-udp-bridge-wpa2_personal-5G"
get_test_library.dataplane_throughput_test(ssid=ssid_name, passkey=security_key, security=security,
num_sta=1, mode=mode,
band=band,
instance_name="TIP_DPT_DPT_WPA2_5G_BRIDGE",
influx_tags=influx_tags, move_to_influx=False,
dut_data=setup_configuration,
client_type=client_type
dut_data=dut_data,
client_type=client_type, duration="30s", path_loss=10,
download_rate="85%", upload_rate="0", ap_mode =ap_mode
)

View File

@@ -4,6 +4,7 @@
pytest -m "dataplane_tests wpa2_personal security and nat"
"""
import logging
import os
import pytest
import allure
@@ -11,28 +12,148 @@ import allure
pytestmark = [pytest.mark.dataplane_tests,
pytest.mark.nat, pytest.mark.wpa2_personal, pytest.mark.performance]
setup_params_general = {
setup_params_general1 = {
"mode": "NAT",
"ssid_modes": {
"wpa2_personal": [
{"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}]},
"rf": {},
{"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general2 = {
"mode": "NAT",
"ssid_modes": {
"wpa2_personal": [
{"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general3 = {
"mode": "NAT",
"ssid_modes": {
"wpa2_personal": [
{"ssid_name": "wpa2_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa2_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "EHT",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "EHT",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 320,
"channel-mode": "EHT",
"channel": 33
}
},
"radius": False
}
testbed_details_global = None
setup_params_general = None
dut_data = {}
@pytest.fixture(scope="class")
def initialize_testbed(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
# Assign setup_params_general based on mode
if ap_mode == "wifi6":
setup_params_general = setup_params_general1
elif ap_mode == "wifi6e":
setup_params_general = setup_params_general2
elif ap_mode == "wifi7":
setup_params_general = setup_params_general3
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Dataplane Tests")
@allure.parent_suite("Dataplane Tests")
@allure.suite(suite_name="WPA2 Personal Security")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestDataplaneThroughputNAT(object):
"""Dataplane THroughput NAT Mode
pytest -m "dataplane_tests and wpa2_personal and nat"
@@ -45,7 +166,7 @@ class TestDataplaneThroughputNAT(object):
def test_tcp_upd_wpa2_personal_nat_2g_band(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, client_type,
get_target_object,
num_stations, setup_configuration):
num_stations, initialize_testbed):
"""Dataplane THroughput NAT Mode.
pytest -m "dataplane_tests and nat and wpa2_personal and twog"
"""
@@ -55,14 +176,17 @@ class TestDataplaneThroughputNAT(object):
security_key = profile_data["security_key"]
mode = "NAT-WAN"
band = "twog"
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"ap_mode value:{ap_mode}")
influx_tags = "dataplane-tcp-udp-nat-wpa2_personal-2.4G"
get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key,
num_sta=1, mode=mode,
band=band,
instance_name="TIP_DPT_DPT_WPA2_2G_NAT",
influx_tags=influx_tags, move_to_influx=False,
dut_data=setup_configuration,
client_type=client_type
dut_data=dut_data,
client_type=client_type, duration="30s", path_loss=10,
download_rate="85%", upload_rate="0", ap_mode =ap_mode
)
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3674", name="WIFI-3674")
@@ -72,7 +196,7 @@ class TestDataplaneThroughputNAT(object):
def test_tcp_upd_wpa2_personal_nat_5g_band(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, client_type,
get_target_object,
num_stations, setup_configuration):
num_stations, initialize_testbed):
"""Dataplane THroughput NAT Mode
pytest -m "dataplane_tests and nat and wpa2_personal and fiveg"
"""
@@ -82,12 +206,15 @@ class TestDataplaneThroughputNAT(object):
security_key = profile_data["security_key"]
mode = "NAT-WAN"
band = "fiveg"
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"ap_mode value:{ap_mode}")
influx_tags = "dataplane-tcp-udp-nat-wpa2_personal-5G"
get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key,
num_sta=1, mode=mode,
band=band,
instance_name="TIP_DPT_DPT_WPA2_5G_NAT",
influx_tags=influx_tags, move_to_influx=False,
dut_data=setup_configuration,
client_type=client_type
dut_data=dut_data,
client_type=client_type, duration="30s", path_loss=10,
download_rate="85%", upload_rate="0", ap_mode =ap_mode
)

View File

@@ -4,6 +4,7 @@
pytest -m "dataplane_tests wpa3_personal security and bridge"
"""
import logging
import os
import pytest
import allure
@@ -11,7 +12,7 @@ import allure
pytestmark = [pytest.mark.dataplane_tests,
pytest.mark.bridge, pytest.mark.wpa3_personal]
setup_params_general = {
setup_params_general1 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa3_personal": [
@@ -19,22 +20,141 @@ setup_params_general = {
{"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general2 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general3 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "EHT",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "EHT",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 320,
"channel-mode": "EHT",
"channel": 33
}
},
"radius": False
}
testbed_details_global = None
setup_params_general = None
dut_data = {}
@pytest.fixture(scope="class")
def initialize_testbed(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
# Assign setup_params_general based on mode
if ap_mode == "wifi6":
setup_params_general = setup_params_general1
elif ap_mode == "wifi6e":
setup_params_general = setup_params_general2
elif ap_mode == "wifi7":
setup_params_general = setup_params_general3
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Dataplane Tests")
@allure.parent_suite("Dataplane Tests")
@allure.suite(suite_name="WPA3 Personal Security")
@allure.sub_suite(sub_suite_name="BRIDGE Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestDataplaneThroughputBRIDGE(object):
"""Dataplane THroughput BRIDGE Mode
pytest -m "dataplane_tests and wpa3_personal and bridge"
@@ -102,7 +222,7 @@ class TestDataplaneThroughputBRIDGE(object):
def test_tcp_udp_wpa3_personal_bridge_6g_band(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, client_type,
get_target_object,
num_stations, setup_configuration):
num_stations, initialize_testbed):
"""Dataplane THroughput BRIDGE Mode
pytest -m "dataplane_tests and bridge and wpa3_personal and sixg"
"""
@@ -112,12 +232,15 @@ class TestDataplaneThroughputBRIDGE(object):
security_key = profile_data["security_key"]
mode = "BRIDGE"
band = "sixg"
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"ap_mode value:{ap_mode}")
influx_tags = "dataplane-tcp-udp-bridge-wpa3_personal-6G"
get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key,
num_sta=num_stations, mode=mode,
band=band,
instance_name="TIP_DPT_DPT_WPA_6G_BRIDGE",
influx_tags=influx_tags, move_to_influx=False,
dut_data=setup_configuration,
client_type=client_type
dut_data=dut_data,
client_type=client_type, duration="30s", path_loss=10,
download_rate="85%", upload_rate="0", ap_mode =ap_mode
)

View File

@@ -4,6 +4,7 @@
pytest -m "dataplane_tests wpa3_personal security and nat"
"""
import logging
import os
import pytest
import allure
@@ -11,7 +12,7 @@ import allure
pytestmark = [pytest.mark.dataplane_tests,
pytest.mark.nat, pytest.mark.wpa3_personal]
setup_params_general = {
setup_params_general1 = {
"mode": "NAT",
"ssid_modes": {
"wpa3_personal": [
@@ -19,22 +20,142 @@ setup_params_general = {
{"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general2 = {
"mode": "NAT",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general3 = {
"mode": "NAT",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "wpa3_personal_dataplane_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "wpa3_personal_dataplane_6g", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "EHT",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "EHT",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 320,
"channel-mode": "EHT",
"channel": 33
}
},
"radius": False
}
testbed_details_global = None
setup_params_general = None
dut_data = {}
@pytest.fixture(scope="class")
def initialize_testbed(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
# Assign setup_params_general based on mode
if ap_mode == "wifi6":
setup_params_general = setup_params_general1
elif ap_mode == "wifi6e":
setup_params_general = setup_params_general2
elif ap_mode == "wifi7":
setup_params_general = setup_params_general3
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@allure.feature("Dataplane Tests")
@allure.parent_suite("Dataplane Tests")
@allure.suite(suite_name="WPA3 Personal Security")
@allure.sub_suite(sub_suite_name="NAT Mode")
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_configuration")
class TestDataplaneThroughputNAT(object):
"""Dataplane THroughput NAT Mode
pytest -m "dataplane_tests and wpa3_personal and nat"
@@ -102,7 +223,7 @@ class TestDataplaneThroughputNAT(object):
def test_tcp_udp_wpa3_personal_nat_6g_band(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, client_type,
get_target_object,
num_stations, setup_configuration):
num_stations, initialize_testbed):
"""Dataplane THroughput NAT Mode
pytest -m "dataplane_tests and nat and wpa3_personal and sixg"
"""
@@ -112,12 +233,15 @@ class TestDataplaneThroughputNAT(object):
security_key = profile_data["security_key"]
mode = "NAT-WAN"
band = "sixg"
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"ap_mode value:{ap_mode}")
influx_tags = "dataplane-tcp-udp-nat-wpa3_personal-6G"
get_test_library.dataplane_throughput_test(ssid=ssid_name, security=security, passkey=security_key,
num_sta=1, mode=mode,
band=band,
instance_name="TIP_DPT_DPT_WPA3_PERSONAL_6G_NAT",
influx_tags=influx_tags, move_to_influx=False,
dut_data=setup_configuration,
client_type=client_type
dut_data=dut_data,
client_type=client_type, duration="30s", path_loss=10,
download_rate="85%", upload_rate="0", ap_mode =ap_mode
)

View File

@@ -1,65 +1,193 @@
"""
Dual Band Performance Test : BRIDGE Mode
pytest -m "performance and dual_band_tests and bridge"
Multi Band Performance Test : BRIDGE Mode
pytest -m "performance and multi_band_tests and bridge"
"""
import logging
import allure
import pytest
pytestmark = [pytest.mark.dual_band_tests, pytest.mark.bridge,
pytest.mark.single_station_dual_band_throughput]
pytestmark = [pytest.mark.performance, pytest.mark.multi_band_tests, pytest.mark.bridge]
setup_params_general = {
setup_params_general1 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "ssid_wpa3_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
{"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general2 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general3 = {
"mode": "BRIDGE",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "EHT",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "EHT",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 320,
"channel-mode": "EHT",
"channel": 33
}
},
"radius": False
}
testbed_details_global = None
setup_params_general = None
dut_data = {}
@pytest.mark.dual_band_tests
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
# Assign setup_params_general based on mode
if ap_mode == "wifi6":
setup_params_general = setup_params_general1
elif ap_mode == "wifi6e":
setup_params_general = setup_params_general2
elif ap_mode == "wifi7":
setup_params_general = setup_params_general3
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@pytest.mark.multi_band_tests
@pytest.mark.wifi5
@pytest.mark.wifi6
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@allure.parent_suite("Dual Band Tests")
@allure.suite("Dual Band Tests: Bridge mode")
@pytest.mark.wifi7
@allure.parent_suite("Multi Band Tests")
@allure.suite("Multi Band Tests: Bridge mode")
@allure.sub_suite("wpa3_personal security")
@allure.feature("Dual band performance test")
@pytest.mark.usefixtures("setup_configuration")
class TestWpa3DualbandPerformanceBridge(object):
@allure.feature("Multi band performance test")
class TestWpa3MultibandPerformanceBridge(object):
"""
pytest -m "performance and dual_band_tests and bridge and wpa3_personal and twog and fiveg"
pytest -m "performance and multi_band_tests and bridge and wpa3_personal and twog and fiveg"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728")
@pytest.mark.wpa3_personal
@pytest.mark.twog
@pytest.mark.fiveg
@allure.title("Test Dual Band with ApAuto test of bridge mode")
def test_client_wpa3_personal_bridge(self, get_test_library, setup_configuration, check_connectivity):
@pytest.mark.sixg
@allure.title("Test Multi Band with ApAuto test of bridge mode")
def test_client_wpa3_personal_bridge(self, setup_initial_configuration, get_test_library, check_connectivity,
get_dut_logs_per_test_case, get_test_device_logs):
"""
Dual Band Test with wpa3_personal encryption
pytest -m "dual_band_tests and wpa3_personal"
Multi Band Test with wpa3_personal encryption
pytest -m "multi_band_tests and wpa3_personal"
"""
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"setup_params_general data:{setup_params_general}")
profile_data = setup_params_general["ssid_modes"]["wpa3_personal"]
logging.info(f"profile_data data:{profile_data}")
ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"]
dut_name = list(setup_configuration.keys())[0]
dut_name = list(dut_data.keys())[0]
mode = "BRIDGE"
vlan = 1
dut_5g, dut_2g = "", ""
if ap_mode == "wifi7" or ap_mode == "wifi6e":
dut_6g = ""
ssid_6G = profile_data[0]["ssid_name"]
influx_tags = "dual-band-bridge-wpa3"
for i in setup_configuration[dut_name]['ssid_data']:
get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values())
for i in dut_data[dut_name]['ssid_data']:
logging.info(f"get_test_library.dut_idx_mapping: {get_test_library.dut_idx_mapping}")
logging.info(f"get_test_library.dut_idx_mapping: {get_test_library.dut_idx_mapping}")
get_test_library.dut_idx_mapping[str(i)] = list(dut_data[dut_name]['ssid_data'][i].values())
if get_test_library.dut_idx_mapping[str(i)][3] == "5G":
dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \
get_test_library.dut_idx_mapping[str(i)][4]
@@ -67,8 +195,25 @@ class TestWpa3DualbandPerformanceBridge(object):
dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \
get_test_library.dut_idx_mapping[str(i)][4]
get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan,
dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags,
move_to_influx=False, dut_data=setup_configuration)
if get_test_library.dut_idx_mapping[str(i)][3] == "6G" and (ap_mode == "wifi7" or ap_mode == "wifi6e"):
dut_6g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \
get_test_library.dut_idx_mapping[str(i)][4]
logging.info(f"dut_6g value:{dut_6g}")
logging.info(f"ap_mode value:{ap_mode}")
logging.info(f"setup_configuration value:{dut_data}")
if ap_mode == "wifi7" or ap_mode == "wifi6e":
logging.info("ap mode is not wifi6 , ready to call triband")
get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G,
ssid_6G=ssid_6G, vlan_id=vlan,
dut_5g=dut_5g, dut_2g=dut_2g, dut_6g=dut_6g,
influx_tags=influx_tags,
move_to_influx=False, dut_data=dut_data)
else:
logging.info("ap mode is wifi6 , ready to call dualband")
get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan,
dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags,
move_to_influx=False, dut_data=dut_data)
assert True

View File

@@ -1,64 +1,192 @@
"""
Dual Band Performance Test : NAT Mode
pytest -m "performance and dual_band_tests and nat"
Multi Band Performance Test : NAT Mode
pytest -m "performance and multi_band_tests and nat"
"""
import logging
import allure
import pytest
pytestmark = [pytest.mark.nat, pytest.mark.dual_band_tests]
pytestmark = [pytest.mark.performance, pytest.mark.nat, pytest.mark.muti_band_tests]
setup_params_general = {
setup_params_general1 = {
"mode": "NAT",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "ssid_wpa3_personal_dual_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
{"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G"], "security_key": "something"}
]},
"rf": {},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general2 = {
"mode": "NAT",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
},
setup_params_general3 = {
"mode": "NAT",
"ssid_modes": {
"wpa3_personal": [
{"ssid_name": "ssid_wpa3_personal_multi_band", "appliedRadios": ["2G", "5G", "6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 40,
"channel-mode": "EHT",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "EHT",
"channel": 36
},
"6G": {
"band": "6G",
"channel-width": 320,
"channel-mode": "EHT",
"channel": 33
}
},
"radius": False
}
@pytest.mark.dual_band_tests
testbed_details_global = None
setup_params_general = None
dut_data = {}
@pytest.fixture(scope="class")
def setup_initial_configuration(request):
"""Calls setup_testbed automatically before tests"""
global testbed_details_global
global setup_params_general
global dut_data
selected_tb = request.getfixturevalue("selected_testbed")
print(f"Selected Testbed: {selected_tb}")
testbed_details_global = request.getfixturevalue("get_testbed_details")
assert testbed_details_global is not None, "Testbed details should not be None"
print(f"Initialized Testbed Details: {testbed_details_global}")
# Extract 'mode' from the first device in 'device_under_tests'
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
# Assign setup_params_general based on mode
if ap_mode == "wifi6":
setup_params_general = setup_params_general1
elif ap_mode == "wifi6e":
setup_params_general = setup_params_general2
elif ap_mode == "wifi7":
setup_params_general = setup_params_general3
else:
print(f"Unknown mode: {ap_mode}. Defaulting to None")
print(f"Setup Params Assigned: {setup_params_general}")
get_marker = request.getfixturevalue("get_markers")
requested_combination = []
for key in get_marker:
if get_marker[key]:
requested_combination.append(get_marker[key])
logging.info(f"requested_combination:::{requested_combination}")
get_target_obj = request.getfixturevalue("get_target_object")
logging.info("ready to start setup_basic_configuration")
logging.info(f"setup_params_general value before start:{setup_params_general}")
if isinstance(setup_params_general, tuple):
setup_params_general = setup_params_general[0]
dut_data = get_target_obj.setup_basic_configuration(configuration=setup_params_general,
requested_combination=requested_combination)
logging.info(f"setup_basic_configuration dut data:{dut_data}")
@pytest.mark.multi_band_tests
@pytest.mark.wifi5
@pytest.mark.wifi6
@pytest.mark.parametrize(
'setup_configuration',
[setup_params_general],
indirect=True,
scope="class"
)
@allure.parent_suite("Dual Band Tests")
@allure.suite("Dual Band Tests: NAT mode")
@pytest.mark.wifi7
@allure.parent_suite("Multi Band Tests")
@allure.suite("Multi Band Tests: NAT mode")
@allure.sub_suite("wpa3_personal security")
@allure.feature("Dual band performance test")
@pytest.mark.usefixtures("setup_configuration")
class TestWpa3DualbandPerformanceNat(object):
@allure.feature("Multi band performance test")
class TestWpa3MultibandPerformanceNat(object):
"""
pytest -m "performance and dual_band_tests and nat and wpa3_personal and twog and fiveg."
pytest -m "performance and multi_band_tests and nat and wpa3_personal and twog and fiveg."
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3728", name="WIFI-3728")
@pytest.mark.wpa3_personal
@pytest.mark.twog
@pytest.mark.fiveg
@allure.title("Test Dual Band with ApAuto test of NAT mode")
def test_client_wpa3_personal_nat(self, get_test_library, setup_configuration, check_connectivity):
@pytest.mark.sixg
@allure.title("Test Multi Band with ApAuto test of NAT mode")
def test_client_wpa3_personal_nat(self, setup_initial_configuration, get_test_library, check_connectivity,
get_dut_logs_per_test_case, get_test_device_logs, get_target_object):
"""
Dual Band Test with wpa3_personal encryption
pytest -m "dual_band_tests and wpa3_personal"
Multi Band Test with wpa3_personal encryption
pytest -m "multi_band_tests and wpa3_personal"
"""
ap_mode = testbed_details_global["device_under_tests"][0].get("mode", "")
logging.info(f"setup_params_general data:{setup_params_general}")
profile_data = setup_params_general["ssid_modes"]["wpa3_personal"]
logging.info(f"profile_data data:{profile_data}")
ssid_2G, ssid_5G = profile_data[0]["ssid_name"], profile_data[0]["ssid_name"]
dut_name = list(setup_configuration.keys())[0]
dut_name = list(dut_data.keys())[0]
mode = "NAT-WAN"
vlan = 1
dut_5g, dut_2g = "", ""
if ap_mode == "wifi7" or ap_mode == "wifi6e":
dut_6g = ""
ssid_6G = profile_data[0]["ssid_name"]
influx_tags = "dual-band-nat-wpa3"
for i in setup_configuration[dut_name]['ssid_data']:
get_test_library.dut_idx_mapping[str(i)] = list(setup_configuration[dut_name]['ssid_data'][i].values())
for i in dut_data[dut_name]['ssid_data']:
get_test_library.dut_idx_mapping[str(i)] = list(dut_data[dut_name]['ssid_data'][i].values())
if get_test_library.dut_idx_mapping[str(i)][3] == "5G":
dut_5g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \
get_test_library.dut_idx_mapping[str(i)][4]
@@ -66,8 +194,22 @@ class TestWpa3DualbandPerformanceNat(object):
dut_2g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \
get_test_library.dut_idx_mapping[str(i)][4]
get_test_library.dual_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan,
dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags,
move_to_influx=False, dut_data=setup_configuration)
if get_test_library.dut_idx_mapping[str(i)][3] == "6G" and (ap_mode == "wifi7" or ap_mode == "wifi6e"):
dut_6g = dut_name + ' ' + get_test_library.dut_idx_mapping[str(i)][0] + ' ' + \
get_test_library.dut_idx_mapping[str(i)][4]
logging.info(f"dut_6g value:{dut_6g}")
if ap_mode == "wifi7" or ap_mode == "wifi6e":
logging.info("ap mode is not wifi6 , ready to call triband")
get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G,
ssid_6G=ssid_6G, vlan_id=vlan,
dut_5g=dut_5g, dut_2g=dut_2g, dut_6g=dut_6g,
influx_tags=influx_tags,
move_to_influx=False, dut_data=dut_data)
else:
logging.info("ap mode is wifi6 , ready to call dualband")
get_test_library.multi_band_performance_test(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, vlan_id=vlan,
dut_5g=dut_5g, dut_2g=dut_2g, influx_tags=influx_tags,
move_to_influx=False, dut_data=dut_data)
assert True

View File

@@ -9,7 +9,7 @@ import allure
import pytest
import time
pytestmark = [pytest.mark.performance, pytest.mark.dual_band_tests, pytest.mark.bridge,
pytestmark = [pytest.mark.dual_band_tests, pytest.mark.bridge,
pytest.mark.single_station_dual_band_throughput]
setup_params_general = {

View File

@@ -9,7 +9,7 @@ import os
import allure
import pytest
pytestmark = [pytest.mark.performance, pytest.mark.dual_band_tests, pytest.mark.nat,
pytestmark = [pytest.mark.dual_band_tests, pytest.mark.nat,
pytest.mark.single_station_dual_band_throughput]
setup_params_general = {
"mode": "NAT",

View File

@@ -20,9 +20,24 @@ setup_params_general = {
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
'band': '6G',
'channel-width': 160}
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@@ -61,17 +76,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_download", mode=mode,
download_rate="10Gbps", batch_size="1",
upload_rate="56Kbps", protocol="TCP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12395", name="WIFI-12395")
@pytest.mark.udp_download
@pytest.mark.sixg
@allure.feature("Performance Test")
@allure.parent_suite("AX Capacity Test")
@allure.suite("6 GHz Band")
@allure.sub_suite("BRIDGE Mode")
@pytest.mark.performance
@pytest.mark.wifi_capacity_ax_tests
@allure.title("Single client UDP Download wifi capacity 160Mhz Bw")
def test_client_wpa3_bridge_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration):
@@ -81,11 +102,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_dl", mode=mode,
download_rate="10Gbps", batch_size="1",
upload_rate="56Kbps", protocol="UDP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12397", name="WIFI-12397")
@@ -129,7 +151,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12393", name="WIFI-12393")
@pytest.mark.tcp_upload
@pytest.mark.sixg
@allure.feature("Performance Test")
@allure.parent_suite("AX Capacity Test")
@allure.suite("6 GHz Band")
@allure.sub_suite("BRIDGE Mode")
@pytest.mark.performance
@pytest.mark.wifi_capacity_ax_tests
@allure.title("Single client TCP Upload wifi capacity 160Mhz Bw")
def test_client_wpa3_bridge_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration):
@@ -139,17 +166,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_tcp_ul", mode=mode,
download_rate="56Kbps", batch_size="1",
upload_rate="10Gbps", protocol="TCP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12392", name="WIFI-12392")
@pytest.mark.udp_upload
@pytest.mark.sixg
@allure.feature("Performance Test")
@allure.parent_suite("AX Capacity Test")
@allure.suite("6 GHz Band")
@allure.sub_suite("BRIDGE Mode")
@pytest.mark.performance
@pytest.mark.wifi_capacity_ax_tests
@allure.title("Single client UDP Upload wifi capacity 160Mhz Bw")
def test_client_wpa3_bridge_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration):
@@ -159,9 +192,10 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_bridge_udp_ul", mode=mode,
download_rate="56Kbps", batch_size="1",
upload_rate="10Gbps", protocol="UDP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True

View File

@@ -19,9 +19,24 @@ setup_params_general = {
{"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
]},
"rf": {
"2G": {
"band": "2G",
"channel-width": 20,
"channel-mode": "HE",
"channel": 6
},
"5G": {
"band": "5G",
"channel-width": 80,
"channel-mode": "HE",
"channel": 36
},
"6G": {
'band': '6G',
'channel-width': 160}
"band": "6G",
"channel-width": 160,
"channel-mode": "HE",
"channel": 33
}
},
"radius": False
}
@@ -45,7 +60,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12400", name="WIFI-12400")
@pytest.mark.tcp_download
@pytest.mark.sixg
@allure.feature("Performance Test")
@allure.parent_suite("AX Capacity Test")
@allure.suite("6 GHz Band")
@allure.sub_suite("NAT Mode")
@pytest.mark.performance
@pytest.mark.wifi_capacity_ax_tests
@allure.title("Single client TCP Download wifi capacity 160Mhz Bw")
def test_client_wpa3_nat_tcp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration):
@@ -55,17 +75,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "NAT-WAN"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_download", mode=mode,
download_rate="10Gbps", batch_size="1",
upload_rate="56Kbps", protocol="TCP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12401", name="WIFI-12401")
@pytest.mark.udp_download
@pytest.mark.sixg
@allure.feature("Performance Test")
@allure.parent_suite("AX Capacity Test")
@allure.suite("6 GHz Band")
@allure.sub_suite("NAT Mode")
@pytest.mark.performance
@pytest.mark.wifi_capacity_ax_tests
@allure.title("Single client UDP Download wifi capacity 160Mhz Bw")
def test_client_wpa3_nat_udp_dl(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration):
@@ -75,11 +101,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "NAT-WAN"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_dl", mode=mode,
download_rate="10Gbps", batch_size="1",
upload_rate="56Kbps", protocol="UDP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12403", name="WIFI-12403")
@@ -123,7 +150,12 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12399", name="WIFI-12399")
@pytest.mark.tcp_upload
@pytest.mark.sixg
@allure.feature("Performance Test")
@allure.parent_suite("AX Capacity Test")
@allure.suite("6 GHz Band")
@allure.sub_suite("NAT Mode")
@pytest.mark.performance
@pytest.mark.wifi_capacity_ax_tests
@allure.title("Single client TCP Upload wifi capacity 160Mhz Bw")
def test_client_wpa3_nat_tcp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration):
@@ -133,17 +165,23 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "NAT-WAN"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_tcp_ul", mode=mode,
download_rate="56Kbps", batch_size="1",
upload_rate="10Gbps", protocol="TCP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-12398", name="WIFI-12398")
@pytest.mark.udp_upload
@pytest.mark.sixg
@allure.feature("Performance Test")
@allure.parent_suite("AX Capacity Test")
@allure.suite("6 GHz Band")
@allure.sub_suite("NAT Mode")
@pytest.mark.performance
@pytest.mark.wifi_capacity_ax_tests
@allure.title("Single client UDP Upload wifi capacity 160Mhz Bw")
def test_client_wpa3_nat_udp_ul(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs, num_stations, setup_configuration):
@@ -153,9 +191,10 @@ class Test160Mhz6GChannelautoPeakThroughput(object):
profile_data = {"ssid_name": "ssid_wpa3_6g_channel_auto", "appliedRadios": ["6G"], "security_key": "something"}
ssid_name = profile_data["ssid_name"]
mode = "NAT-WAN"
sets = [["UDP-Burst", "1"], ["UDP-GRO", "1"], ["Multiple Endpoints:", "10"]]
get_test_library.wifi_capacity(instance_name="test_client_wpa3_nat_udp_ul", mode=mode,
download_rate="56Kbps", batch_size="1",
upload_rate="10Gbps", protocol="UDP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
num_stations={"6G": 1}, pass_fail_criteria=True)
num_stations={"6G": 1}, pass_fail_criteria=True, sets_=sets)
assert True

View File

@@ -377,9 +377,9 @@
"TCP": 3000,
"UDP": 3000
},
"6G 4x4 160MHz": {
"TCP": null,
"UDP": null
"6G 2x2 160MHz": {
"TCP": 2000,
"UDP": 2000
}
}
},
@@ -478,9 +478,9 @@
"TCP": 3000,
"UDP": 3000
},
"6G 4x4 160MHz": {
"TCP": null,
"UDP": null
"6G 2x2 160MHz": {
"TCP": 2000,
"UDP": 2000
}
}
},
@@ -548,9 +548,9 @@
"TCP": 3000,
"UDP": 3000
},
"6G 4x4 160MHz": {
"TCP": null,
"UDP": null
"6G 2x2 160MHz": {
"TCP": 2000,
"UDP": 2000
}
}
},
@@ -643,6 +643,72 @@
"UDP": null
}
}
}
}
},
"edgecore_oap103":{
"AX":{
"2G 2x2 20MHz": {
"TCP": 200,
"UDP": 220
},
"5G 2x2 80MHz": {
"TCP": 800,
"UDP": 900
}
}
},
"edgecore_eap112":{
"AX":{
"2G 2x2 20MHz": {
"TCP": 200,
"UDP": 220
},
"5G 2x2 80MHz": {
"TCP": 800,
"UDP": 900
}
}
},
"cig_wf189h":{
"AX":{
"2G 2x2 20MHz": {
"TCP": 200,
"UDP": 220
},
"2G 2x2 40MHz": {
"TCP": 400,
"UDP": 400
},
"5G 2x2 80MHz": {
"TCP": 800,
"UDP": 900
},
"6G 2x2 160MHz": {
"TCP": 1600,
"UDP": 1800
}
},
"BE":{
"2G 2x2 20MHz": {
"TCP": 240,
"UDP": 240
},
"2G 2x2 40MHz": {
"TCP": 480,
"UDP": 480
},
"5G 2x2 80MHz": {
"TCP": 1000,
"UDP": 1000
},
"6G 2x2 160MHz": {
"TCP": 2000,
"UDP": 2000
},
"6G 2x2 320MHz": {
"TCP": 3000,
"UDP": 3000
}
}
}
}
}

View File

@@ -15,8 +15,7 @@ setup_params_enterprise = {
{"ssid_name": "tls_ssid_wpa2_eap_5g", "appliedRadios": ["5G"], "security_key": "something"}],
"wpa3_enterprise": [
{"ssid_name": "tls_ssid_wpa3_eap_2g", "appliedRadios": ["2G"], "security_key": "something"},
{"ssid_name": "tls_ssid_wpa3_eap_5g", "appliedRadios": ["5G"], "security_key": "something"},
{"ssid_name": "tls_ssid_wpa3_eap_6g", "appliedRadios": ["6G"], "security_key": "something"}]},
{"ssid_name": "tls_ssid_wpa3_eap_5g", "appliedRadios": ["5G"], "security_key": "something"}]},
"rf": {},
"radius": True
@@ -155,7 +154,7 @@ class TestBridgeModeEnterpriseTLSSuiteA(object):
get_target_object,
num_stations, setup_configuration, check_connectivity, radius_info):
"""
To verify that a client created on 5G radio connects to AP in Bridge mode with WAP2 enterprise TLS security
To verify that a client created on 5G radio connects to AP in Bridge mode with WPA2 enterprise TLS security
Unique Marker: pytest -m "client_connectivity_tests and enterprise and wpa2_enterprise and ow_sanity_lf and tls and bridge and fiveg"
"""
@@ -283,14 +282,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object):
@pytest.mark.wpa_wpa2_enterprise_mixed
@pytest.mark.twog
@allure.title("Bridge Mode Client Connectivity Test with WAP-WPA2-Enterprise-TLS in 2.4GHz Band")
@allure.title("Bridge Mode Client Connectivity Test with WPA-WPA2-Enterprise-TLS in 2.4GHz Band")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10589", name="WIFI-10589")
def test_wpa_wpa2_enterprise_2g(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs,
get_target_object,
num_stations, setup_configuration, check_connectivity, radius_info):
"""
To verify that a client created on 2G radio connects to AP in Bridge mode with WAP-WPA2-Enterprise TLS security
To verify that a client created on 2G radio connects to AP in Bridge mode with WPA-WPA2-Enterprise TLS security
Unique Marker: pytest -m "client_connectivity_tests and wpa_wpa2_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and twog"
"""
profile_data = {"ssid_name": "tls_ssid_wpa_wpa2_eap_2g", "appliedRadios": ["2G"]}
@@ -314,14 +313,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object):
@pytest.mark.wpa_wpa2_enterprise_mixed
@pytest.mark.fiveg
@allure.title("Bridge Mode Client Connectivity Test with WAP-WPA2-Enterprise-TLS in 5GHz Band")
@allure.title("Bridge Mode Client Connectivity Test with WPA-WPA2-Enterprise-TLS in 5GHz Band")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10590", name="WIFI-10590")
def test_wpa_wpa2_enterprise_5g(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs,
get_target_object,
num_stations, setup_configuration, check_connectivity, radius_info):
"""
To verify that a client created on 5G radio connects to AP in Bridge mode with WAP-WPA2-Enterprise TLS security
To verify that a client created on 5G radio connects to AP in Bridge mode with WPA-WPA2-Enterprise TLS security
Unique Marker: pytest -m "client_connectivity_tests and wpa_wpa2_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and fiveg"
"""
profile_data = {"ssid_name": "tls_ssid_wpa_wpa2_eap_5g", "appliedRadios": ["5G"]}
@@ -345,14 +344,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.twog
@allure.title("Bridge Mode Client Connectivity Test with WAP3-Enterprise-Mixed-TLS in 2.4GHz Band")
@allure.title("Bridge Mode Client Connectivity Test with WPA3-Enterprise-Mixed-TLS in 2.4GHz Band")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10591", name="WIFI-10591")
def test_wpa3_enterprise_mixed_2g(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs,
get_target_object,
num_stations, setup_configuration, check_connectivity, radius_info):
"""
To verify that a client created on 2G radio connects to AP in Bridge mode with WAP3-Enterprise-Mixed TLS security
To verify that a client created on 2G radio connects to AP in Bridge mode with WPA3-Enterprise-Mixed TLS security
Unique Marker: pytest -m "client_connectivity_tests and wpa3_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and twog"
"""
profile_data = {"ssid_name": "tls_ssid_wpa3_mixed_eap_2g", "appliedRadios": ["2G"]}
@@ -374,14 +373,14 @@ class TestBridgeModeEnterpriseTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.fiveg
@allure.title("Bridge Mode Client Connectivity Test with WAP3-Enterprise-Mixed-TLS in 5GHz Band")
@allure.title("Bridge Mode Client Connectivity Test with WPA3-Enterprise-Mixed-TLS in 5GHz Band")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10592", name="WIFI-10592")
def test_wpa3_enterprise_mixed_5g(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs,
get_target_object,
num_stations, setup_configuration, check_connectivity, radius_info):
"""
To verify that a client created on 5G radio connects to AP in Bridge mode with WAP3-Enterprise-Mixed TLS security
To verify that a client created on 5G radio connects to AP in Bridge mode with WPA3-Enterprise-Mixed TLS security
Unique Marker: pytest -m "client_connectivity_tests and wpa3_enterprise_mixed and enterprise and ow_sanity_lf and tls and bridge and fiveg"
"""
profile_data = {"ssid_name": "tls_ssid_wpa3_mixed_eap_5g", "appliedRadios": ["5G"]}

View File

@@ -4,15 +4,19 @@
pytest -m "multipsk and wpa2_personal and twog" -s -vvv --skip-testrail --testbed=basic-03 --alluredir=../allure_reports
wifi-3493
"""
import json
import logging
from datetime import time
import allure
import pytest
import requests
pytestmark = [pytest.mark.multi_psk_tests,
pytest.mark.ow_regression_lf,
pytest.mark.bridge,
pytest.mark.wpa2_personal,
pytest.mark.ow_sanity_lf,
pytest.mark.twog]
pytest.mark.twog,
pytest.mark.ow_sanity_lf]
setup_params_general = {
"mode": "BRIDGE",
@@ -48,11 +52,11 @@ setup_params_general = {
@allure.parent_suite("MultiPsk Test")
@allure.suite("BRIDGE Mode")
@allure.sub_suite("WPA2 Security")
@pytest.mark.ow_regression_lf
@pytest.mark.usefixtures("setup_configuration")
class TestMultipskBridgeWPA2(object):
@pytest.mark.vlan1
@pytest.mark.ow_sanity_lf
@pytest.mark.wpa2
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-3493", name="WIFI-3493")
@allure.title("Test for Client Connect with 1 VLAN")
@@ -91,7 +95,6 @@ class TestMultipskBridgeWPA2(object):
assert True
@pytest.mark.vlan2
@pytest.mark.ow_sanity_lf
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-10657", name="WIFI-10657")
@allure.title("Test for Client Connect with 2 VLAN's")
def test_client_wpa2_2g_vlan2(self, get_test_library, get_dut_logs_per_test_case,
@@ -126,4 +129,125 @@ class TestMultipskBridgeWPA2(object):
get_test_library.multi_psk_test(band=band, mpsk_data=mpsk_data, ssid=ssid, bssid="['BLANK']",
passkey=security_key,
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}")

View File

@@ -820,6 +820,7 @@ class TestRateLimitingBridgeSixg(object):
@pytest.mark.sixg
@pytest.mark.upload_download
@pytest.mark.batch_size_125
@pytest.mark.ow_sanity_lf
@pytest.mark.rate_limiting_tests
@pytest.mark.bridge
@allure.testcase(name="WIFI-14364",

View File

@@ -36,8 +36,8 @@ setup_params_general = {
"appliedRadios": ["2G"],
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"egress-rate": 10
"ingress-rate": 20,
"egress-rate": 20
},
"radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA,
"radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA
@@ -47,8 +47,8 @@ setup_params_general = {
"appliedRadios": ["5G"],
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"egress-rate": 10
"ingress-rate": 20,
"egress-rate": 20
},
"radius_auth_data": RATE_LIMITING_RADIUS_SERVER_DATA,
"radius_acc_data": RATE_LIMITING_RADIUS_ACCOUNTING_DATA
@@ -75,7 +75,6 @@ class TestRateLimitingWithRadiusBridge(object):
@pytest.mark.wpa2_enterprise
@pytest.mark.twog
@pytest.mark.ow_sanity_lf
@pytest.mark.twog_upload_per_ssid
@allure.title("Test for Upload per SSID 2.4 GHz")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5849", name="WIFI-5849")
@@ -130,7 +129,7 @@ class TestRateLimitingWithRadiusBridge(object):
@pytest.mark.twog
@pytest.mark.twog_download_perssid_persta
@pytest.mark.ow_sanity_lf
@allure.title("Test for Download per SSID per Station 2.4GHz")
@allure.title("Test for TCP Download per SSID per Station 2.4GHz")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5850", name="WIFI-5850")
def test_radius_server_2g_download_perssid_persta(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs,
@@ -314,7 +313,8 @@ class TestRateLimitingWithRadiusBridge(object):
@pytest.mark.wpa2_enterprise
@pytest.mark.fiveg
@pytest.mark.fiveg_upload_per_ssid
@allure.title("Test for Upload per SSID 5 GHz")
@pytest.mark.ow_sanity_lf
@allure.title("Test for UDP Upload per SSID 5 GHz")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5854", name="WIFI-5854")
def test_radius_server_fiveg_per_ssid_upload(self, get_test_library, get_dut_logs_per_test_case,
get_test_device_logs,
@@ -334,7 +334,8 @@ class TestRateLimitingWithRadiusBridge(object):
band = "fiveg"
eap = "TTLS"
ttls_passwd = "password"
identity = "bandwidth10m"
identity = "user"
configured = 5
allure.attach(name="ssid-rates", body=str(profile_data["rate-limit"]))
get_test_library.pre_cleanup()
passes, result = get_test_library.enterprise_client_connectivity_test(ssid=ssid_name, security=security,
@@ -347,13 +348,19 @@ class TestRateLimitingWithRadiusBridge(object):
assert passes == "PASS", result
if passes == "PASS":
raw_lines = [["dl_rate_sel: Total Download Rate:"], ["ul_rate_sel: Per-Station Download Rate:"]]
get_test_library.wifi_capacity(instance_name="Test_Radius_5g_up_per_ssid", mode=mode,
obj = get_test_library.wifi_capacity(instance_name="Test_Radius_5g_up_per_ssid", mode=mode,
download_rate="0Gbps", batch_size="1",
upload_rate="1Gbps", protocol="TCP", duration="60000",
upload_rate="1Gbps", protocol="UDP", duration="60000",
move_to_influx=False, dut_data=setup_configuration, ssid_name=ssid_name,
add_stations=False, raw_lines=raw_lines)
report_name = obj[0].report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + "/"
kpi_data = get_test_library.read_kpi_file(column_name=["numeric-score"], dir_name=report_name)
achieved = float("{:.2f}".format(kpi_data[1][0]))
if achieved <= configured:
assert True
else:
assert False, f"Expected Throughput should be less than {configured} Mbps"
assert True
@pytest.mark.wpa2_enterprise
@pytest.mark.fiveg
@@ -797,8 +804,8 @@ class TestRateLimitingWithRadiusBridge(object):
"appliedRadios": ["2G"],
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"egress-rate": 10
"ingress-rate": 20,
"egress-rate": 30
}}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
@@ -860,8 +867,8 @@ class TestRateLimitingWithRadiusBridge(object):
"appliedRadios": ["2G"],
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"egress-rate": 10
"ingress-rate": 60,
"egress-rate": 50
}}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
@@ -923,8 +930,8 @@ class TestRateLimitingWithRadiusBridge(object):
"appliedRadios": ["2G"],
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"egress-rate": 10
"ingress-rate": 60,
"egress-rate": 50
}}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
@@ -986,7 +993,7 @@ class TestRateLimitingWithRadiusBridge(object):
"appliedRadios": ["2G"],
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"ingress-rate": 50,
"egress-rate": 10
}}
ssid_name = profile_data["ssid_name"]
@@ -1048,7 +1055,7 @@ class TestRateLimitingWithRadiusBridge(object):
"appliedRadios": ["2G"],
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"ingress-rate": 50,
"egress-rate": 10
}}
ssid_name = profile_data["ssid_name"]
@@ -1112,7 +1119,7 @@ class TestRateLimitingWithRadiusBridge(object):
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"egress-rate": 10
"egress-rate": 50
}}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
@@ -1175,7 +1182,7 @@ class TestRateLimitingWithRadiusBridge(object):
"security_key": "something",
"rate-limit": {
"ingress-rate": 10,
"egress-rate": 10
"egress-rate": 50
}}
ssid_name = profile_data["ssid_name"]
mode = "BRIDGE"
@@ -1274,6 +1281,7 @@ class TestRateLimitingWithRadiusBridgeSixg(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.sixg
@pytest.mark.sixg_upload_per_ssid
@pytest.mark.ow_sanity_lf
@allure.title("Test for UDP Upload per SSID 6 GHz")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14366", name="WIFI-14366")
def test_radius_server_6g_upload_per_ssid(self, get_test_library, get_dut_logs_per_test_case,
@@ -1326,6 +1334,7 @@ class TestRateLimitingWithRadiusBridgeSixg(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.sixg
@pytest.mark.sixg_download_perssid_persta
@pytest.mark.ow_sanity_lf
@allure.title("Test for TCP Download per Station 6GHz")
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-14365", name="WIFI-14365")
def test_radius_server_6g_download_persta(self, get_test_library, get_dut_logs_per_test_case,

View File

@@ -21,8 +21,7 @@ setup_params_enterprise = {
{"ssid_name": "ssid_wpa2_eap_5g", "appliedRadios": ["5G"]}],
"wpa3_enterprise": [
{"ssid_name": "ssid_wpa3_eap_2g", "appliedRadios": ["2G"]},
{"ssid_name": "ssid_wpa3_eap_5g", "appliedRadios": ["5G"]},
{"ssid_name": "ttls_ssid_wpa3_eap_6g", "appliedRadios": ["6G"]}]},
{"ssid_name": "ssid_wpa3_eap_5g", "appliedRadios": ["5G"]}]},
"rf": {},
"radius": True

View File

@@ -232,7 +232,13 @@ setup_params_general_two_vlan = {
{"ssid_name": "ssid_wpa_wpa2_p_m_5g_vlan", "appliedRadios": ["5G"], "security_key": "something",
"vlan": 100}]
},
"rf": {},
"rf": {
"6G": {
"band": "6G",
"channel-mode": "EHT",
"channel-width": 80,
}
},
"radius": False
}

View File

@@ -15,7 +15,7 @@ DYNAMIC_VLAN_RADIUS_SERVER_DATA = lf_library.DYNAMIC_VLAN_RADIUS_SERVER_DATA
DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA = lf_library.DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA
pytestmark = [pytest.mark.dynamic_vlan_tests,
pytest.mark.vlan]
pytest.mark.vlan, pytest.mark.ow_sanity_lf]
setup_params_general = {
"mode": "VLAN",
@@ -71,8 +71,11 @@ class TestDynamicVlanOverSsid6GWpa3(object):
pytest -m "dynamic_precedence_over_ssid and wpa3_enterprise and vlan and sixg"
"""
profile_data = setup_params_general["ssid_modes"]["wpa3_enterprise"]
ssid_name = profile_data[1]["ssid_name"]
profile_data = {"ssid_name": "ssid_wpa3e_6g", "appliedRadios": ["6G"],
"security_key": "something",
"vlan": 100
}
ssid_name = profile_data["ssid_name"]
security = "wpa3"
extra_secu = []
mode = "VLAN"

View File

@@ -16,7 +16,7 @@ DYNAMIC_VLAN_RADIUS_SERVER_DATA = lf_library.DYNAMIC_VLAN_RADIUS_SERVER_DATA
DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA = lf_library.DYNAMIC_VLAN_RADIUS_ACCOUNTING_DATA
pytestmark = [pytest.mark.dynamic_vlan_tests,
pytest.mark.vlan]
pytest.mark.vlan, pytest.mark.ow_sanity_lf]
setup_params_general = {
"mode": "VLAN",
@@ -72,8 +72,11 @@ class TestDynamicVlan6GWpa3(object):
pytest -m "absence_of_radius_vlan_identifier and wpa3_enterprise and vlan and sixg"
"""
profile_data = setup_params_general["ssid_modes"]["wpa3_enterprise"]
ssid_name = profile_data[1]["ssid_name"]
profile_data = {"ssid_name": "ssid_wpa3e_6g", "appliedRadios": ["6G"],
"security_key": "something",
"vlan": 100
}
ssid_name = profile_data["ssid_name"]
security = "wpa3"
extra_secu = []
band = "sixg"

View File

@@ -6,7 +6,7 @@
import allure
import pytest
pytestmark = [pytest.mark.multi_vlan_tests, pytest.mark.sixg]
pytestmark = [pytest.mark.multi_vlan_tests, pytest.mark.sixg, pytest.mark.ow_sanity_lf]
setup_params_general = {
"mode": "VLAN",