diff --git a/.github/workflows/interop.yml b/.github/workflows/interop.yml index 2bdc295de..e149daeb1 100644 --- a/.github/workflows/interop.yml +++ b/.github/workflows/interop.yml @@ -227,6 +227,10 @@ jobs: name: allure-report path: allure-report + # doing this to be able to aggregate multiple reports together later on + - name: copy results into report + run: cp -r allure-results allure-report/results + - name: copy new report run: | mkdir -p reports/interop/interop diff --git a/.github/workflows/sanity.yml b/.github/workflows/sanity.yml index c6e883fce..06a80e4a6 100644 --- a/.github/workflows/sanity.yml +++ b/.github/workflows/sanity.yml @@ -305,15 +305,19 @@ jobs: with: name: allure-report-${{ matrix.testbed }} path: allure-report + + # doing this to be able to aggregate multiple reports together later on + - name: copy results into report + run: cp -r allure-results allure-report/results - name: copy new report - if: ${{ (github.event.inputs.marker_expression || 'sanity') == 'sanity and not interop' }} + if: ${{ (github.event.inputs.marker_expression || 'sanity and not interop') == 'sanity and not interop' }} run: | mkdir -p reports/sanity/${{ matrix.testbed }} cp -Tr allure-report reports/sanity/${{ matrix.testbed }}/${{ github.run_number }} - name: update latest symlink - if: ${{ (github.event.inputs.marker_expression || 'sanity') == 'sanity and not interop' }} + if: ${{ (github.event.inputs.marker_expression || 'sanity and not interop') == 'sanity and not interop' }} working-directory: reports/sanity/${{ matrix.testbed }} run: ln -fns ${{ github.run_number }} latest diff --git a/.github/workflows/ucentralgw-deployment.yaml b/.github/workflows/ucentralgw-deployment.yaml new file mode 100644 index 000000000..0ca8ba7f3 --- /dev/null +++ b/.github/workflows/ucentralgw-deployment.yaml @@ -0,0 +1,133 @@ +name: Update uCentral + +defaults: + run: + shell: bash + +env: + AWS_EKS_NAME: tip-wlan-main + AWS_DEFAULT_OUTPUT: json + AWS_DEFAULT_REGION: us-east-2 + AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CLIENT_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CLIENT_KEY }} + + # DigiCert certs + DIGICERT_CERT: ${{ secrets.DIGICERT_CERT }} + DIGICERT_KEY: ${{ secrets.DIGICERT_KEY }} + + # https://stackoverflow.com/questions/59977364/github-actions-how-use-strategy-matrix-with-script + testbeds: '[ + { + "namespace": "qa01", + "ucentralgw_version": "master", + "ucentralsec_version": "main", + "ucentralgwui_version": "main" + }, + { + "namespace": "dev01", + "ucentralgw_version": "master", + "ucentralsec_version": "main", + "ucentralgwui_version": "main" + } + ]' + +on: + workflow_dispatch: {} + +jobs: + generate-matrix: + name: Generate matrix for build + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - name: generate-matrix + id: set-matrix + run: | + echo '::set-output name=matrix::{"include":${{ env.testbeds }}}' + + deploy: + name: Update uCentral instances + runs-on: ubuntu-latest + needs: [ generate-matrix ] + strategy: + matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }} + fail-fast: false + steps: + + - name: Checkout uCentral assembly chart repo + uses: actions/checkout@v2 + with: + path: wlan-cloud-ucentral-deploy + repository: Telecominfraproject/wlan-cloud-ucentral-deploy + - name: Checkout Helm values repo + uses: actions/checkout@v2 + with: + path: toolsmith + repository: Telecominfraproject/Toolsmith + token: ${{ secrets.PAT_TOKEN }} + + - name: Prepare certificates from secrets + run: | + echo "${{ env.DIGICERT_CERT }}" | base64 -d > cert.pem + echo "${{ env.DIGICERT_KEY }}" | base64 -d > key.pem + + - name: Fetch kubeconfig + run: | + aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} + + - name: Deploy uCentralGW + working-directory: wlan-cloud-ucentral-deploy/chart + run: | + helm plugin install https://github.com/aslafy-z/helm-git --version 0.10.0 + sed -i '/wlan-cloud-ucentralgw@/s/ref=.*/ref='${{ matrix.ucentralgw_version }}'\"/g' Chart.yaml + sed -i '/wlan-cloud-ucentralgw-ui@/s/ref=.*/ref='${{ matrix.ucentralgwui_version }}'\"/g' Chart.yaml + sed -i '/wlan-cloud-ucentralsec@/s/ref=.*/ref='${{ matrix.ucentralsec_version }}'\"/g' Chart.yaml + helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo update + helm dependency update + helm upgrade --install --create-namespace \ + --namespace ucentral-${{ matrix.namespace }} --wait --timeout 20m \ + -f ../../toolsmith/helm-values/assembly-ucentral/values.ucentral-${{ matrix.namespace }}.yaml \ + --set ucentralgw.configProperties."rtty\.token"=${{ secrets.RTTY_TOKEN }} \ + --set ucentralsec.configProperties."authentication\.default\.username"=${{ secrets.UCENTRALGW_AUTH_USERNAME }} \ + --set ucentralsec.configProperties."authentication\.default\.password"=${{ secrets.UCENTRALGW_AUTH_PASSWORD }} \ + --set rttys.config.token=${{ secrets.RTTY_TOKEN }} \ + --set-file ucentralgw.certs."restapi-cert\.pem"=../../cert.pem \ + --set-file ucentralgw.certs."restapi-key\.pem"=../../key.pem \ + --set-file ucentralgw.certs."websocket-cert\.pem"=../../cert.pem \ + --set-file ucentralgw.certs."websocket-key\.pem"=../../key.pem \ + --set-file rttys.certs."restapi-cert\.pem"=../../cert.pem \ + --set-file rttys.certs."restapi-key\.pem"=../../key.pem \ + --set-file ucentralsec.certs."restapi-cert\.pem"=../../cert.pem \ + --set-file ucentralsec.certs."restapi-key\.pem"=../../key.pem \ + --set ucentralgw.images.ucentralgw.tag=${{ matrix.ucentralgw_version }} \ + --set ucentralgwui.images.ucentralgwui.tag=${{ matrix.ucentralgwui_version }} \ + --set ucentralsec.images.ucentralsec.tag=${{ matrix.ucentralsec_version }} \ + tip-ucentral . + + - name: Show resource state on deployment failure + if: failure() + run: | + kubectl get pods --namespace ucentral-${{ matrix.namespace }} + kubectl get services --namespace ucentral-${{ matrix.namespace }} + kubectl get persistentvolumeclaims --namespace ucentral-${{ matrix.namespace }} + - name: Describe pods on deployment failure + if: failure() + run: | + kubectl describe pods --namespace ucentral-${{ matrix.namespace }} + - name: Describe services on deployment failure + if: failure() + run: | + kubectl describe services --namespace ucentral-${{ matrix.namespace }} + - name: Describe persistentvolumeclaims on deployment failure + if: failure() + run: | + kubectl describe persistentvolumeclaims --namespace ucentral-${{ matrix.namespace }} + + - name: Rollback Cloud SDK + if: failure() + run: | + helm rollback tip-ucentral --namespace ucentral-${{ matrix.namespace }} --wait --timeout 20m + diff --git a/.github/workflows/update-badges.yml b/.github/workflows/update-badges.yml new file mode 100644 index 000000000..547294f58 --- /dev/null +++ b/.github/workflows/update-badges.yml @@ -0,0 +1,48 @@ +name: Update test number badges + +on: + push: + branches: + - master + paths: + - "tests/**" + +jobs: + update_badges: + runs-on: ubuntu-latest + container: python:3.8 + steps: + - uses: actions/checkout@v2 + + - name: add TIP pypi repo + run: | + mkdir -p ~/.pip + echo "[global]" > ~/.pip/pip.conf + echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf + echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf + + - name: install dependencies + run: pip install -r requirements.txt + + - name: download badges + working-directory: tests + run: | + mkdir -p ../.img + wget https://img.shields.io/badge/total_tests-$(pytest --collect-only -q | tail -1 | cut -d ' ' -f 1)-green?style=flat-square -O ../.img/total-count.svg + wget https://img.shields.io/badge/interop_tests-$(pytest --collect-only -m "interop" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../.img/interop-count.svg + wget https://img.shields.io/badge/sanity_tests-$(pytest --collect-only -m "sanity and not interop" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../.img/sanity-count.svg + wget https://img.shields.io/badge/performance_tests-$(pytest --collect-only -m "performance" -q | tail -1 | cut -d '/' -f 1)-green?style=flat-square -O ../.img/performance-count.svg + + - name: commit changes + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + + git add . + git commit -m "Updating test count badges: $(date -u)" + + - name: push changes + uses: ad-m/github-push-action@v0.6.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: master \ No newline at end of file diff --git a/Tools_and_Testing.png b/.img/Tools_and_Testing.png similarity index 100% rename from Tools_and_Testing.png rename to .img/Tools_and_Testing.png diff --git a/automation_overview.png b/.img/automation_overview.png similarity index 100% rename from automation_overview.png rename to .img/automation_overview.png diff --git a/.img/interop-count.svg b/.img/interop-count.svg new file mode 100644 index 000000000..fafc0d6ad --- /dev/null +++ b/.img/interop-count.svg @@ -0,0 +1 @@ +interop tests: 56interop tests56 \ No newline at end of file diff --git a/.img/performance-count.svg b/.img/performance-count.svg new file mode 100644 index 000000000..619e1ec63 --- /dev/null +++ b/.img/performance-count.svg @@ -0,0 +1 @@ +performance tests: 241performance tests241 \ No newline at end of file diff --git a/.img/sanity-count.svg b/.img/sanity-count.svg new file mode 100644 index 000000000..b8cdc87b6 --- /dev/null +++ b/.img/sanity-count.svg @@ -0,0 +1 @@ +sanity tests: 176sanity tests176 \ No newline at end of file diff --git a/.img/total-count.svg b/.img/total-count.svg new file mode 100644 index 000000000..2ae923dc2 --- /dev/null +++ b/.img/total-count.svg @@ -0,0 +1 @@ +total tests: 519total tests519 \ No newline at end of file diff --git a/README.md b/README.md index b8451ca45..3a5553e75 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,13 @@ This repository contains the test automation framework and scripts for TIP Open WiFi. Test Framework is implemented in pytest -![Automation Overview](./automation_overview.png) +![Automation Overview](.img/automation_overview.png) The vision is to create an open test framework to ensure production grade Open Wifi Solution. This test automation tied into our overall tooling at TIP as shown below: -![Tools and Test Automation](./Tools_and_Testing.png) +![Tools and Test Automation](.img/Tools_and_Testing.png) ### General guidelines @@ -41,7 +41,6 @@ pylint --fail-under=7 *py the command above would produce a non-zero exit code if the score drops below 7. - ### TIP Controller Integration Using Swagger Autogenerated CloudSDK Library pypi package (implemented with [swagger codegen](https://github.com/swagger-api/swagger-codegen)). @@ -50,7 +49,7 @@ Using Swagger Autogenerated CloudSDK Library pypi package (implemented with [swa Currently the plan is to use pytest integrated with [allure](https://docs.qameta.io/allure/#_pytest) to create visual reports for the test outcomes -### Miscelanneous +### Miscellaneous 1. Do not use old style string formatting: `"Hello %s" % var`; use `f"Hello {var}` instead 2. use `"""` in Docstrings @@ -62,8 +61,17 @@ https://docs.pytest.org/en/latest/usage.html http://pythontesting.net/framework/pytest/pytest-introduction/ ### Test status + +![total test count](.img/total-count.svg) + [![sanity testing](https://github.com/Telecominfraproject/wlan-testing/actions/workflows/sanity.yml/badge.svg)](https://github.com/Telecominfraproject/wlan-testing/actions/workflows/sanity.yml) +![sanity test count](.img/sanity-count.svg) + [![interop testing](https://github.com/Telecominfraproject/wlan-testing/actions/workflows/interop.yml/badge.svg)](https://github.com/Telecominfraproject/wlan-testing/actions/workflows/interop.yml) +![interop test count](.img/interop-count.svg) + +[![performance testing](https://github.com/Telecominfraproject/wlan-testing/actions/workflows/performance.yml/badge.svg)](https://github.com/Telecominfraproject/wlan-testing/actions/workflows/performance.yml) +![performance test count](.img/performance-count.svg) ### Best Practice @@ -74,11 +82,11 @@ http://pythontesting.net/framework/pytest/pytest-introduction/ All code must be written in python 3 and conform to PEP 8 style guide. The test framework is built using pytest. -[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) +[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) [![PEP8](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/) - ### Directory Structure + ```bash ├── lanforge - /* to be migrated */ ├── libs @@ -100,6 +108,7 @@ All code must be written in python 3 and conform to PEP 8 style guide. The test |── scale |── README.md -/* Pytest framework and testcases information */ ``` + ### Setup Instructions #### Step 1 @@ -123,6 +132,19 @@ cd wlan-testing #### Step 2 +Please ensure you follow the steps outlined in [here](./libs/controller/README.md) + +```shell +Lets add the TIP pypi repository by following the below steps: + +mkdir ~/.pip +echo "[global]" > ~/.pip/pip.conf +echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf +echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf +``` + +#### Step 3 + Please ensure you have python version >= 3 is required. Double check this by running "python --version" command. ```shell @@ -130,31 +152,7 @@ User this to check "python --version" Lets Install the Python Packages needed -pip3 install pytest==6.2.2 -pip3 install bs4 -pip3 install paramiko -pip3 install xlsxwriter -pip3 install influxdb_client -pip3 install allure-pytest - - - - -``` - -#### Step 3 - -Please ensure you follow the steps outlined in [here](./libs/controller/README.md) - -```shell -Lets Install Controller Libraries, follow below steps: - -mkdir ~/.pip -echo "[global]" > ~/.pip/pip.conf -echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf -echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf -echo "tip-wlan-cloud" > ~/.pip/requirements.txt -pip3 install -r ~/.pip/requirements.txt +pip3 install -r requirements.txt ``` #### Step 4 diff --git a/docker/Dockerfile b/docker/Dockerfile index 6cf159ceb..33f5ebf28 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -3,7 +3,8 @@ RUN mkdir ~/.pip RUN echo "[global]" > ~/.pip/pip.conf RUN echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf RUN echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf -RUN pip3 install pytest==6.2.2 bs4 paramiko xlsxwriter requests pandas influxdb influxdb-client scp allure-pytest tip-wlan-cloud selenium perfecto-py37 Appium-Python-Client +COPY requirements.txt requirements.txt +RUN pip3 install -r requirements.txt COPY lanforge /wlan-testing/lanforge COPY tests /wlan-testing/tests COPY libs /wlan-testing/libs diff --git a/libs/lanforge/lf_tools.py b/libs/lanforge/lf_tools.py index 05f12ebfd..eef0fb60b 100644 --- a/libs/lanforge/lf_tools.py +++ b/libs/lanforge/lf_tools.py @@ -3,6 +3,8 @@ from create_chamberview_dut import DUT import time from LANforge.lfcli_base import LFCliBase import json +import os +import pandas as pd class ChamberView: @@ -104,4 +106,22 @@ class ChamberView: cli_base = LFCliBase(_lfjson_host=self.lanforge_ip, _lfjson_port=self.lanforge_port, ) return cli_base.json_post(req_url, data) + def read_kpi_file(self, column_name, dir_name ): + if column_name == None: + df = pd.read_csv("../reports/" + str(dir_name) + "/kpi.csv", sep=r'\t', engine='python') + if df.empty == True: + return "empty" + else: + return df + else: + df = pd.read_csv("../reports/" + str(dir_name) + "/kpi.csv", sep=r'\t', usecols=column_name, engine='python') + if df.empty == True: + return "empty" + else: + return df + + + + + diff --git a/reports/ap-auto-2021-06-24-06-07-50/CandelaLogo2-90dpi-200x90-trans.png b/reports/ap-auto-2021-06-24-06-07-50/CandelaLogo2-90dpi-200x90-trans.png new file mode 100644 index 000000000..23cca07d9 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/CandelaLogo2-90dpi-200x90-trans.png differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/CenturyGothic.woff b/reports/ap-auto-2021-06-24-06-07-50/CenturyGothic.woff new file mode 100644 index 000000000..877ec4a27 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/CenturyGothic.woff differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/ap-auto-report-2021-06-24-06-04-06.pdf b/reports/ap-auto-2021-06-24-06-07-50/ap-auto-report-2021-06-24-06-04-06.pdf new file mode 100644 index 000000000..a78739cd9 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/ap-auto-report-2021-06-24-06-04-06.pdf differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/candela_swirl_small-72h.png b/reports/ap-auto-2021-06-24-06-07-50/candela_swirl_small-72h.png new file mode 100644 index 000000000..e288f8c96 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/candela_swirl_small-72h.png differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/canvil.ico b/reports/ap-auto-2021-06-24-06-07-50/canvil.ico new file mode 100644 index 000000000..5f27eb942 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/canvil.ico differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/chart-1.png b/reports/ap-auto-2021-06-24-06-07-50/chart-1.png new file mode 100644 index 000000000..885c0367e Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/chart-1.png differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/csv-data/data-Realtime_Throughput_for__Multi_Band_Performance-000.csv b/reports/ap-auto-2021-06-24-06-07-50/csv-data/data-Realtime_Throughput_for__Multi_Band_Performance-000.csv new file mode 100644 index 000000000..1c92fa448 --- /dev/null +++ b/reports/ap-auto-2021-06-24-06-07-50/csv-data/data-Realtime_Throughput_for__Multi_Band_Performance-000.csv @@ -0,0 +1,157 @@ +Date,"Total Upload/RX (Mbps)",Date,"Total Download/RX (Mbps)",Date,"UL + DL Sum/RX (Mbps)",Date,"UDP UL + DL Sum/RX (Mbps)",Date,"UDP DL/RX (Mbps)",Date,"UDP UL/RX (Mbps)", +"2021-06-24T13:04:42.332 UTC",0,"2021-06-24T13:04:42.332 UTC",0,"2021-06-24T13:04:42.332 UTC",0,"2021-06-24T13:04:42.332 UTC",0,"2021-06-24T13:04:42.332 UTC",0,"2021-06-24T13:04:42.332 UTC",0, +"2021-06-24T13:04:43.455 UTC",0,"2021-06-24T13:04:43.455 UTC",0,"2021-06-24T13:04:43.455 UTC",0,"2021-06-24T13:04:43.455 UTC",0,"2021-06-24T13:04:43.455 UTC",0,"2021-06-24T13:04:43.455 UTC",0, +"2021-06-24T13:04:44.533 UTC",0,"2021-06-24T13:04:44.533 UTC",0,"2021-06-24T13:04:44.533 UTC",0,"2021-06-24T13:04:44.533 UTC",0,"2021-06-24T13:04:44.533 UTC",0,"2021-06-24T13:04:44.533 UTC",0, +"2021-06-24T13:04:45.664 UTC",0,"2021-06-24T13:04:45.664 UTC",0,"2021-06-24T13:04:45.664 UTC",0,"2021-06-24T13:04:45.664 UTC",0,"2021-06-24T13:04:45.664 UTC",0,"2021-06-24T13:04:45.664 UTC",0, +"2021-06-24T13:04:46.758 UTC",0,"2021-06-24T13:04:46.758 UTC",0,"2021-06-24T13:04:46.758 UTC",0,"2021-06-24T13:04:46.758 UTC",0,"2021-06-24T13:04:46.758 UTC",0,"2021-06-24T13:04:46.758 UTC",0, +"2021-06-24T13:04:47.835 UTC",0,"2021-06-24T13:04:47.835 UTC",0,"2021-06-24T13:04:47.835 UTC",0,"2021-06-24T13:04:47.835 UTC",0,"2021-06-24T13:04:47.835 UTC",0,"2021-06-24T13:04:47.835 UTC",0, +"2021-06-24T13:04:48.910 UTC",0,"2021-06-24T13:04:48.910 UTC",0,"2021-06-24T13:04:48.910 UTC",0,"2021-06-24T13:04:48.910 UTC",0,"2021-06-24T13:04:48.910 UTC",0,"2021-06-24T13:04:48.910 UTC",0, +"2021-06-24T13:04:50.021 UTC",0,"2021-06-24T13:04:50.021 UTC",0,"2021-06-24T13:04:50.021 UTC",0,"2021-06-24T13:04:50.021 UTC",0,"2021-06-24T13:04:50.021 UTC",0,"2021-06-24T13:04:50.021 UTC",0, +"2021-06-24T13:04:51.131 UTC",0,"2021-06-24T13:04:51.131 UTC",0,"2021-06-24T13:04:51.131 UTC",0,"2021-06-24T13:04:51.131 UTC",0,"2021-06-24T13:04:51.131 UTC",0,"2021-06-24T13:04:51.131 UTC",0, +"2021-06-24T13:04:52.218 UTC",0,"2021-06-24T13:04:52.218 UTC",0,"2021-06-24T13:04:52.218 UTC",0,"2021-06-24T13:04:52.218 UTC",0,"2021-06-24T13:04:52.218 UTC",0,"2021-06-24T13:04:52.218 UTC",0, +"2021-06-24T13:04:53.294 UTC",0,"2021-06-24T13:04:53.294 UTC",0,"2021-06-24T13:04:53.294 UTC",0,"2021-06-24T13:04:53.294 UTC",0,"2021-06-24T13:04:53.294 UTC",0,"2021-06-24T13:04:53.294 UTC",0, +"2021-06-24T13:04:54.531 UTC",0,"2021-06-24T13:04:54.531 UTC",0,"2021-06-24T13:04:54.531 UTC",0,"2021-06-24T13:04:54.531 UTC",0,"2021-06-24T13:04:54.531 UTC",0,"2021-06-24T13:04:54.531 UTC",0, +"2021-06-24T13:04:55.703 UTC",0,"2021-06-24T13:04:55.703 UTC",0,"2021-06-24T13:04:55.703 UTC",0,"2021-06-24T13:04:55.703 UTC",0,"2021-06-24T13:04:55.703 UTC",0,"2021-06-24T13:04:55.703 UTC",0, +"2021-06-24T13:04:56.775 UTC",0,"2021-06-24T13:04:56.775 UTC",0,"2021-06-24T13:04:56.775 UTC",0,"2021-06-24T13:04:56.775 UTC",0,"2021-06-24T13:04:56.775 UTC",0,"2021-06-24T13:04:56.775 UTC",0, +"2021-06-24T13:04:57.851 UTC",0,"2021-06-24T13:04:57.851 UTC",0,"2021-06-24T13:04:57.851 UTC",0,"2021-06-24T13:04:57.851 UTC",0,"2021-06-24T13:04:57.851 UTC",0,"2021-06-24T13:04:57.851 UTC",0, +"2021-06-24T13:04:58.932 UTC",0,"2021-06-24T13:04:58.932 UTC",0,"2021-06-24T13:04:58.932 UTC",0,"2021-06-24T13:04:58.932 UTC",0,"2021-06-24T13:04:58.932 UTC",0,"2021-06-24T13:04:58.932 UTC",0, +"2021-06-24T13:05:00.002 UTC",0,"2021-06-24T13:05:00.002 UTC",0,"2021-06-24T13:05:00.002 UTC",0,"2021-06-24T13:05:00.002 UTC",0,"2021-06-24T13:05:00.002 UTC",0,"2021-06-24T13:05:00.002 UTC",0, +"2021-06-24T13:05:01.078 UTC",0,"2021-06-24T13:05:01.078 UTC",0,"2021-06-24T13:05:01.078 UTC",0,"2021-06-24T13:05:01.078 UTC",0,"2021-06-24T13:05:01.078 UTC",0,"2021-06-24T13:05:01.078 UTC",0, +"2021-06-24T13:05:02.158 UTC",0,"2021-06-24T13:05:02.158 UTC",0,"2021-06-24T13:05:02.158 UTC",0,"2021-06-24T13:05:02.158 UTC",0,"2021-06-24T13:05:02.158 UTC",0,"2021-06-24T13:05:02.158 UTC",0, +"2021-06-24T13:05:03.227 UTC",0,"2021-06-24T13:05:03.227 UTC",0,"2021-06-24T13:05:03.227 UTC",0,"2021-06-24T13:05:03.227 UTC",0,"2021-06-24T13:05:03.227 UTC",0,"2021-06-24T13:05:03.227 UTC",0, +"2021-06-24T13:05:04.768 UTC",0,"2021-06-24T13:05:04.768 UTC",0,"2021-06-24T13:05:04.768 UTC",0,"2021-06-24T13:05:04.768 UTC",0,"2021-06-24T13:05:04.768 UTC",0,"2021-06-24T13:05:04.768 UTC",0, +"2021-06-24T13:05:05.852 UTC",0,"2021-06-24T13:05:05.852 UTC",0,"2021-06-24T13:05:05.852 UTC",0,"2021-06-24T13:05:05.852 UTC",0,"2021-06-24T13:05:05.852 UTC",0,"2021-06-24T13:05:05.852 UTC",0, +"2021-06-24T13:05:06.927 UTC",0,"2021-06-24T13:05:06.927 UTC",0,"2021-06-24T13:05:06.927 UTC",0,"2021-06-24T13:05:06.927 UTC",0,"2021-06-24T13:05:06.927 UTC",0,"2021-06-24T13:05:06.927 UTC",0, +"2021-06-24T13:05:08.011 UTC",0,"2021-06-24T13:05:08.011 UTC",0,"2021-06-24T13:05:08.011 UTC",0,"2021-06-24T13:05:08.011 UTC",0,"2021-06-24T13:05:08.011 UTC",0,"2021-06-24T13:05:08.011 UTC",0, +"2021-06-24T13:05:09.090 UTC",0,"2021-06-24T13:05:09.090 UTC",0,"2021-06-24T13:05:09.090 UTC",0,"2021-06-24T13:05:09.090 UTC",0,"2021-06-24T13:05:09.090 UTC",0,"2021-06-24T13:05:09.090 UTC",0, +"2021-06-24T13:05:10.170 UTC",0,"2021-06-24T13:05:10.170 UTC",0,"2021-06-24T13:05:10.170 UTC",0,"2021-06-24T13:05:10.170 UTC",0,"2021-06-24T13:05:10.170 UTC",0,"2021-06-24T13:05:10.170 UTC",0, +"2021-06-24T13:05:11.545 UTC",0,"2021-06-24T13:05:11.545 UTC",0,"2021-06-24T13:05:11.545 UTC",0,"2021-06-24T13:05:11.545 UTC",0,"2021-06-24T13:05:11.545 UTC",0,"2021-06-24T13:05:11.545 UTC",0, +"2021-06-24T13:05:12.635 UTC",0,"2021-06-24T13:05:12.635 UTC",0,"2021-06-24T13:05:12.635 UTC",0,"2021-06-24T13:05:12.635 UTC",0,"2021-06-24T13:05:12.635 UTC",0,"2021-06-24T13:05:12.635 UTC",0, +"2021-06-24T13:05:13.767 UTC",0,"2021-06-24T13:05:13.767 UTC",20.08248,"2021-06-24T13:05:13.767 UTC",20.08248,"2021-06-24T13:05:13.767 UTC",20.08248,"2021-06-24T13:05:13.767 UTC",20.08248,"2021-06-24T13:05:13.767 UTC",0, +"2021-06-24T13:05:15.123 UTC",0,"2021-06-24T13:05:15.123 UTC",20.08248,"2021-06-24T13:05:15.123 UTC",20.08248,"2021-06-24T13:05:15.123 UTC",20.08248,"2021-06-24T13:05:15.123 UTC",20.08248,"2021-06-24T13:05:15.123 UTC",0, +"2021-06-24T13:05:16.379 UTC",0,"2021-06-24T13:05:16.379 UTC",35.83649,"2021-06-24T13:05:16.379 UTC",35.83649,"2021-06-24T13:05:16.379 UTC",35.83649,"2021-06-24T13:05:16.379 UTC",35.83649,"2021-06-24T13:05:16.379 UTC",0, +"2021-06-24T13:05:17.516 UTC",0,"2021-06-24T13:05:17.516 UTC",43.68122,"2021-06-24T13:05:17.516 UTC",43.68122,"2021-06-24T13:05:17.516 UTC",43.68122,"2021-06-24T13:05:17.516 UTC",43.68122,"2021-06-24T13:05:17.516 UTC",0, +"2021-06-24T13:05:18.635 UTC",0,"2021-06-24T13:05:18.635 UTC",43.69924,"2021-06-24T13:05:18.635 UTC",43.69924,"2021-06-24T13:05:18.635 UTC",43.69924,"2021-06-24T13:05:18.635 UTC",43.69924,"2021-06-24T13:05:18.635 UTC",0, +"2021-06-24T13:05:20.559 UTC",0,"2021-06-24T13:05:20.559 UTC",45.09452,"2021-06-24T13:05:20.559 UTC",45.09452,"2021-06-24T13:05:20.559 UTC",45.09452,"2021-06-24T13:05:20.559 UTC",45.09452,"2021-06-24T13:05:20.559 UTC",0, +"2021-06-24T13:05:21.762 UTC",0,"2021-06-24T13:05:21.762 UTC",45.3935,"2021-06-24T13:05:21.762 UTC",45.3935,"2021-06-24T13:05:21.762 UTC",45.3935,"2021-06-24T13:05:21.762 UTC",45.3935,"2021-06-24T13:05:21.762 UTC",0, +"2021-06-24T13:05:22.906 UTC",0,"2021-06-24T13:05:22.906 UTC",45.65422,"2021-06-24T13:05:22.906 UTC",45.65422,"2021-06-24T13:05:22.906 UTC",45.65422,"2021-06-24T13:05:22.906 UTC",45.65422,"2021-06-24T13:05:22.906 UTC",0, +"2021-06-24T13:05:24.083 UTC",0,"2021-06-24T13:05:24.083 UTC",45.07789,"2021-06-24T13:05:24.083 UTC",45.07789,"2021-06-24T13:05:24.083 UTC",45.07789,"2021-06-24T13:05:24.083 UTC",45.07789,"2021-06-24T13:05:24.083 UTC",0, +"2021-06-24T13:05:26.051 UTC",0,"2021-06-24T13:05:26.051 UTC",45.28866,"2021-06-24T13:05:26.051 UTC",45.28866,"2021-06-24T13:05:26.051 UTC",45.28866,"2021-06-24T13:05:26.051 UTC",45.28866,"2021-06-24T13:05:26.051 UTC",0, +"2021-06-24T13:05:27.409 UTC",0,"2021-06-24T13:05:27.409 UTC",45.86275,"2021-06-24T13:05:27.409 UTC",45.86275,"2021-06-24T13:05:27.409 UTC",45.86275,"2021-06-24T13:05:27.409 UTC",45.86275,"2021-06-24T13:05:27.409 UTC",0, +"2021-06-24T13:05:28.559 UTC",0,"2021-06-24T13:05:28.559 UTC",45.47469,"2021-06-24T13:05:28.559 UTC",45.47469,"2021-06-24T13:05:28.559 UTC",45.47469,"2021-06-24T13:05:28.559 UTC",45.47469,"2021-06-24T13:05:28.559 UTC",0, +"2021-06-24T13:05:29.682 UTC",0,"2021-06-24T13:05:29.682 UTC",45.65525,"2021-06-24T13:05:29.682 UTC",45.65525,"2021-06-24T13:05:29.682 UTC",45.65525,"2021-06-24T13:05:29.682 UTC",45.65525,"2021-06-24T13:05:29.682 UTC",0, +"2021-06-24T13:05:31.459 UTC",0,"2021-06-24T13:05:31.459 UTC",45.83485,"2021-06-24T13:05:31.459 UTC",45.83485,"2021-06-24T13:05:31.459 UTC",45.83485,"2021-06-24T13:05:31.459 UTC",45.83485,"2021-06-24T13:05:31.459 UTC",0, +"2021-06-24T13:05:32.753 UTC",0,"2021-06-24T13:05:32.753 UTC",46.98529,"2021-06-24T13:05:32.753 UTC",46.98529,"2021-06-24T13:05:32.753 UTC",46.98529,"2021-06-24T13:05:32.753 UTC",46.98529,"2021-06-24T13:05:32.753 UTC",0, +"2021-06-24T13:05:33.899 UTC",0,"2021-06-24T13:05:33.899 UTC",47.08026,"2021-06-24T13:05:33.899 UTC",47.08026,"2021-06-24T13:05:33.899 UTC",47.08026,"2021-06-24T13:05:33.899 UTC",47.08026,"2021-06-24T13:05:33.899 UTC",0, +"2021-06-24T13:05:35.326 UTC",0,"2021-06-24T13:05:35.326 UTC",47.64647,"2021-06-24T13:05:35.326 UTC",47.64647,"2021-06-24T13:05:35.326 UTC",47.64647,"2021-06-24T13:05:35.326 UTC",47.64647,"2021-06-24T13:05:35.326 UTC",0, +"2021-06-24T13:05:37.613 UTC",0,"2021-06-24T13:05:37.613 UTC",47.44756,"2021-06-24T13:05:37.613 UTC",47.44756,"2021-06-24T13:05:37.613 UTC",47.44756,"2021-06-24T13:05:37.613 UTC",47.44756,"2021-06-24T13:05:37.613 UTC",0, +"2021-06-24T13:05:38.941 UTC",0,"2021-06-24T13:05:38.941 UTC",0,"2021-06-24T13:05:38.941 UTC",0,"2021-06-24T13:05:38.941 UTC",0,"2021-06-24T13:05:38.941 UTC",0,"2021-06-24T13:05:38.941 UTC",0, +"2021-06-24T13:05:39.945 UTC",0,"2021-06-24T13:05:39.945 UTC",57.0272,"2021-06-24T13:05:39.945 UTC",57.0272,"2021-06-24T13:05:39.945 UTC",57.0272,"2021-06-24T13:05:39.945 UTC",57.0272,"2021-06-24T13:05:39.945 UTC",0, +"2021-06-24T13:05:41.012 UTC",0,"2021-06-24T13:05:41.012 UTC",106.88364,"2021-06-24T13:05:41.012 UTC",106.88364,"2021-06-24T13:05:41.012 UTC",106.88364,"2021-06-24T13:05:41.012 UTC",106.88364,"2021-06-24T13:05:41.012 UTC",0, +"2021-06-24T13:05:42.019 UTC",0,"2021-06-24T13:05:42.019 UTC",88.64117,"2021-06-24T13:05:42.019 UTC",88.64117,"2021-06-24T13:05:42.019 UTC",88.64117,"2021-06-24T13:05:42.019 UTC",88.64117,"2021-06-24T13:05:42.019 UTC",0, +"2021-06-24T13:05:43.939 UTC",0,"2021-06-24T13:05:43.939 UTC",88.64117,"2021-06-24T13:05:43.939 UTC",88.64117,"2021-06-24T13:05:43.939 UTC",88.64117,"2021-06-24T13:05:43.939 UTC",88.64117,"2021-06-24T13:05:43.939 UTC",0, +"2021-06-24T13:05:45.014 UTC",0,"2021-06-24T13:05:45.014 UTC",154.11658,"2021-06-24T13:05:45.014 UTC",154.11658,"2021-06-24T13:05:45.014 UTC",154.11658,"2021-06-24T13:05:45.014 UTC",154.11658,"2021-06-24T13:05:45.014 UTC",0, +"2021-06-24T13:05:46.089 UTC",0,"2021-06-24T13:05:46.089 UTC",153.43946,"2021-06-24T13:05:46.089 UTC",153.43946,"2021-06-24T13:05:46.089 UTC",153.43946,"2021-06-24T13:05:46.089 UTC",153.43946,"2021-06-24T13:05:46.089 UTC",0, +"2021-06-24T13:05:47.111 UTC",0,"2021-06-24T13:05:47.111 UTC",145.7932,"2021-06-24T13:05:47.111 UTC",145.7932,"2021-06-24T13:05:47.111 UTC",145.7932,"2021-06-24T13:05:47.111 UTC",145.7932,"2021-06-24T13:05:47.111 UTC",0, +"2021-06-24T13:05:48.151 UTC",0,"2021-06-24T13:05:48.151 UTC",151.65382,"2021-06-24T13:05:48.151 UTC",151.65382,"2021-06-24T13:05:48.151 UTC",151.65382,"2021-06-24T13:05:48.151 UTC",151.65382,"2021-06-24T13:05:48.151 UTC",0, +"2021-06-24T13:05:49.485 UTC",0,"2021-06-24T13:05:49.485 UTC",157.77303,"2021-06-24T13:05:49.485 UTC",157.77303,"2021-06-24T13:05:49.485 UTC",157.77303,"2021-06-24T13:05:49.485 UTC",157.77303,"2021-06-24T13:05:49.485 UTC",0, +"2021-06-24T13:05:50.565 UTC",0,"2021-06-24T13:05:50.565 UTC",153.89262,"2021-06-24T13:05:50.565 UTC",153.89262,"2021-06-24T13:05:50.565 UTC",153.89262,"2021-06-24T13:05:50.565 UTC",153.89262,"2021-06-24T13:05:50.565 UTC",0, +"2021-06-24T13:05:51.569 UTC",0,"2021-06-24T13:05:51.569 UTC",164.79277,"2021-06-24T13:05:51.569 UTC",164.79277,"2021-06-24T13:05:51.569 UTC",164.79277,"2021-06-24T13:05:51.569 UTC",164.79277,"2021-06-24T13:05:51.569 UTC",0, +"2021-06-24T13:05:52.572 UTC",0,"2021-06-24T13:05:52.572 UTC",180.95022,"2021-06-24T13:05:52.572 UTC",180.95022,"2021-06-24T13:05:52.572 UTC",180.95022,"2021-06-24T13:05:52.572 UTC",180.95022,"2021-06-24T13:05:52.572 UTC",0, +"2021-06-24T13:05:53.580 UTC",0,"2021-06-24T13:05:53.580 UTC",196.10081,"2021-06-24T13:05:53.580 UTC",196.10081,"2021-06-24T13:05:53.580 UTC",196.10081,"2021-06-24T13:05:53.580 UTC",196.10081,"2021-06-24T13:05:53.580 UTC",0, +"2021-06-24T13:05:55.086 UTC",0,"2021-06-24T13:05:55.086 UTC",199.74376,"2021-06-24T13:05:55.086 UTC",199.74376,"2021-06-24T13:05:55.086 UTC",199.74376,"2021-06-24T13:05:55.086 UTC",199.74376,"2021-06-24T13:05:55.086 UTC",0, +"2021-06-24T13:05:56.099 UTC",0,"2021-06-24T13:05:56.099 UTC",186.79759,"2021-06-24T13:05:56.099 UTC",186.79759,"2021-06-24T13:05:56.099 UTC",186.79759,"2021-06-24T13:05:56.099 UTC",186.79759,"2021-06-24T13:05:56.099 UTC",0, +"2021-06-24T13:05:57.105 UTC",0,"2021-06-24T13:05:57.105 UTC",178.54685,"2021-06-24T13:05:57.105 UTC",178.54685,"2021-06-24T13:05:57.105 UTC",178.54685,"2021-06-24T13:05:57.105 UTC",178.54685,"2021-06-24T13:05:57.105 UTC",0, +"2021-06-24T13:05:58.109 UTC",0,"2021-06-24T13:05:58.109 UTC",171.03893,"2021-06-24T13:05:58.109 UTC",171.03893,"2021-06-24T13:05:58.109 UTC",171.03893,"2021-06-24T13:05:58.109 UTC",171.03893,"2021-06-24T13:05:58.109 UTC",0, +"2021-06-24T13:05:59.127 UTC",0,"2021-06-24T13:05:59.127 UTC",173.49083,"2021-06-24T13:05:59.127 UTC",173.49083,"2021-06-24T13:05:59.127 UTC",173.49083,"2021-06-24T13:05:59.127 UTC",173.49083,"2021-06-24T13:05:59.127 UTC",0, +"2021-06-24T13:06:00.761 UTC",0,"2021-06-24T13:06:00.761 UTC",160.76421,"2021-06-24T13:06:00.761 UTC",160.76421,"2021-06-24T13:06:00.761 UTC",160.76421,"2021-06-24T13:06:00.761 UTC",160.76421,"2021-06-24T13:06:00.761 UTC",0, +"2021-06-24T13:06:01.986 UTC",0,"2021-06-24T13:06:01.986 UTC",169.5681,"2021-06-24T13:06:01.986 UTC",169.5681,"2021-06-24T13:06:01.986 UTC",169.5681,"2021-06-24T13:06:01.986 UTC",169.5681,"2021-06-24T13:06:01.986 UTC",0, +"2021-06-24T13:06:02.989 UTC",0,"2021-06-24T13:06:02.989 UTC",0,"2021-06-24T13:06:02.989 UTC",0,"2021-06-24T13:06:02.989 UTC",0,"2021-06-24T13:06:02.989 UTC",0,"2021-06-24T13:06:02.989 UTC",0, +"2021-06-24T13:06:04.029 UTC",0,"2021-06-24T13:06:04.029 UTC",12.86295,"2021-06-24T13:06:04.029 UTC",12.86295,"2021-06-24T13:06:04.029 UTC",12.86295,"2021-06-24T13:06:04.029 UTC",12.86295,"2021-06-24T13:06:04.029 UTC",0, +"2021-06-24T13:06:05.032 UTC",0,"2021-06-24T13:06:05.032 UTC",89.01764,"2021-06-24T13:06:05.032 UTC",89.01764,"2021-06-24T13:06:05.032 UTC",89.01764,"2021-06-24T13:06:05.032 UTC",89.01764,"2021-06-24T13:06:05.032 UTC",0, +"2021-06-24T13:06:06.764 UTC",0,"2021-06-24T13:06:06.764 UTC",89.01764,"2021-06-24T13:06:06.764 UTC",89.01764,"2021-06-24T13:06:06.764 UTC",89.01764,"2021-06-24T13:06:06.764 UTC",89.01764,"2021-06-24T13:06:06.764 UTC",0, +"2021-06-24T13:06:08.019 UTC",0,"2021-06-24T13:06:08.019 UTC",109.14102,"2021-06-24T13:06:08.019 UTC",109.14102,"2021-06-24T13:06:08.019 UTC",109.14102,"2021-06-24T13:06:08.019 UTC",109.14102,"2021-06-24T13:06:08.019 UTC",0, +"2021-06-24T13:06:09.031 UTC",0,"2021-06-24T13:06:09.031 UTC",114.97869,"2021-06-24T13:06:09.031 UTC",114.97869,"2021-06-24T13:06:09.031 UTC",114.97869,"2021-06-24T13:06:09.031 UTC",114.97869,"2021-06-24T13:06:09.031 UTC",0, +"2021-06-24T13:06:10.052 UTC",0,"2021-06-24T13:06:10.052 UTC",140.84837,"2021-06-24T13:06:10.052 UTC",140.84837,"2021-06-24T13:06:10.052 UTC",140.84837,"2021-06-24T13:06:10.052 UTC",140.84837,"2021-06-24T13:06:10.052 UTC",0, +"2021-06-24T13:06:11.141 UTC",0,"2021-06-24T13:06:11.141 UTC",182.41845,"2021-06-24T13:06:11.141 UTC",182.41845,"2021-06-24T13:06:11.141 UTC",182.41845,"2021-06-24T13:06:11.141 UTC",182.41845,"2021-06-24T13:06:11.141 UTC",0, +"2021-06-24T13:06:12.961 UTC",0,"2021-06-24T13:06:12.961 UTC",182.41845,"2021-06-24T13:06:12.961 UTC",182.41845,"2021-06-24T13:06:12.961 UTC",182.41845,"2021-06-24T13:06:12.961 UTC",182.41845,"2021-06-24T13:06:12.961 UTC",0, +"2021-06-24T13:06:13.985 UTC",0,"2021-06-24T13:06:13.985 UTC",126.42118,"2021-06-24T13:06:13.985 UTC",126.42118,"2021-06-24T13:06:13.985 UTC",126.42118,"2021-06-24T13:06:13.985 UTC",126.42118,"2021-06-24T13:06:13.985 UTC",0, +"2021-06-24T13:06:14.991 UTC",0,"2021-06-24T13:06:14.991 UTC",138.64259,"2021-06-24T13:06:14.991 UTC",138.64259,"2021-06-24T13:06:14.991 UTC",138.64259,"2021-06-24T13:06:14.991 UTC",138.64259,"2021-06-24T13:06:14.991 UTC",0, +"2021-06-24T13:06:15.996 UTC",0,"2021-06-24T13:06:15.996 UTC",169.36751,"2021-06-24T13:06:15.996 UTC",169.36751,"2021-06-24T13:06:15.996 UTC",169.36751,"2021-06-24T13:06:15.996 UTC",169.36751,"2021-06-24T13:06:15.996 UTC",0, +"2021-06-24T13:06:17.000 UTC",0,"2021-06-24T13:06:17.000 UTC",194.3941,"2021-06-24T13:06:17.000 UTC",194.3941,"2021-06-24T13:06:17.000 UTC",194.3941,"2021-06-24T13:06:17.000 UTC",194.3941,"2021-06-24T13:06:17.000 UTC",0, +"2021-06-24T13:06:18.016 UTC",0,"2021-06-24T13:06:18.016 UTC",182.3653,"2021-06-24T13:06:18.016 UTC",182.3653,"2021-06-24T13:06:18.016 UTC",182.3653,"2021-06-24T13:06:18.016 UTC",182.3653,"2021-06-24T13:06:18.016 UTC",0, +"2021-06-24T13:06:19.074 UTC",0,"2021-06-24T13:06:19.074 UTC",177.53078,"2021-06-24T13:06:19.074 UTC",177.53078,"2021-06-24T13:06:19.074 UTC",177.53078,"2021-06-24T13:06:19.074 UTC",177.53078,"2021-06-24T13:06:19.074 UTC",0, +"2021-06-24T13:06:20.078 UTC",0,"2021-06-24T13:06:20.078 UTC",176.84158,"2021-06-24T13:06:20.078 UTC",176.84158,"2021-06-24T13:06:20.078 UTC",176.84158,"2021-06-24T13:06:20.078 UTC",176.84158,"2021-06-24T13:06:20.078 UTC",0, +"2021-06-24T13:06:21.126 UTC",0,"2021-06-24T13:06:21.126 UTC",156.20589,"2021-06-24T13:06:21.126 UTC",156.20589,"2021-06-24T13:06:21.126 UTC",156.20589,"2021-06-24T13:06:21.126 UTC",156.20589,"2021-06-24T13:06:21.126 UTC",0, +"2021-06-24T13:06:22.175 UTC",0,"2021-06-24T13:06:22.175 UTC",161.65611,"2021-06-24T13:06:22.175 UTC",161.65611,"2021-06-24T13:06:22.175 UTC",161.65611,"2021-06-24T13:06:22.175 UTC",161.65611,"2021-06-24T13:06:22.175 UTC",0, +"2021-06-24T13:06:24.014 UTC",0,"2021-06-24T13:06:24.014 UTC",179.27208,"2021-06-24T13:06:24.014 UTC",179.27208,"2021-06-24T13:06:24.014 UTC",179.27208,"2021-06-24T13:06:24.014 UTC",179.27208,"2021-06-24T13:06:24.014 UTC",0, +"2021-06-24T13:06:25.138 UTC",0,"2021-06-24T13:06:25.138 UTC",179.96647,"2021-06-24T13:06:25.138 UTC",179.96647,"2021-06-24T13:06:25.138 UTC",179.96647,"2021-06-24T13:06:25.138 UTC",179.96647,"2021-06-24T13:06:25.138 UTC",0, +"2021-06-24T13:06:26.153 UTC",0,"2021-06-24T13:06:26.153 UTC",179.96647,"2021-06-24T13:06:26.153 UTC",179.96647,"2021-06-24T13:06:26.153 UTC",179.96647,"2021-06-24T13:06:26.153 UTC",179.96647,"2021-06-24T13:06:26.153 UTC",0, +"2021-06-24T13:06:27.458 UTC",0,"2021-06-24T13:06:27.458 UTC",168.18325,"2021-06-24T13:06:27.458 UTC",168.18325,"2021-06-24T13:06:27.458 UTC",168.18325,"2021-06-24T13:06:27.458 UTC",168.18325,"2021-06-24T13:06:27.458 UTC",0, +"2021-06-24T13:06:30.313 UTC",0,"2021-06-24T13:06:30.313 UTC",136.23597,"2021-06-24T13:06:30.313 UTC",136.23597,"2021-06-24T13:06:30.313 UTC",136.23597,"2021-06-24T13:06:30.313 UTC",136.23597,"2021-06-24T13:06:30.313 UTC",0, +"2021-06-24T13:06:31.446 UTC",0,"2021-06-24T13:06:31.446 UTC",0,"2021-06-24T13:06:31.446 UTC",0,"2021-06-24T13:06:31.446 UTC",0,"2021-06-24T13:06:31.446 UTC",0,"2021-06-24T13:06:31.446 UTC",0, +"2021-06-24T13:06:32.456 UTC",81.01041,"2021-06-24T13:06:32.456 UTC",0,"2021-06-24T13:06:32.456 UTC",81.01041,"2021-06-24T13:06:32.456 UTC",81.01041,"2021-06-24T13:06:32.456 UTC",0,"2021-06-24T13:06:32.456 UTC",81.01041, +"2021-06-24T13:06:33.462 UTC",81.01041,"2021-06-24T13:06:33.462 UTC",0,"2021-06-24T13:06:33.462 UTC",81.01041,"2021-06-24T13:06:33.462 UTC",81.01041,"2021-06-24T13:06:33.462 UTC",0,"2021-06-24T13:06:33.462 UTC",81.01041, +"2021-06-24T13:06:34.466 UTC",115.21429,"2021-06-24T13:06:34.466 UTC",0,"2021-06-24T13:06:34.466 UTC",115.21429,"2021-06-24T13:06:34.466 UTC",115.21429,"2021-06-24T13:06:34.466 UTC",0,"2021-06-24T13:06:34.466 UTC",115.21429, +"2021-06-24T13:06:36.207 UTC",74.11585,"2021-06-24T13:06:36.207 UTC",0,"2021-06-24T13:06:36.207 UTC",74.11585,"2021-06-24T13:06:36.207 UTC",74.11585,"2021-06-24T13:06:36.207 UTC",0,"2021-06-24T13:06:36.207 UTC",74.11585, +"2021-06-24T13:06:37.236 UTC",128.71215,"2021-06-24T13:06:37.236 UTC",0,"2021-06-24T13:06:37.236 UTC",128.71215,"2021-06-24T13:06:37.236 UTC",128.71215,"2021-06-24T13:06:37.236 UTC",0,"2021-06-24T13:06:37.236 UTC",128.71215, +"2021-06-24T13:06:38.239 UTC",136.12795,"2021-06-24T13:06:38.239 UTC",0,"2021-06-24T13:06:38.239 UTC",136.12795,"2021-06-24T13:06:38.239 UTC",136.12795,"2021-06-24T13:06:38.239 UTC",0,"2021-06-24T13:06:38.239 UTC",136.12795, +"2021-06-24T13:06:39.243 UTC",145.54554,"2021-06-24T13:06:39.243 UTC",0,"2021-06-24T13:06:39.243 UTC",145.54554,"2021-06-24T13:06:39.243 UTC",145.54554,"2021-06-24T13:06:39.243 UTC",0,"2021-06-24T13:06:39.243 UTC",145.54554, +"2021-06-24T13:06:40.246 UTC",139.12486,"2021-06-24T13:06:40.246 UTC",0,"2021-06-24T13:06:40.246 UTC",139.12486,"2021-06-24T13:06:40.246 UTC",139.12486,"2021-06-24T13:06:40.246 UTC",0,"2021-06-24T13:06:40.246 UTC",139.12486, +"2021-06-24T13:06:41.818 UTC",131.13375,"2021-06-24T13:06:41.818 UTC",0,"2021-06-24T13:06:41.818 UTC",131.13375,"2021-06-24T13:06:41.818 UTC",131.13375,"2021-06-24T13:06:41.818 UTC",0,"2021-06-24T13:06:41.818 UTC",131.13375, +"2021-06-24T13:06:42.825 UTC",139.43639,"2021-06-24T13:06:42.825 UTC",0,"2021-06-24T13:06:42.825 UTC",139.43639,"2021-06-24T13:06:42.825 UTC",139.43639,"2021-06-24T13:06:42.825 UTC",0,"2021-06-24T13:06:42.825 UTC",139.43639, +"2021-06-24T13:06:43.831 UTC",147.65079,"2021-06-24T13:06:43.831 UTC",0,"2021-06-24T13:06:43.831 UTC",147.65079,"2021-06-24T13:06:43.831 UTC",147.65079,"2021-06-24T13:06:43.831 UTC",0,"2021-06-24T13:06:43.831 UTC",147.65079, +"2021-06-24T13:06:44.849 UTC",160.72659,"2021-06-24T13:06:44.849 UTC",0,"2021-06-24T13:06:44.849 UTC",160.72659,"2021-06-24T13:06:44.849 UTC",160.72659,"2021-06-24T13:06:44.849 UTC",0,"2021-06-24T13:06:44.849 UTC",160.72659, +"2021-06-24T13:06:45.876 UTC",157.75082,"2021-06-24T13:06:45.876 UTC",0,"2021-06-24T13:06:45.876 UTC",157.75082,"2021-06-24T13:06:45.876 UTC",157.75082,"2021-06-24T13:06:45.876 UTC",0,"2021-06-24T13:06:45.876 UTC",157.75082, +"2021-06-24T13:06:47.306 UTC",157.75082,"2021-06-24T13:06:47.306 UTC",0,"2021-06-24T13:06:47.306 UTC",157.75082,"2021-06-24T13:06:47.306 UTC",157.75082,"2021-06-24T13:06:47.306 UTC",0,"2021-06-24T13:06:47.306 UTC",157.75082, +"2021-06-24T13:06:48.402 UTC",140.73814,"2021-06-24T13:06:48.402 UTC",0,"2021-06-24T13:06:48.402 UTC",140.73814,"2021-06-24T13:06:48.402 UTC",140.73814,"2021-06-24T13:06:48.402 UTC",0,"2021-06-24T13:06:48.402 UTC",140.73814, +"2021-06-24T13:06:49.473 UTC",140.18522,"2021-06-24T13:06:49.473 UTC",0,"2021-06-24T13:06:49.473 UTC",140.18522,"2021-06-24T13:06:49.473 UTC",140.18522,"2021-06-24T13:06:49.473 UTC",0,"2021-06-24T13:06:49.473 UTC",140.18522, +"2021-06-24T13:06:50.475 UTC",140.9653,"2021-06-24T13:06:50.475 UTC",0,"2021-06-24T13:06:50.475 UTC",140.9653,"2021-06-24T13:06:50.475 UTC",140.9653,"2021-06-24T13:06:50.475 UTC",0,"2021-06-24T13:06:50.475 UTC",140.9653, +"2021-06-24T13:06:51.479 UTC",149.74488,"2021-06-24T13:06:51.479 UTC",0,"2021-06-24T13:06:51.479 UTC",149.74488,"2021-06-24T13:06:51.479 UTC",149.74488,"2021-06-24T13:06:51.479 UTC",0,"2021-06-24T13:06:51.479 UTC",149.74488, +"2021-06-24T13:06:52.900 UTC",149.74488,"2021-06-24T13:06:52.900 UTC",0,"2021-06-24T13:06:52.900 UTC",149.74488,"2021-06-24T13:06:52.900 UTC",149.74488,"2021-06-24T13:06:52.900 UTC",0,"2021-06-24T13:06:52.900 UTC",149.74488, +"2021-06-24T13:06:53.975 UTC",154.60875,"2021-06-24T13:06:53.975 UTC",0,"2021-06-24T13:06:53.975 UTC",154.60875,"2021-06-24T13:06:53.975 UTC",154.60875,"2021-06-24T13:06:53.975 UTC",0,"2021-06-24T13:06:53.975 UTC",154.60875, +"2021-06-24T13:06:55.081 UTC",157.48085,"2021-06-24T13:06:55.081 UTC",0,"2021-06-24T13:06:55.081 UTC",157.48085,"2021-06-24T13:06:55.081 UTC",157.48085,"2021-06-24T13:06:55.081 UTC",0,"2021-06-24T13:06:55.081 UTC",157.48085, +"2021-06-24T13:06:56.091 UTC",156.62474,"2021-06-24T13:06:56.091 UTC",0,"2021-06-24T13:06:56.091 UTC",156.62474,"2021-06-24T13:06:56.091 UTC",156.62474,"2021-06-24T13:06:56.091 UTC",0,"2021-06-24T13:06:56.091 UTC",156.62474, +"2021-06-24T13:06:57.171 UTC",46.2555,"2021-06-24T13:06:57.171 UTC",0,"2021-06-24T13:06:57.171 UTC",46.2555,"2021-06-24T13:06:57.171 UTC",46.2555,"2021-06-24T13:06:57.171 UTC",0,"2021-06-24T13:06:57.171 UTC",46.2555, +"2021-06-24T13:06:58.775 UTC",46.2555,"2021-06-24T13:06:58.775 UTC",0,"2021-06-24T13:06:58.775 UTC",46.2555,"2021-06-24T13:06:58.775 UTC",46.2555,"2021-06-24T13:06:58.775 UTC",0,"2021-06-24T13:06:58.775 UTC",46.2555, +"2021-06-24T13:06:59.855 UTC",128.1117,"2021-06-24T13:06:59.855 UTC",0,"2021-06-24T13:06:59.855 UTC",128.1117,"2021-06-24T13:06:59.855 UTC",128.1117,"2021-06-24T13:06:59.855 UTC",0,"2021-06-24T13:06:59.855 UTC",128.1117, +"2021-06-24T13:07:00.858 UTC",149.7146,"2021-06-24T13:07:00.858 UTC",0,"2021-06-24T13:07:00.858 UTC",149.7146,"2021-06-24T13:07:00.858 UTC",149.7146,"2021-06-24T13:07:00.858 UTC",0,"2021-06-24T13:07:00.858 UTC",149.7146, +"2021-06-24T13:07:01.861 UTC",138.46164,"2021-06-24T13:07:01.861 UTC",0,"2021-06-24T13:07:01.861 UTC",138.46164,"2021-06-24T13:07:01.861 UTC",138.46164,"2021-06-24T13:07:01.861 UTC",0,"2021-06-24T13:07:01.861 UTC",138.46164, +"2021-06-24T13:07:02.865 UTC",131.2945,"2021-06-24T13:07:02.865 UTC",0,"2021-06-24T13:07:02.865 UTC",131.2945,"2021-06-24T13:07:02.865 UTC",131.2945,"2021-06-24T13:07:02.865 UTC",0,"2021-06-24T13:07:02.865 UTC",131.2945, +"2021-06-24T13:07:04.356 UTC",121.3569,"2021-06-24T13:07:04.356 UTC",0,"2021-06-24T13:07:04.356 UTC",121.3569,"2021-06-24T13:07:04.356 UTC",121.3569,"2021-06-24T13:07:04.356 UTC",0,"2021-06-24T13:07:04.356 UTC",121.3569, +"2021-06-24T13:07:05.406 UTC",130.35988,"2021-06-24T13:07:05.406 UTC",0,"2021-06-24T13:07:05.406 UTC",130.35988,"2021-06-24T13:07:05.406 UTC",130.35988,"2021-06-24T13:07:05.406 UTC",0,"2021-06-24T13:07:05.406 UTC",130.35988, +"2021-06-24T13:07:06.412 UTC",142.1523,"2021-06-24T13:07:06.412 UTC",0,"2021-06-24T13:07:06.412 UTC",142.1523,"2021-06-24T13:07:06.412 UTC",142.1523,"2021-06-24T13:07:06.412 UTC",0,"2021-06-24T13:07:06.412 UTC",142.1523, +"2021-06-24T13:07:07.416 UTC",136.28422,"2021-06-24T13:07:07.416 UTC",0,"2021-06-24T13:07:07.416 UTC",136.28422,"2021-06-24T13:07:07.416 UTC",136.28422,"2021-06-24T13:07:07.416 UTC",0,"2021-06-24T13:07:07.416 UTC",136.28422, +"2021-06-24T13:07:08.419 UTC",134.34447,"2021-06-24T13:07:08.419 UTC",0,"2021-06-24T13:07:08.419 UTC",134.34447,"2021-06-24T13:07:08.419 UTC",134.34447,"2021-06-24T13:07:08.419 UTC",0,"2021-06-24T13:07:08.419 UTC",134.34447, +"2021-06-24T13:07:10.092 UTC",132.86177,"2021-06-24T13:07:10.092 UTC",0,"2021-06-24T13:07:10.092 UTC",132.86177,"2021-06-24T13:07:10.092 UTC",132.86177,"2021-06-24T13:07:10.092 UTC",0,"2021-06-24T13:07:10.092 UTC",132.86177, +"2021-06-24T13:07:11.187 UTC",134.60485,"2021-06-24T13:07:11.187 UTC",0,"2021-06-24T13:07:11.187 UTC",134.60485,"2021-06-24T13:07:11.187 UTC",134.60485,"2021-06-24T13:07:11.187 UTC",0,"2021-06-24T13:07:11.187 UTC",134.60485, +"2021-06-24T13:07:12.193 UTC",137.69828,"2021-06-24T13:07:12.193 UTC",0,"2021-06-24T13:07:12.193 UTC",137.69828,"2021-06-24T13:07:12.193 UTC",137.69828,"2021-06-24T13:07:12.193 UTC",0,"2021-06-24T13:07:12.193 UTC",137.69828, +"2021-06-24T13:07:13.195 UTC",122.84054,"2021-06-24T13:07:13.195 UTC",0,"2021-06-24T13:07:13.195 UTC",122.84054,"2021-06-24T13:07:13.195 UTC",122.84054,"2021-06-24T13:07:13.195 UTC",0,"2021-06-24T13:07:13.195 UTC",122.84054, +"2021-06-24T13:07:14.198 UTC",123.97687,"2021-06-24T13:07:14.198 UTC",0,"2021-06-24T13:07:14.198 UTC",123.97687,"2021-06-24T13:07:14.198 UTC",123.97687,"2021-06-24T13:07:14.198 UTC",0,"2021-06-24T13:07:14.198 UTC",123.97687, +"2021-06-24T13:07:15.559 UTC",122.20608,"2021-06-24T13:07:15.559 UTC",0,"2021-06-24T13:07:15.559 UTC",122.20608,"2021-06-24T13:07:15.559 UTC",122.20608,"2021-06-24T13:07:15.559 UTC",0,"2021-06-24T13:07:15.559 UTC",122.20608, +"2021-06-24T13:07:16.569 UTC",123.6539,"2021-06-24T13:07:16.569 UTC",0,"2021-06-24T13:07:16.569 UTC",123.6539,"2021-06-24T13:07:16.569 UTC",123.6539,"2021-06-24T13:07:16.569 UTC",0,"2021-06-24T13:07:16.569 UTC",123.6539, +"2021-06-24T13:07:17.572 UTC",119.04136,"2021-06-24T13:07:17.572 UTC",0,"2021-06-24T13:07:17.572 UTC",119.04136,"2021-06-24T13:07:17.572 UTC",119.04136,"2021-06-24T13:07:17.572 UTC",0,"2021-06-24T13:07:17.572 UTC",119.04136, +"2021-06-24T13:07:18.575 UTC",118.09227,"2021-06-24T13:07:18.575 UTC",0,"2021-06-24T13:07:18.575 UTC",118.09227,"2021-06-24T13:07:18.575 UTC",118.09227,"2021-06-24T13:07:18.575 UTC",0,"2021-06-24T13:07:18.575 UTC",118.09227, +"2021-06-24T13:07:19.602 UTC",131.86202,"2021-06-24T13:07:19.602 UTC",0,"2021-06-24T13:07:19.602 UTC",131.86202,"2021-06-24T13:07:19.602 UTC",131.86202,"2021-06-24T13:07:19.602 UTC",0,"2021-06-24T13:07:19.602 UTC",131.86202, +"2021-06-24T13:07:21.198 UTC",0,"2021-06-24T13:07:21.198 UTC",0,"2021-06-24T13:07:21.198 UTC",0,"2021-06-24T13:07:21.198 UTC",0,"2021-06-24T13:07:21.198 UTC",0,"2021-06-24T13:07:21.198 UTC",0, +"2021-06-24T13:07:22.307 UTC",47.09622,"2021-06-24T13:07:22.307 UTC",0,"2021-06-24T13:07:22.307 UTC",47.09622,"2021-06-24T13:07:22.307 UTC",47.09622,"2021-06-24T13:07:22.307 UTC",0,"2021-06-24T13:07:22.307 UTC",47.09622, +"2021-06-24T13:07:23.342 UTC",113.1122,"2021-06-24T13:07:23.342 UTC",0,"2021-06-24T13:07:23.342 UTC",113.1122,"2021-06-24T13:07:23.342 UTC",113.1122,"2021-06-24T13:07:23.342 UTC",0,"2021-06-24T13:07:23.342 UTC",113.1122, +"2021-06-24T13:07:24.346 UTC",183.21198,"2021-06-24T13:07:24.346 UTC",0,"2021-06-24T13:07:24.346 UTC",183.21198,"2021-06-24T13:07:24.346 UTC",183.21198,"2021-06-24T13:07:24.346 UTC",0,"2021-06-24T13:07:24.346 UTC",183.21198, +"2021-06-24T13:07:25.350 UTC",200.66185,"2021-06-24T13:07:25.350 UTC",0,"2021-06-24T13:07:25.350 UTC",200.66185,"2021-06-24T13:07:25.350 UTC",200.66185,"2021-06-24T13:07:25.350 UTC",0,"2021-06-24T13:07:25.350 UTC",200.66185, +"2021-06-24T13:07:27.258 UTC",200.66185,"2021-06-24T13:07:27.258 UTC",0,"2021-06-24T13:07:27.258 UTC",200.66185,"2021-06-24T13:07:27.258 UTC",200.66185,"2021-06-24T13:07:27.258 UTC",0,"2021-06-24T13:07:27.258 UTC",200.66185, +"2021-06-24T13:07:28.435 UTC",183.28354,"2021-06-24T13:07:28.435 UTC",0,"2021-06-24T13:07:28.435 UTC",183.28354,"2021-06-24T13:07:28.435 UTC",183.28354,"2021-06-24T13:07:28.435 UTC",0,"2021-06-24T13:07:28.435 UTC",183.28354, +"2021-06-24T13:07:29.439 UTC",179.58321,"2021-06-24T13:07:29.439 UTC",0,"2021-06-24T13:07:29.439 UTC",179.58321,"2021-06-24T13:07:29.439 UTC",179.58321,"2021-06-24T13:07:29.439 UTC",0,"2021-06-24T13:07:29.439 UTC",179.58321, +"2021-06-24T13:07:30.443 UTC",178.73124,"2021-06-24T13:07:30.443 UTC",0,"2021-06-24T13:07:30.443 UTC",178.73124,"2021-06-24T13:07:30.443 UTC",178.73124,"2021-06-24T13:07:30.443 UTC",0,"2021-06-24T13:07:30.443 UTC",178.73124, +"2021-06-24T13:07:31.447 UTC",186.23463,"2021-06-24T13:07:31.447 UTC",0,"2021-06-24T13:07:31.447 UTC",186.23463,"2021-06-24T13:07:31.447 UTC",186.23463,"2021-06-24T13:07:31.447 UTC",0,"2021-06-24T13:07:31.447 UTC",186.23463, +"2021-06-24T13:07:33.039 UTC",196.21518,"2021-06-24T13:07:33.039 UTC",0,"2021-06-24T13:07:33.039 UTC",196.21518,"2021-06-24T13:07:33.039 UTC",196.21518,"2021-06-24T13:07:33.039 UTC",0,"2021-06-24T13:07:33.039 UTC",196.21518, +"2021-06-24T13:07:36.225 UTC",182.65512,"2021-06-24T13:07:36.225 UTC",0,"2021-06-24T13:07:36.225 UTC",182.65512,"2021-06-24T13:07:36.225 UTC",182.65512,"2021-06-24T13:07:36.225 UTC",0,"2021-06-24T13:07:36.225 UTC",182.65512, +"2021-06-24T13:07:37.306 UTC",153.38336,"2021-06-24T13:07:37.306 UTC",0,"2021-06-24T13:07:37.306 UTC",153.38336,"2021-06-24T13:07:37.306 UTC",153.38336,"2021-06-24T13:07:37.306 UTC",0,"2021-06-24T13:07:37.306 UTC",153.38336, +"2021-06-24T13:07:38.375 UTC",164.19841,"2021-06-24T13:07:38.375 UTC",0,"2021-06-24T13:07:38.375 UTC",164.19841,"2021-06-24T13:07:38.375 UTC",164.19841,"2021-06-24T13:07:38.375 UTC",0,"2021-06-24T13:07:38.375 UTC",164.19841, +"2021-06-24T13:07:39.385 UTC",199.45854,"2021-06-24T13:07:39.385 UTC",0,"2021-06-24T13:07:39.385 UTC",199.45854,"2021-06-24T13:07:39.385 UTC",199.45854,"2021-06-24T13:07:39.385 UTC",0,"2021-06-24T13:07:39.385 UTC",199.45854, +"2021-06-24T13:07:41.299 UTC",211.0476,"2021-06-24T13:07:41.299 UTC",0,"2021-06-24T13:07:41.299 UTC",211.0476,"2021-06-24T13:07:41.299 UTC",211.0476,"2021-06-24T13:07:41.299 UTC",0,"2021-06-24T13:07:41.299 UTC",211.0476, +"2021-06-24T13:07:42.321 UTC",142.29037,"2021-06-24T13:07:42.321 UTC",0,"2021-06-24T13:07:42.321 UTC",142.29037,"2021-06-24T13:07:42.321 UTC",142.29037,"2021-06-24T13:07:42.321 UTC",0,"2021-06-24T13:07:42.321 UTC",142.29037, +"2021-06-24T13:07:43.640 UTC",160.24816,"2021-06-24T13:07:43.640 UTC",0,"2021-06-24T13:07:43.640 UTC",160.24816,"2021-06-24T13:07:43.640 UTC",160.24816,"2021-06-24T13:07:43.640 UTC",0,"2021-06-24T13:07:43.640 UTC",160.24816, +"2021-06-24T13:07:44.741 UTC",0,"2021-06-24T13:07:44.741 UTC",0,"2021-06-24T13:07:44.741 UTC",0,"2021-06-24T13:07:44.741 UTC",0,"2021-06-24T13:07:44.741 UTC",0,"2021-06-24T13:07:44.741 UTC",0, +"2021-06-24T13:07:45.785 UTC",0,"2021-06-24T13:07:45.785 UTC",0,"2021-06-24T13:07:45.785 UTC",0,"2021-06-24T13:07:45.785 UTC",0,"2021-06-24T13:07:45.785 UTC",0,"2021-06-24T13:07:45.785 UTC",0, +"2021-06-24T13:07:46.831 UTC",0,"2021-06-24T13:07:46.831 UTC",0,"2021-06-24T13:07:46.831 UTC",0,"2021-06-24T13:07:46.831 UTC",0,"2021-06-24T13:07:46.831 UTC",0,"2021-06-24T13:07:46.831 UTC",0, +"2021-06-24T13:07:47.855 UTC",0,"2021-06-24T13:07:47.855 UTC",0,"2021-06-24T13:07:47.855 UTC",0,"2021-06-24T13:07:47.855 UTC",0,"2021-06-24T13:07:47.855 UTC",0,"2021-06-24T13:07:47.855 UTC",0, diff --git a/reports/ap-auto-2021-06-24-06-07-50/csv-data/data-Throughput_for_different_bands-1.csv b/reports/ap-auto-2021-06-24-06-07-50/csv-data/data-Throughput_for_different_bands-1.csv new file mode 100644 index 000000000..beaa0ab72 --- /dev/null +++ b/reports/ap-auto-2021-06-24-06-07-50/csv-data/data-Throughput_for_different_bands-1.csv @@ -0,0 +1,4 @@ +"Throughput for different bands", +"2.4Ghz","5Ghz","Combined-2","Dual", +45.93387,167.48692,213.42079,169.00617 +145.23156,128.71492,273.94648,179.92017 diff --git a/reports/ap-auto-2021-06-24-06-07-50/custom.css b/reports/ap-auto-2021-06-24-06-07-50/custom.css new file mode 100644 index 000000000..26e937507 --- /dev/null +++ b/reports/ap-auto-2021-06-24-06-07-50/custom.css @@ -0,0 +1,11 @@ +/* file reserved for customer styling of reports */ +/* rename to custom.css to take effect */ + +.TitleFont {} +.HeaderFont {} +.TableFont {} +.TableBorder {} +.ImgStyle {} +.HeaderStyle {} +.FooterStyle {} +/* eof */ diff --git a/reports/ap-auto-2021-06-24-06-07-50/index-print.html b/reports/ap-auto-2021-06-24-06-07-50/index-print.html new file mode 100644 index 000000000..7afd4bdcd --- /dev/null +++ b/reports/ap-auto-2021-06-24-06-07-50/index-print.html @@ -0,0 +1,2397 @@ + + + + + + AP-Auto + + + + + +
+ +
+

AP-Auto


AP Automated Test Plan

+






Thu Jun 24 06:07:52 PDT 2021

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
+ Test Setup Information +
+ Device Under Test + + ext-03-03 ssid_wpa2p_5g ext-03-03 ssid_wpa2p_2g +
+ Estimated Run Time + + 4 m +
+ Actual Run Time + + 3.716 m +
+ + +
+ + + + + +

+ Objective +

+

+ The AP-Auto WiFi Performance test plan automates testing of one or more + APs with flexibility to select which tests are to be run. +

+ + +
+ + + + + +

+ Summary Results +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Test + + Result + + Candela
Score +
+ Elapsed + + Info +
+ Basic Client Connectivity + + Skipped + + 0 + + 0 + + +
+ Throughput vs Pkt Size + + Skipped + + 0 + + 0 + + +
+ Multi Band Performance + + 2.4Ghz + PASS
5Ghz + PASS
Dual-Band + FAIL
+
+ 80 + + 3.1 m + + Dual-Concurrent vs 90% of Sum: 169.01 Mbps / 192.08 Mbps
Dual-Concurrent + vs 90% of Sum: 179.92 Mbps / 246.55 Mbps +
+ Capacity + + Skipped + + 0 + + 0 + + +
+ Stability + + Skipped + + 0 + + 0 + + +
+ Multi-Station Throughput vs Pkt Size + + Skipped + + 0 + + 0 + + +
+ Band-Steering + + Skipped + + 0 + + 0 + + +
+ Long-Term + + Skipped + + 0 + + 0 +
+ + +
+ + + + + + +
+

+ Multi Band Performance +

+
+ + +

+ Summary +

+

+ The Multi Band Performance test intends to verify that the Wi-Fi AP + throughput with multiple bands active with a single station on each + band. The configured speed will be 20% higher than the passing value for + MTU sized frames in the throughpu test. If the throughput test was + skipped, then fixed values will be used. +

+

+ A test is considered passed if the multi-band concurrent throughput is + at least 90% of the sum of the individual single-band throughput tests. + The score is the percentage of the throughput vs that 90% cut-off. +

+ + +
+ +

Throughput for different bands. +
+
CSV Data for Throughput for different bands
+Throughput for different bands
+ + + + + +

+ Multi Band Performance Results +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Type + + Result + + Notes +
+ 2.4Ghz Download + + PASS + + 45.93 Mbps PER: 37.48 +
+ 5Ghz Download + + PASS + + 167.49 Mbps PER: 0 +
+ Dual Download + + FAIL + + 169.01 Mbps PER: 30.53
Dual-Concurrent vs 90% of Sum: 169.01 Mbps + / 192.08 Mbps +
+ 2.4Ghz Upload + + PASS + + 145.23 Mbps PER: 0 +
+ 5Ghz Upload + + PASS + + 128.71 Mbps PER: 0 +
+ Dual Upload + + FAIL + + 179.92 Mbps PER: 0
Dual-Concurrent vs 90% of Sum: 179.92 Mbps / + 246.55 Mbps +
+ + +
+ + + + + +

+ Throughput Test, 2.4Ghz: Snapshot Download +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 376 bps + + 17.439 Mbps + + 7.143 + + 26 Mbps + + 65 Mbps + + 802.11bgn + + 6 + + 38 + + -11 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 39.822 Mbps + + 901 bps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 0 bps + + 45.406 Mbps + + 448 + + 448 + + 0 + + 81.153 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 185 Mbps + + 0 bps + + 0 + + 448 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, 5Ghz: Snapshot Download +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.7 wlan1 + + 223 bps + + 36.762 Mbps + + 0 + + 87.8 Mbps + + 1.17 Gbps + + 802.11an-AC + + 36 + + 139 + + -43 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 120.007 Mbps + + 127.612 Kbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 0 bps + + 169.241 Mbps + + 4 + + 4 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 169.784 Mbps + + 0 bps + + 0 + + 4 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, Dual: Snapshot Download +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 91.479 Kbps + + 22.955 Mbps + + 0.153 + + 216.7 Mbps + + 65 Mbps + + 802.11bgn + + 6 + + 38 + + -15 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+ 1.1.7 wlan1 + + 2.323 Kbps + + 68.523 Mbps + + 13.889 + + 234 Mbps + + 1.17 Gbps + + 802.11an-AC + + 36 + + 139 + + -45 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 152.302 Mbps + + 96.937 Kbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 0 bps + + 45.503 Mbps + + 714 + + 714 + + 0 + + 55.504 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 124.067 Mbps + + 0 bps + + 0 + + 714 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 0 bps + + 121.88 Mbps + + 62 + + 62 + + 0 + + 0.965 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 124.866 Mbps + + 0 bps + + 0 + + 62 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, 2.4Ghz: Snapshot Upload +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 42.026 Mbps + + 19.72 Mbps + + 0.055 + + 216.7 Mbps + + 11 Mbps + + 802.11bgn + + 6 + + 38 + + -10 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 133.488 Mbps + + 53.078 Mbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 145.706 Mbps + + 0 bps + + 0 + + 3 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 0 bps + + 143.022 Mbps + + 3 + + 3 + + 0 + + 0.86 +
+ + +
+ + + + + +

+ Throughput Test, 5Ghz: Snapshot Upload +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.7 wlan1 + + 26.04 Mbps + + 71.542 Mbps + + 0.007 + + 1300 Mbps + + 6 Mbps + + 802.11an-AC + + 36 + + 139 + + -34 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 98.315 Mbps + + 73.617 Mbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 130.716 Mbps + + 0 bps + + 0 + + 4 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 0 bps + + 130.752 Mbps + + 4 + + 4 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, Dual: Snapshot Upload +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 45.739 Mbps + + 11.429 Mbps + + 0.049 + + 216.7 Mbps + + 11 Mbps + + 802.11bgn + + 6 + + 38 + + -14 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+ 1.1.7 wlan1 + + 42.512 Mbps + + 55.851 Mbps + + 0.489 + + 1170 Mbps + + 975 Mbps + + 802.11an-AC + + 36 + + 139 + + -37 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 77.106 Mbps + + 95.924 Mbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 92.406 Mbps + + 0 bps + + 0 + + 5 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 0 bps + + 92.122 Mbps + + 5 + + 5 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 88.423 Mbps + + 0 bps + + 0 + + 2 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 0 bps + + 88.239 Mbps + + 2 + + 2 + + 0 + + 0 +
+ + +
+

Realtime Throughput for: Multi Band Performance

+
+
Key Performance Indicators CSV

+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Test configuration and LANforge software version +
+ Auto-Helper + + true +
+ Skip 2.4Ghz Tests + + false +
+ Skip 5Ghz Tests + + false +
+ Skip 5Gzh-B Tests + + true +
+ Skip Dual-Band Tests + + false +
+ Skip Tri-Band Tests + + true +
+ Use BSSID + + true +
+ Set Radio TxPower to Default + + false +
+ Loop Iterations: + + 1 +
+ 2.4Ghz Station Count: + + 1 +
+ 5Ghz Station Count: + + 1 +
+ Dual-Band Station Count: + + 2 +
+ 5Ghz-B Station Count: + + 64 +
+ Tri-Band Station Count: + + 64 +
+ Duration-20 + + 20 +
+ Hunt Retries: + + 1 +
+ Maximum Hunt Iterations: + + 100 +
+ Multi-Conn + + 1 +
+ ToS + + 0 +
+ Upstream Port + + 1.1.1 eth1 Firmware: 0. 6-5 Resource: lf0350-ac54 +
+ Stability Duration: + + 1 h +
+ Concurrent Ports to Reset: + + 1 +
+ Minimum Time between Resets: + + 10000 +
+ Maximum Time between Resets: + + 60000 +
+ Long-Term Station Count: + + 2 +
+ VOIP Call Count: + + 20 +
+ Percent: + + 1000000 +
+ Open: + + 25 +
+ PSK: + + 60 +
+ Enterprise: + + 120 +
+ Stability stall threshold UDP Upload: + + 100000 +
+ Stability stall threshold UDP Download: + + 100000 +
+ Stability stall threshold TCP Upload: + + 100000 +
+ Stability stall threshold TCP Download: + + 100000 +
+ Stability stall threshold Video: + + 100000 +
+ Stability stall threshold VOIP: + + 20000 +
+ Stability Multicast Min Download Rate: + + 100000 +
+ Stability Multicast Max Download Rate: + + 0 +
+ Stability UDP Min Download Rate: + + 500000 +
+ Stability UDP Max Download Rate: + + 0 +
+ Stability UDP Min Upload Rate: + + 500000 +
+ Stability UDP Max Upload Rate: + + 0 +
+ Stability TCP Min Download Rate: + + 500000 +
+ Stability TCP Max Download Rate: + + 0 +
+ Stability TCP Min Upload Rate: + + 500000 +
+ Stability TCP Max Upload Rate: + + 0 +
+ Long-Term Duration: + + 1 h +
+ Long-Term Graph Interval: + + 30 +
+ Long-Term Download Rate: + + 85% +
+ Video Emulation Rate: + + 700000 +
+ Video Buffer Size: + + 1000000 +
+ Long-Term Upload Rate: + + 85% +
+ Use Packet Sizes + + false +
+ Reset Radios + + false +
+ Use Packet Sizes + + false +
+ Always expect 5g + + false +
+ Spatial Streams + + AUTO +
+ Bandwidth + + AUTO +
+ Modes + + Auto +
+ WiFi Radio 0 + + 1.1.3 wiphy0 Firmware: 10.1-ct-8x-__xtH-022-bcdb24ff Resource: + lf0350-ac54 +
+ WiFi Radio 0 + + 1.1.4 wiphy1 Firmware: 10.1-ct-8x-__xtH-022-bcdb24ff Resource: + lf0350-ac54 +
+ Pass-Fail Tput Criteria + +

+        
+ Show Events + + true +
+ Build Date + + Thu 27 May 2021 10:50:15 AM PDT +
+ Build Version + + 5.4.3 +
+ Git Version + + bebd8463e2b802536d03219096d308128366dcf3 +
+ + +
+
CSV Data
+
+
Generated by Candela Technologies LANforge network testing tool.
+ www.candelatech.com +
+ +

+ + diff --git a/reports/ap-auto-2021-06-24-06-07-50/index.html b/reports/ap-auto-2021-06-24-06-07-50/index.html new file mode 100644 index 000000000..99ce7b85a --- /dev/null +++ b/reports/ap-auto-2021-06-24-06-07-50/index.html @@ -0,0 +1,2398 @@ + + + + + + AP-Auto + + + + + +
+ +
+

AP-Auto


AP Automated Test Plan

+






Thu Jun 24 06:07:50 PDT 2021

+ +
+
+PDF Report
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
+ Test Setup Information +
+ Device Under Test + + ext-03-03 ssid_wpa2p_5g ext-03-03 ssid_wpa2p_2g +
+ Estimated Run Time + + 4 m +
+ Actual Run Time + + 3.716 m +
+ + +
+ + + + + +

+ Objective +

+

+ The AP-Auto WiFi Performance test plan automates testing of one or more + APs with flexibility to select which tests are to be run. +

+ + +
+ + + + + +

+ Summary Results +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Test + + Result + + Candela
Score +
+ Elapsed + + Info +
+ Basic Client Connectivity + + Skipped + + 0 + + 0 + + +
+ Throughput vs Pkt Size + + Skipped + + 0 + + 0 + + +
+ Multi Band Performance + + 2.4Ghz + PASS
5Ghz + PASS
Dual-Band + FAIL
+
+ 80 + + 3.1 m + + Dual-Concurrent vs 90% of Sum: 169.01 Mbps / 192.08 Mbps
Dual-Concurrent + vs 90% of Sum: 179.92 Mbps / 246.55 Mbps +
+ Capacity + + Skipped + + 0 + + 0 + + +
+ Stability + + Skipped + + 0 + + 0 + + +
+ Multi-Station Throughput vs Pkt Size + + Skipped + + 0 + + 0 + + +
+ Band-Steering + + Skipped + + 0 + + 0 + + +
+ Long-Term + + Skipped + + 0 + + 0 +
+ + +
+ + + + + + +
+

+ Multi Band Performance +

+
+ + +

+ Summary +

+

+ The Multi Band Performance test intends to verify that the Wi-Fi AP + throughput with multiple bands active with a single station on each + band. The configured speed will be 20% higher than the passing value for + MTU sized frames in the throughpu test. If the throughput test was + skipped, then fixed values will be used. +

+

+ A test is considered passed if the multi-band concurrent throughput is + at least 90% of the sum of the individual single-band throughput tests. + The score is the percentage of the throughput vs that 90% cut-off. +

+ + +
+ +

Throughput for different bands. +
+
CSV Data for Throughput for different bands
+Throughput for different bands
+ + + + + +

+ Multi Band Performance Results +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Type + + Result + + Notes +
+ 2.4Ghz Download + + PASS + + 45.93 Mbps PER: 37.48 +
+ 5Ghz Download + + PASS + + 167.49 Mbps PER: 0 +
+ Dual Download + + FAIL + + 169.01 Mbps PER: 30.53
Dual-Concurrent vs 90% of Sum: 169.01 Mbps + / 192.08 Mbps +
+ 2.4Ghz Upload + + PASS + + 145.23 Mbps PER: 0 +
+ 5Ghz Upload + + PASS + + 128.71 Mbps PER: 0 +
+ Dual Upload + + FAIL + + 179.92 Mbps PER: 0
Dual-Concurrent vs 90% of Sum: 179.92 Mbps / + 246.55 Mbps +
+ + +
+ + + + + +

+ Throughput Test, 2.4Ghz: Snapshot Download +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 376 bps + + 17.439 Mbps + + 7.143 + + 26 Mbps + + 65 Mbps + + 802.11bgn + + 6 + + 38 + + -11 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 39.822 Mbps + + 901 bps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 0 bps + + 45.406 Mbps + + 448 + + 448 + + 0 + + 81.153 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 185 Mbps + + 0 bps + + 0 + + 448 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, 5Ghz: Snapshot Download +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.7 wlan1 + + 223 bps + + 36.762 Mbps + + 0 + + 87.8 Mbps + + 1.17 Gbps + + 802.11an-AC + + 36 + + 139 + + -43 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 120.007 Mbps + + 127.612 Kbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 0 bps + + 169.241 Mbps + + 4 + + 4 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 169.784 Mbps + + 0 bps + + 0 + + 4 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, Dual: Snapshot Download +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 91.479 Kbps + + 22.955 Mbps + + 0.153 + + 216.7 Mbps + + 65 Mbps + + 802.11bgn + + 6 + + 38 + + -15 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+ 1.1.7 wlan1 + + 2.323 Kbps + + 68.523 Mbps + + 13.889 + + 234 Mbps + + 1.17 Gbps + + 802.11an-AC + + 36 + + 139 + + -45 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 152.302 Mbps + + 96.937 Kbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 0 bps + + 45.503 Mbps + + 714 + + 714 + + 0 + + 55.504 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 124.067 Mbps + + 0 bps + + 0 + + 714 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 0 bps + + 121.88 Mbps + + 62 + + 62 + + 0 + + 0.965 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 124.866 Mbps + + 0 bps + + 0 + + 62 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, 2.4Ghz: Snapshot Upload +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 42.026 Mbps + + 19.72 Mbps + + 0.055 + + 216.7 Mbps + + 11 Mbps + + 802.11bgn + + 6 + + 38 + + -10 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 133.488 Mbps + + 53.078 Mbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 145.706 Mbps + + 0 bps + + 0 + + 3 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 0 bps + + 143.022 Mbps + + 3 + + 3 + + 0 + + 0.86 +
+ + +
+ + + + + +

+ Throughput Test, 5Ghz: Snapshot Upload +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.7 wlan1 + + 26.04 Mbps + + 71.542 Mbps + + 0.007 + + 1300 Mbps + + 6 Mbps + + 802.11an-AC + + 36 + + 139 + + -34 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 98.315 Mbps + + 73.617 Mbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 130.716 Mbps + + 0 bps + + 0 + + 4 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 0 bps + + 130.752 Mbps + + 4 + + 4 + + 0 + + 0 +
+ + +
+ + + + + +

+ Throughput Test, Dual: Snapshot Upload +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + RxBps 1m + + Tx-Fail % + + Tx-Link-Rate + + Rx-Link-Rate + + Mode + + Channel + + Last CX-Time(ms) + + RSSI
(dBm) +
+ AP + + IP + + MAC +
+ 1.1.5 wlan0 + + 45.739 Mbps + + 11.429 Mbps + + 0.049 + + 216.7 Mbps + + 11 Mbps + + 802.11bgn + + 6 + + 38 + + -14 + + 90:3C:B3:94:48:18 + + 172.16.225.168 + + 04:f0:21:94:dc:4d +
+ 1.1.7 wlan1 + + 42.512 Mbps + + 55.851 Mbps + + 0.489 + + 1170 Mbps + + 975 Mbps + + 802.11an-AC + + 36 + + 139 + + -37 + + 90:3C:B3:94:48:19 + + 172.16.225.169 + + 04:f0:21:94:d8:6f +
+
+ + + + + + + + + + + + + + + + + + + +
+ Port + + Tx-Bps 1m + + Rx-Bps 1m + + Link-Rate + + IP + + MAC +
+ 1.1.1 eth1 + + 77.106 Mbps + + 95.924 Mbps + + 1 Gbps + + 172.16.0.1 + + 00:0d:b9:58:ac:55 +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Endpoint + + Tx-Bps 1m + + Rx-Bps 1m + + RX Latency(ms) + + Round-Trip Latency(ms) + + Jitter + + Rx Packet Loss % +
+ cv_udp-1.1-1.wlan0--1.0.0-A + + 92.406 Mbps + + 0 bps + + 0 + + 5 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan0--1.0.0-B + + 0 bps + + 92.122 Mbps + + 5 + + 5 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-A + + 88.423 Mbps + + 0 bps + + 0 + + 2 + + 0 + + 0 +
+ cv_udp-1.1-1.wlan1--1.0.0-B + + 0 bps + + 88.239 Mbps + + 2 + + 2 + + 0 + + 0 +
+ + +
+

Realtime Throughput for: Multi Band Performance

+
+
Key Performance Indicators CSV

+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Test configuration and LANforge software version +
+ Auto-Helper + + true +
+ Skip 2.4Ghz Tests + + false +
+ Skip 5Ghz Tests + + false +
+ Skip 5Gzh-B Tests + + true +
+ Skip Dual-Band Tests + + false +
+ Skip Tri-Band Tests + + true +
+ Use BSSID + + true +
+ Set Radio TxPower to Default + + false +
+ Loop Iterations: + + 1 +
+ 2.4Ghz Station Count: + + 1 +
+ 5Ghz Station Count: + + 1 +
+ Dual-Band Station Count: + + 2 +
+ 5Ghz-B Station Count: + + 64 +
+ Tri-Band Station Count: + + 64 +
+ Duration-20 + + 20 +
+ Hunt Retries: + + 1 +
+ Maximum Hunt Iterations: + + 100 +
+ Multi-Conn + + 1 +
+ ToS + + 0 +
+ Upstream Port + + 1.1.1 eth1 Firmware: 0. 6-5 Resource: lf0350-ac54 +
+ Stability Duration: + + 1 h +
+ Concurrent Ports to Reset: + + 1 +
+ Minimum Time between Resets: + + 10000 +
+ Maximum Time between Resets: + + 60000 +
+ Long-Term Station Count: + + 2 +
+ VOIP Call Count: + + 20 +
+ Percent: + + 1000000 +
+ Open: + + 25 +
+ PSK: + + 60 +
+ Enterprise: + + 120 +
+ Stability stall threshold UDP Upload: + + 100000 +
+ Stability stall threshold UDP Download: + + 100000 +
+ Stability stall threshold TCP Upload: + + 100000 +
+ Stability stall threshold TCP Download: + + 100000 +
+ Stability stall threshold Video: + + 100000 +
+ Stability stall threshold VOIP: + + 20000 +
+ Stability Multicast Min Download Rate: + + 100000 +
+ Stability Multicast Max Download Rate: + + 0 +
+ Stability UDP Min Download Rate: + + 500000 +
+ Stability UDP Max Download Rate: + + 0 +
+ Stability UDP Min Upload Rate: + + 500000 +
+ Stability UDP Max Upload Rate: + + 0 +
+ Stability TCP Min Download Rate: + + 500000 +
+ Stability TCP Max Download Rate: + + 0 +
+ Stability TCP Min Upload Rate: + + 500000 +
+ Stability TCP Max Upload Rate: + + 0 +
+ Long-Term Duration: + + 1 h +
+ Long-Term Graph Interval: + + 30 +
+ Long-Term Download Rate: + + 85% +
+ Video Emulation Rate: + + 700000 +
+ Video Buffer Size: + + 1000000 +
+ Long-Term Upload Rate: + + 85% +
+ Use Packet Sizes + + false +
+ Reset Radios + + false +
+ Use Packet Sizes + + false +
+ Always expect 5g + + false +
+ Spatial Streams + + AUTO +
+ Bandwidth + + AUTO +
+ Modes + + Auto +
+ WiFi Radio 0 + + 1.1.3 wiphy0 Firmware: 10.1-ct-8x-__xtH-022-bcdb24ff Resource: + lf0350-ac54 +
+ WiFi Radio 0 + + 1.1.4 wiphy1 Firmware: 10.1-ct-8x-__xtH-022-bcdb24ff Resource: + lf0350-ac54 +
+ Pass-Fail Tput Criteria + +

+        
+ Show Events + + true +
+ Build Date + + Thu 27 May 2021 10:50:15 AM PDT +
+ Build Version + + 5.4.3 +
+ Git Version + + bebd8463e2b802536d03219096d308128366dcf3 +
+ + +
+
CSV Data
+
+
Generated by Candela Technologies LANforge network testing tool.
+ www.candelatech.com +
+ +

+ + diff --git a/reports/ap-auto-2021-06-24-06-07-50/kpi-chart-0-print.png b/reports/ap-auto-2021-06-24-06-07-50/kpi-chart-0-print.png new file mode 100644 index 000000000..1d7b892b4 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/kpi-chart-0-print.png differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/kpi-chart-0.png b/reports/ap-auto-2021-06-24-06-07-50/kpi-chart-0.png new file mode 100644 index 000000000..69620169b Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/kpi-chart-0.png differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/kpi.csv b/reports/ap-auto-2021-06-24-06-07-50/kpi.csv new file mode 100644 index 000000000..5dd767fe3 --- /dev/null +++ b/reports/ap-auto-2021-06-24-06-07-50/kpi.csv @@ -0,0 +1,2 @@ +Date test-rig dut-hw-version dut-sw-version dut-model-num dut-serial-num test-priority test-id short-description pass/fail numeric-score test details Units Graph-Group Subtest-Pass Subtest-Fail +1624540068480 ecw5410 ecw5410-2021-06-16-pending-e8418c0.tar. ecw5410 903cb3944817 100 AP Auto Multi Band Performance Score FAIL 80.48127866945252 Dual-Concurrent vs 90% of Sum: 169.01 Mbps / 192.08 Mbps Dual-Concurrent vs 90% of Sum: 179.92 Mbps / 246.55 Mbps Score Score 0 2 diff --git a/reports/ap-auto-2021-06-24-06-07-50/logo.png b/reports/ap-auto-2021-06-24-06-07-50/logo.png new file mode 100644 index 000000000..23cca07d9 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/logo.png differ diff --git a/reports/ap-auto-2021-06-24-06-07-50/report.css b/reports/ap-auto-2021-06-24-06-07-50/report.css new file mode 100644 index 000000000..9b2925190 --- /dev/null +++ b/reports/ap-auto-2021-06-24-06-07-50/report.css @@ -0,0 +1,256 @@ +html, body,div { + margin: 0; + padding:0; + font-size: 14px; +} +h1,h2,h3,h4 { + padding: 0em; + line-height: 1.5; + text-align: left; + color: rgb(42,91,41); +} +@font-face { + font-family: CenturyGothic; + src: url("CenturyGothic.woff"), + url("images/CenturyGothic.woff"), + url("/images/CenturyGothic.woff"), + url("http://www.candelatech.com/images/CenturyGothic.woff"); +} +body,h1,h2,h3,h4 { + font-family: CenturyGothic, "Century Gothic", Arial, Helvetica, sans-serif; +} +h1 { font-size: 30px;} +h2 { font-size: 24px;} +h3 { font-size: 18px;} +h4 { font-size: 14px;} +li,pre,tt { + text-align: left; +} +pre { + font-size: 10px; +} +table { + border-collapse: collapse; + background: #e0e0e0; +} +table, td, th { + border: 1px solid gray; + padding 4px; +} +table.noborder, table.noborder td, table.noborder th { + border: 0 none; +} +td { + background: white; +} +td.ar { + text-align: right; +} +th { + color: rgb(42,91,41); + text-align: center; +} +#lf_title { + text-align: center; + background-image: url(candela_swirl_small-72h.png); + background-position: right; + background-repeat: no-repeat; + height: 90px; +} +#new_chart { + display: block; + height: 250px; + min-width: 200px; + width: 80%; + border: 1px solid black; + margin: 14px auto; + padding: 14px; + vertical-align: bottom; + text-align: center; +} +.lf_chart { + margin: 1em; + padding: 5px; +} +#error_types ul { + background: #f0f0f0; + font-size: 12px; + line-height: 1.5; + margin: 1em; + padding: 0.25em inherit 0.25em inherit; + max-height: 8em; + overflow: auto; +} +li { + line-height: 1.5; +} +.contentDiv { + margin: 1em 0.25in; +} +.ct-point { + stroke-width: 6px;} + +.o_el { + display: inline-block; + width: 100px; + height: 230px; + border: none; + margin: 1px 1px 16px 1px; + padding: 10px 10px 0 10px; + background: #eee; + text-align: center; + vertical-align: bottom; +} +.bar_el { + display: block; + background: green; + border: none; + min-height: 1px; + + margin: 0 0 5px 0; + padding: 0; + text-align: center; +} +.label_el { + color: black; + display: block; + font-size: 14px; + font-family: Arial,Helvetica,sans-serif,mono; + margin: 1px; + text-align: center; + vertical-align: bottom; + width: inherit; +} +.value_el { + font-family: Arial,Helvetica,sans-serif,mono; + color: black; + display: block; + font-size: 14px; + margin: 0 auto; + padding: none; + border: none; + background: white; + text-align: center; + vertical-align: bottom; + width: auto; +} +.value_el>span { + background: #f0f0f0a0; + border: 1px solid #f0f0f0a0; + border-radius: 5px; + padding: 1px; + min-width: 2em; +} +.error { + color: red; +} + +@media only screen { +.hideFromPrint { } +.hideFromScreen { display:none; } +} +@media only print { +.hideFromScreen { } +.hideFromPrint { display:none; } +} + +/* these styles will get overridden by custom.css */ +.TitleFontScreen { + margin-left:auto; + margin-right:auto; + margin-top: 0; + margin-bottom: 0; + font-size: 50px; + padding-top: 1em; +} + +.TitleFontPrint { + line-height: 1; + margin-left:0px; + margin-right:auto; + margin-top: 0; + margin-bottom: 0; + font-size: 50px; + padding-top: 20px; + padding-left: 20px; +} + +.TitleFontPrintSub { + line-height: 1; + margin-left:0px; + margin-right:auto; + margin-top: 0; + margin-bottom: 0; + /*font-size: 20px; Let 'h3', etc control this */ + padding-top: 0px; + padding-left: 20px; +} + +.HeaderFont {} +.TableFont {} +.TableBorder {} +.ImgStyle {} +div.Section h1, div.Section h2 { + margin: 0 0 0 0em; +} +div.HeaderStyle h1, div.HeaderStyle h2 { + text-align: left; + margin: 0 0 0 0; +} +div.Section { + padding 5px; + position: relative; +} +div.Section img { + margin: 0; + padding: 0; + position: relative; + top: 50%; + transform: translateY(-50%); +} +div.FooterStyle { + width: 100%; + vertical-align: middle; + border: 0 none; + border-top: 2px solid #2A5B29; + color: #2A5B29; + font-size: 12px; + margin-top: 2em; +} +div.FooterStyle img { + width: auto; + height: auto; + text-align: right; +} +div.FooterStyle span.Gradient { + background: white; + color: #2A5B29; + display: inline-block; + height: 30px; + line-height: 1; + padding-top: 22px; + padding-bottom: 20px; + padding-left: 2em; + vertical-align: middle; + max-width:80%; + float:left; + width:50%; +} +.FooterStyle a, .FooterStyle a:visited { + color: #2A5B29; + font-size: 12px; + line-height: 1; + height: 30px; + margin: 0; + padding: 0; + vertical-align: middle; +} +div.FooterStyle a.LogoImgLink { + display: inline-block; + text-align: right; + float: right; +} +a .LogoImgLink { +} +a.LogoImgLink img { +} diff --git a/reports/ap-auto-2021-06-24-06-07-50/report_banner-1000x205.jpg b/reports/ap-auto-2021-06-24-06-07-50/report_banner-1000x205.jpg new file mode 100644 index 000000000..e9e080ab8 Binary files /dev/null and b/reports/ap-auto-2021-06-24-06-07-50/report_banner-1000x205.jpg differ diff --git a/reports/dataplane-2021-06-13-11-19-31/CandelaLogo2-90dpi-200x90-trans.png b/reports/dataplane-2021-06-13-11-19-31/CandelaLogo2-90dpi-200x90-trans.png new file mode 100644 index 000000000..23cca07d9 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/CandelaLogo2-90dpi-200x90-trans.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/CenturyGothic.woff b/reports/dataplane-2021-06-13-11-19-31/CenturyGothic.woff new file mode 100644 index 000000000..877ec4a27 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/CenturyGothic.woff differ diff --git a/reports/dataplane-2021-06-13-11-19-31/candela_swirl_small-72h.png b/reports/dataplane-2021-06-13-11-19-31/candela_swirl_small-72h.png new file mode 100644 index 000000000..e288f8c96 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/candela_swirl_small-72h.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/canvil.ico b/reports/dataplane-2021-06-13-11-19-31/canvil.ico new file mode 100644 index 000000000..5f27eb942 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/canvil.ico differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-1-print.png b/reports/dataplane-2021-06-13-11-19-31/chart-1-print.png new file mode 100644 index 000000000..d64d902b5 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-1-print.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-1.png b/reports/dataplane-2021-06-13-11-19-31/chart-1.png new file mode 100644 index 000000000..794a3db12 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-1.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-2-print.png b/reports/dataplane-2021-06-13-11-19-31/chart-2-print.png new file mode 100644 index 000000000..a54b5f468 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-2-print.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-2.png b/reports/dataplane-2021-06-13-11-19-31/chart-2.png new file mode 100644 index 000000000..19c7c4702 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-2.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-3-print.png b/reports/dataplane-2021-06-13-11-19-31/chart-3-print.png new file mode 100644 index 000000000..0bd022d60 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-3-print.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-3.png b/reports/dataplane-2021-06-13-11-19-31/chart-3.png new file mode 100644 index 000000000..03824afca Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-3.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-4-print.png b/reports/dataplane-2021-06-13-11-19-31/chart-4-print.png new file mode 100644 index 000000000..920f354c7 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-4-print.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-4.png b/reports/dataplane-2021-06-13-11-19-31/chart-4.png new file mode 100644 index 000000000..005ba8452 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-4.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-5-print.png b/reports/dataplane-2021-06-13-11-19-31/chart-5-print.png new file mode 100644 index 000000000..d174c9c32 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-5-print.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-5.png b/reports/dataplane-2021-06-13-11-19-31/chart-5.png new file mode 100644 index 000000000..261393ec9 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-5.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-6-print.png b/reports/dataplane-2021-06-13-11-19-31/chart-6-print.png new file mode 100644 index 000000000..2b8297233 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-6-print.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/chart-6.png b/reports/dataplane-2021-06-13-11-19-31/chart-6.png new file mode 100644 index 000000000..69815ff5a Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/chart-6.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Endpoint_RX_Packet_Loss_Percentage-1.csv b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Endpoint_RX_Packet_Loss_Percentage-1.csv new file mode 100644 index 000000000..21f7f9f76 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Endpoint_RX_Packet_Loss_Percentage-1.csv @@ -0,0 +1,48 @@ +"Endpoint RX Packet Loss Percentage", +Date,"cv_udp-1.1-1.wlan000--1.0.0-A/Packet Loss Percent",Date,"cv_udp-1.1-1.wlan000--1.0.0-B/Packet Loss Percent",Date,"cv_tcp-1.1-1.wlan000--1.0.0-A/Packet Loss Percent",Date,"cv_tcp-1.1-1.wlan000--1.0.0-B/Packet Loss Percent", +NA,NA,NA,NA,"2021-06-14T06:18:29.353 UTC",0,"2021-06-14T06:18:29.353 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:31.119 UTC",0,"2021-06-14T06:18:31.119 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:32.314 UTC",0,"2021-06-14T06:18:32.314 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:33.423 UTC",0,"2021-06-14T06:18:33.423 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:34.558 UTC",0,"2021-06-14T06:18:34.558 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:36.329 UTC",0,"2021-06-14T06:18:36.329 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:37.527 UTC",0,"2021-06-14T06:18:37.527 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:38.612 UTC",0,"2021-06-14T06:18:38.612 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:39.718 UTC",0,"2021-06-14T06:18:39.718 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:40.833 UTC",0,"2021-06-14T06:18:40.833 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:41.941 UTC",0,"2021-06-14T06:18:41.941 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:43.908 UTC",0,"2021-06-14T06:18:43.908 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:45.097 UTC",0,"2021-06-14T06:18:45.097 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:46.300 UTC",0,"2021-06-14T06:18:46.300 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:47.459 UTC",0,"2021-06-14T06:18:47.459 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:49.925 UTC",0,"2021-06-14T06:18:49.925 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:51.046 UTC",0,"2021-06-14T06:18:51.046 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:52.185 UTC",0,"2021-06-14T06:18:52.185 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:54.069 UTC",0,"2021-06-14T06:18:54.069 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:55.565 UTC",0,"2021-06-14T06:18:55.565 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:56.700 UTC",0,"2021-06-14T06:18:56.700 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:57.858 UTC",0,"2021-06-14T06:18:57.858 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:59.822 UTC",0,"2021-06-14T06:18:59.822 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:01.008 UTC",0,"2021-06-14T06:19:01.008 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:02.203 UTC",0,"2021-06-14T06:19:02.203 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:03.375 UTC",0,"2021-06-14T06:19:03.375 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:05.214 UTC",0,"2021-06-14T06:19:05.214 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:06.582 UTC",0,"2021-06-14T06:19:06.582 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:07.740 UTC",0,"2021-06-14T06:19:07.740 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:08.908 UTC",0,"2021-06-14T06:19:08.908 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:10.553 UTC",0,"2021-06-14T06:19:10.553 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:11.905 UTC",0,"2021-06-14T06:19:11.905 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:13.039 UTC",0,"2021-06-14T06:19:13.039 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:14.170 UTC",0,"2021-06-14T06:19:14.170 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:15.985 UTC",0,"2021-06-14T06:19:15.985 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:17.198 UTC",0,"2021-06-14T06:19:17.198 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:18.389 UTC",0,"2021-06-14T06:19:18.389 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:19.535 UTC",0,"2021-06-14T06:19:19.535 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:21.236 UTC",0,"2021-06-14T06:19:21.236 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:22.461 UTC",0,"2021-06-14T06:19:22.461 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:23.611 UTC",0,"2021-06-14T06:19:23.611 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:24.730 UTC",0,"2021-06-14T06:19:24.730 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:26.535 UTC",0,"2021-06-14T06:19:26.535 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:27.696 UTC",0,"2021-06-14T06:19:27.696 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:28.941 UTC",0,"2021-06-14T06:19:28.941 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:30.055 UTC",0,"2021-06-14T06:19:30.055 UTC",0, diff --git a/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Latency_vs_Loops-1.csv b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Latency_vs_Loops-1.csv new file mode 100644 index 000000000..1679b8906 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Latency_vs_Loops-1.csv @@ -0,0 +1,3 @@ +"Latency vs Loops", +"loop-1", +12902 diff --git a/reports/dataplane-2021-06-13-11-19-31/csv-data/data-RX_Pps_vs_Loops-1.csv b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-RX_Pps_vs_Loops-1.csv new file mode 100644 index 000000000..f6a89daa4 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-RX_Pps_vs_Loops-1.csv @@ -0,0 +1,3 @@ +"RX Pps vs Loops", +"loop-1", +9.54248 diff --git a/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Realtime_Throughput-1.csv b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Realtime_Throughput-1.csv new file mode 100644 index 000000000..3c34f9e3e --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Realtime_Throughput-1.csv @@ -0,0 +1,59 @@ +"Realtime Throughput", +Date,"Total Upload/RX (Mbps)",Date,"Total Download/RX (Mbps)",Date,"UL + DL Sum/RX (Mbps)", +"2021-06-14T06:18:14.491 UTC",0,"2021-06-14T06:18:14.491 UTC",0,"2021-06-14T06:18:14.491 UTC",0, +"2021-06-14T06:18:15.696 UTC",0,"2021-06-14T06:18:15.696 UTC",0,"2021-06-14T06:18:15.696 UTC",0, +"2021-06-14T06:18:16.929 UTC",0,"2021-06-14T06:18:16.929 UTC",0,"2021-06-14T06:18:16.929 UTC",0, +"2021-06-14T06:18:18.013 UTC",0,"2021-06-14T06:18:18.013 UTC",0,"2021-06-14T06:18:18.013 UTC",0, +"2021-06-14T06:18:19.762 UTC",0,"2021-06-14T06:18:19.762 UTC",0,"2021-06-14T06:18:19.762 UTC",0, +"2021-06-14T06:18:20.906 UTC",0,"2021-06-14T06:18:20.906 UTC",0,"2021-06-14T06:18:20.906 UTC",0, +"2021-06-14T06:18:22.048 UTC",0,"2021-06-14T06:18:22.048 UTC",0,"2021-06-14T06:18:22.048 UTC",0, +"2021-06-14T06:18:23.187 UTC",0,"2021-06-14T06:18:23.187 UTC",0,"2021-06-14T06:18:23.187 UTC",0, +"2021-06-14T06:18:25.015 UTC",0,"2021-06-14T06:18:25.015 UTC",0,"2021-06-14T06:18:25.015 UTC",0, +"2021-06-14T06:18:26.182 UTC",0,"2021-06-14T06:18:26.182 UTC",0,"2021-06-14T06:18:26.182 UTC",0, +"2021-06-14T06:18:28.153 UTC",0,"2021-06-14T06:18:28.153 UTC",0,"2021-06-14T06:18:28.153 UTC",0, +"2021-06-14T06:18:29.442 UTC",1.75003,"2021-06-14T06:18:29.442 UTC",0,"2021-06-14T06:18:29.442 UTC",1.75003, +"2021-06-14T06:18:31.174 UTC",1.75003,"2021-06-14T06:18:31.174 UTC",1.80106,"2021-06-14T06:18:31.174 UTC",3.55109, +"2021-06-14T06:18:32.316 UTC",2.87806,"2021-06-14T06:18:32.316 UTC",5.20833,"2021-06-14T06:18:32.316 UTC",8.08638, +"2021-06-14T06:18:33.426 UTC",3.2864,"2021-06-14T06:18:33.426 UTC",3.45554,"2021-06-14T06:18:33.426 UTC",6.74194, +"2021-06-14T06:18:34.560 UTC",4.04095,"2021-06-14T06:18:34.560 UTC",1.26318,"2021-06-14T06:18:34.560 UTC",5.30413, +"2021-06-14T06:18:36.404 UTC",4.73456,"2021-06-14T06:18:36.404 UTC",0.31271,"2021-06-14T06:18:36.404 UTC",5.04727, +"2021-06-14T06:18:37.534 UTC",3.89843,"2021-06-14T06:18:37.534 UTC",4.1251,"2021-06-14T06:18:37.534 UTC",8.02353, +"2021-06-14T06:18:38.614 UTC",4.17425,"2021-06-14T06:18:38.614 UTC",7.22493,"2021-06-14T06:18:38.614 UTC",11.39918, +"2021-06-14T06:18:39.720 UTC",4.03886,"2021-06-14T06:18:39.720 UTC",4.27919,"2021-06-14T06:18:39.720 UTC",8.31805, +"2021-06-14T06:18:40.835 UTC",4.41466,"2021-06-14T06:18:40.835 UTC",4.67455,"2021-06-14T06:18:40.835 UTC",9.0892, +"2021-06-14T06:18:41.944 UTC",3.85986,"2021-06-14T06:18:41.944 UTC",1.21643,"2021-06-14T06:18:41.944 UTC",5.07629, +"2021-06-14T06:18:43.911 UTC",6.43784,"2021-06-14T06:18:43.911 UTC",0.68502,"2021-06-14T06:18:43.911 UTC",7.12286, +"2021-06-14T06:18:45.104 UTC",10.06896,"2021-06-14T06:18:45.104 UTC",2.25064,"2021-06-14T06:18:45.104 UTC",12.3196, +"2021-06-14T06:18:46.305 UTC",19.0978,"2021-06-14T06:18:46.305 UTC",4.0045,"2021-06-14T06:18:46.305 UTC",23.1023, +"2021-06-14T06:18:48.754 UTC",36.90406,"2021-06-14T06:18:48.754 UTC",4.86103,"2021-06-14T06:18:48.754 UTC",41.76509, +"2021-06-14T06:18:49.929 UTC",53.73509,"2021-06-14T06:18:49.929 UTC",5.78265,"2021-06-14T06:18:49.929 UTC",59.51774, +"2021-06-14T06:18:51.049 UTC",66.41366,"2021-06-14T06:18:51.049 UTC",7.63314,"2021-06-14T06:18:51.049 UTC",74.0468, +"2021-06-14T06:18:52.194 UTC",84.9243,"2021-06-14T06:18:52.194 UTC",9.92113,"2021-06-14T06:18:52.194 UTC",94.84543, +"2021-06-14T06:18:54.399 UTC",96.77401,"2021-06-14T06:18:54.399 UTC",9.92113,"2021-06-14T06:18:54.399 UTC",106.69514, +"2021-06-14T06:18:55.568 UTC",94.12947,"2021-06-14T06:18:55.568 UTC",7.71467,"2021-06-14T06:18:55.568 UTC",101.84414, +"2021-06-14T06:18:56.709 UTC",96.54569,"2021-06-14T06:18:56.709 UTC",8.34182,"2021-06-14T06:18:56.709 UTC",104.8875, +"2021-06-14T06:18:57.866 UTC",98.07408,"2021-06-14T06:18:57.866 UTC",8.86503,"2021-06-14T06:18:57.866 UTC",106.93911, +"2021-06-14T06:18:59.826 UTC",94.74527,"2021-06-14T06:18:59.826 UTC",7.48923,"2021-06-14T06:18:59.826 UTC",102.2345, +"2021-06-14T06:19:01.015 UTC",94.41135,"2021-06-14T06:19:01.015 UTC",7.34423,"2021-06-14T06:19:01.015 UTC",101.75558, +"2021-06-14T06:19:02.206 UTC",95.25536,"2021-06-14T06:19:02.206 UTC",8.33255,"2021-06-14T06:19:02.206 UTC",103.58791, +"2021-06-14T06:19:03.387 UTC",97.57287,"2021-06-14T06:19:03.387 UTC",8.50956,"2021-06-14T06:19:03.387 UTC",106.08243, +"2021-06-14T06:19:05.376 UTC",99.95112,"2021-06-14T06:19:05.376 UTC",5.75767,"2021-06-14T06:19:05.376 UTC",105.70879, +"2021-06-14T06:19:06.590 UTC",92.26879,"2021-06-14T06:19:06.590 UTC",4.72484,"2021-06-14T06:19:06.590 UTC",96.99363, +"2021-06-14T06:19:07.743 UTC",86.53777,"2021-06-14T06:19:07.743 UTC",4.7272,"2021-06-14T06:19:07.743 UTC",91.26497, +"2021-06-14T06:19:08.978 UTC",84.74502,"2021-06-14T06:19:08.978 UTC",4.58302,"2021-06-14T06:19:08.978 UTC",89.32804, +"2021-06-14T06:19:10.756 UTC",87.24463,"2021-06-14T06:19:10.756 UTC",4.58302,"2021-06-14T06:19:10.756 UTC",91.82764, +"2021-06-14T06:19:11.916 UTC",92.16941,"2021-06-14T06:19:11.916 UTC",3.65123,"2021-06-14T06:19:11.916 UTC",95.82064, +"2021-06-14T06:19:13.041 UTC",91.02048,"2021-06-14T06:19:13.041 UTC",3.49271,"2021-06-14T06:19:13.041 UTC",94.51319, +"2021-06-14T06:19:14.173 UTC",87.2426,"2021-06-14T06:19:14.173 UTC",2.12289,"2021-06-14T06:19:14.173 UTC",89.36549, +"2021-06-14T06:19:16.022 UTC",86.80179,"2021-06-14T06:19:16.022 UTC",1.62499,"2021-06-14T06:19:16.022 UTC",88.42678, +"2021-06-14T06:19:17.204 UTC",86.8341,"2021-06-14T06:19:17.204 UTC",1.67498,"2021-06-14T06:19:17.204 UTC",88.50908, +"2021-06-14T06:19:18.409 UTC",86.3232,"2021-06-14T06:19:18.409 UTC",1.92374,"2021-06-14T06:19:18.409 UTC",88.24694, +"2021-06-14T06:19:19.624 UTC",84.41218,"2021-06-14T06:19:19.624 UTC",2.04373,"2021-06-14T06:19:19.624 UTC",86.45591, +"2021-06-14T06:19:21.316 UTC",86.27471,"2021-06-14T06:19:21.316 UTC",2.71882,"2021-06-14T06:19:21.316 UTC",88.99353, +"2021-06-14T06:19:22.478 UTC",83.51591,"2021-06-14T06:19:22.478 UTC",2.0343,"2021-06-14T06:19:22.478 UTC",85.55021, +"2021-06-14T06:19:23.613 UTC",84.26147,"2021-06-14T06:19:23.613 UTC",0.70839,"2021-06-14T06:19:23.613 UTC",84.96986, +"2021-06-14T06:19:24.737 UTC",87.03975,"2021-06-14T06:19:24.737 UTC",0.80498,"2021-06-14T06:19:24.737 UTC",87.84473, +"2021-06-14T06:19:26.585 UTC",86.71005,"2021-06-14T06:19:26.585 UTC",0.80498,"2021-06-14T06:19:26.585 UTC",87.51503, +"2021-06-14T06:19:27.763 UTC",86.6069,"2021-06-14T06:19:27.763 UTC",1.32252,"2021-06-14T06:19:27.763 UTC",87.92942, +"2021-06-14T06:19:28.944 UTC",84.86319,"2021-06-14T06:19:28.944 UTC",2.06289,"2021-06-14T06:19:28.944 UTC",86.92608, +"2021-06-14T06:19:30.067 UTC",82.69794,"2021-06-14T06:19:30.067 UTC",2.44029,"2021-06-14T06:19:30.067 UTC",85.13823, diff --git a/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Rx_Errors-1.csv b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Rx_Errors-1.csv new file mode 100644 index 000000000..fbc455ccb --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Rx_Errors-1.csv @@ -0,0 +1,48 @@ +"Rx Errors", +Date,"cv_udp-1.1-1.wlan000--1.0.0-A/Errors",Date,"cv_udp-1.1-1.wlan000--1.0.0-B/Errors",Date,"cv_tcp-1.1-1.wlan000--1.0.0-A/Errors",Date,"cv_tcp-1.1-1.wlan000--1.0.0-B/Errors", +NA,NA,NA,NA,"2021-06-14T06:18:29.353 UTC",0,"2021-06-14T06:18:29.353 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:31.119 UTC",0,"2021-06-14T06:18:31.119 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:32.314 UTC",0,"2021-06-14T06:18:32.314 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:33.423 UTC",0,"2021-06-14T06:18:33.423 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:34.558 UTC",0,"2021-06-14T06:18:34.558 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:36.329 UTC",0,"2021-06-14T06:18:36.329 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:37.527 UTC",0,"2021-06-14T06:18:37.527 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:38.612 UTC",0,"2021-06-14T06:18:38.612 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:39.718 UTC",0,"2021-06-14T06:18:39.718 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:40.833 UTC",0,"2021-06-14T06:18:40.833 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:41.941 UTC",0,"2021-06-14T06:18:41.941 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:43.908 UTC",0,"2021-06-14T06:18:43.908 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:45.097 UTC",0,"2021-06-14T06:18:45.097 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:46.300 UTC",0,"2021-06-14T06:18:46.300 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:47.459 UTC",0,"2021-06-14T06:18:47.459 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:49.925 UTC",0,"2021-06-14T06:18:49.925 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:51.046 UTC",0,"2021-06-14T06:18:51.046 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:52.185 UTC",0,"2021-06-14T06:18:52.185 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:54.069 UTC",0,"2021-06-14T06:18:54.069 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:55.565 UTC",0,"2021-06-14T06:18:55.565 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:56.700 UTC",0,"2021-06-14T06:18:56.700 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:57.858 UTC",0,"2021-06-14T06:18:57.858 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:18:59.822 UTC",0,"2021-06-14T06:18:59.822 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:01.008 UTC",0,"2021-06-14T06:19:01.008 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:02.203 UTC",0,"2021-06-14T06:19:02.203 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:03.375 UTC",0,"2021-06-14T06:19:03.375 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:05.214 UTC",0,"2021-06-14T06:19:05.214 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:06.582 UTC",0,"2021-06-14T06:19:06.582 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:07.740 UTC",0,"2021-06-14T06:19:07.740 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:08.908 UTC",0,"2021-06-14T06:19:08.908 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:10.553 UTC",0,"2021-06-14T06:19:10.553 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:11.905 UTC",0,"2021-06-14T06:19:11.905 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:13.039 UTC",0,"2021-06-14T06:19:13.039 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:14.170 UTC",0,"2021-06-14T06:19:14.170 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:15.985 UTC",0,"2021-06-14T06:19:15.985 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:17.198 UTC",0,"2021-06-14T06:19:17.198 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:18.389 UTC",0,"2021-06-14T06:19:18.389 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:19.535 UTC",0,"2021-06-14T06:19:19.535 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:21.236 UTC",0,"2021-06-14T06:19:21.236 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:22.461 UTC",0,"2021-06-14T06:19:22.461 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:23.611 UTC",0,"2021-06-14T06:19:23.611 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:24.730 UTC",0,"2021-06-14T06:19:24.730 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:26.535 UTC",0,"2021-06-14T06:19:26.535 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:27.696 UTC",0,"2021-06-14T06:19:27.696 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:28.941 UTC",0,"2021-06-14T06:19:28.941 UTC",0, +NA,NA,NA,NA,"2021-06-14T06:19:30.055 UTC",0,"2021-06-14T06:19:30.055 UTC",0, diff --git a/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Throughput_vs_Loops-1.csv b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Throughput_vs_Loops-1.csv new file mode 100644 index 000000000..2e472dd18 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/csv-data/data-Throughput_vs_Loops-1.csv @@ -0,0 +1,3 @@ +"Throughput vs Loops", +"loop-1", +71.56142 diff --git a/reports/dataplane-2021-06-13-11-19-31/custom.css b/reports/dataplane-2021-06-13-11-19-31/custom.css new file mode 100644 index 000000000..26e937507 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/custom.css @@ -0,0 +1,11 @@ +/* file reserved for customer styling of reports */ +/* rename to custom.css to take effect */ + +.TitleFont {} +.HeaderFont {} +.TableFont {} +.TableBorder {} +.ImgStyle {} +.HeaderStyle {} +.FooterStyle {} +/* eof */ diff --git a/reports/dataplane-2021-06-13-11-19-31/dataplane-report-2021-06-13-11-18-08.pdf b/reports/dataplane-2021-06-13-11-19-31/dataplane-report-2021-06-13-11-18-08.pdf new file mode 100644 index 000000000..ef25cda3d Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/dataplane-report-2021-06-13-11-18-08.pdf differ diff --git a/reports/dataplane-2021-06-13-11-19-31/index-print.html b/reports/dataplane-2021-06-13-11-19-31/index-print.html new file mode 100644 index 000000000..3ab824d66 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/index-print.html @@ -0,0 +1,495 @@ + + + + + + Dataplane Test + + + + + +
+ +
+

Dataplane Test







Sun Jun 13 23:19:35 PDT 2021

+ +
+
+ + + + + +
+ + + + + + + + + + +
+ Test Setup Information +
+ Device Under Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Name + + basic-ext-03-03 +
+ Software Version + + ecw5410-1.1.0.tar.gz + + Hardware Version + + ecw5410 +
+ Model Number + + ecw5410 + + Serial Number + + 903cb3944857 +
+ SSIDs + +
ssid_wpa2_2g 
+
+ Passwords + +
something 
+
+ BSSIDs + +
90:3c:b3:94:48:58 
+
+ Notes + + [BLANK] +
+
+ + +
+ + + + + +

+ Objective +

+

+ The Candela WiFi data plane test is designed to conduct an automatic + testing of all combinations of station types, MIMO types, Channel + Bandwidths, Traffic types, Traffic direction, Frame sizes etc… It will + run a quick throughput test at every combination of these test variables + and plot all the results in a set of charts to compare performance. The + user is allowed to define an intended load as a percentage of the max + theoretical PHY rate for every test combination. The expected behavior + is that for every test combination the achieved throughput should be at + least 70% of the theoretical max PHY rate under ideal test conditions. + This test provides a way to go through hundreds of combinations in a + fully automated fashion and very easily find patterns and problem areas + which can be further debugged using more specific testing. +

+ + +
+ +

Throughput for each different traffic type. Datasets with names ending in '-LL' will include the IP, TCP, UDP and Ethernet header bytes in their calculation. For Armageddon traffic only, low-level throughput includes the Ethernet FCS and preamble. Other datasets report 'goodput' for the protocol. +
+
CSV Data for Throughput vs Loops
+Throughput vs Loops
+Throughput as % of theoretical vs Packet Size
+ +

Pps throughput for each different traffic type. The values are estimated packets-per-second over the DUT, but some protocols such as TCP make this difficult to know for certain, so the value is extrapolated. +
+
CSV Data for RX Pps vs Loops
+RX Pps vs Loops
+ +

Latency for each different traffic type. If opposite-direction traffic is non-zero, then round-trip time will be reported. Otherwise, one-way latency will be reported. +
+
CSV Data for Latency vs Loops
+Latency vs Loops
+ +

Realtime Graph shows summary download and upload RX Goodput rate of connections created by this test. Goodput does not include Ethernet, IP, UDP/TCP header overhead. +
+
CSV Data for Realtime Throughput
+Realtime Throughput
+ + + + + +

+ Test Information +

+ + + + + + + +
+ Message +
+ Starting dataplane test with: 1 iterations. +
+ + +
+

+ + +
ChannelFrequencySecurityNSSCfg-ModeBandwidthPktTraffic-TypeDirectionAttenRotationDurationOffered-1mRx-BpsRx-Bps-1mRx-Bps-LLRx-Bps-3sPhy-RateTheoreticalThroughput%RSSITx-FailedTx-Failed%Tx-RateRx-RateRpt-ModeRpt-Mode-Brief
62437WPA23AUTO201024TCPDUT-TXNANA6075.853 Mbps69.903 Mbps71.561 Mbps75.684 Mbps83.13 Mbps1.3 GbpsNANA-50 / 1193650156 Mbps19.5 Mbps802.11bgn802.11n
+ +

Brief csv report, may be imported into third-party tools. +
+

+ + +
Step IndexPosition [Deg]Attenuation [dB]Throughput [Mbps]Beacon RSSI [dBm]Data RSSI [dBm]
0NA069.900-5
+ +

Packet Loss Percentage graph shows the percentage of lost packets as detected by the receiving endpoint due to packet gaps. If there is full packet loss, then this will not report any loss since there will be no gap to detect. +
+
CSV Data for Endpoint RX Packet Loss Percentage
+Endpoint RX Packet Loss Percentage
+ +

Error Graph shows occurances of packet errors. +
+
CSV Data for Rx Errors
+Rx Errors
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Test configuration and LANforge software version +
+ Path Loss + + 10 +
+ Requested Speed + + 85% +
+ Requested Opposite Speed + + 85% +
+ Multi-Conn + + 1 +
+ Armageddon Multi-Pkt + + 1000 +
+ ToS + + 0 +
+ Duration: + + 1 min (1 m) +
+ Settle Time: + + 1 sec (1 s) +
+ Send Buffer Size: + + OS Default +
+ Receive Buffer Size: + + OS Default +
+ Channels + + AUTO +
+ Spatial Streams + + AUTO +
+ Bandwidth + + AUTO +
+ Attenuator-1 + + 0 +
+ Attenuation-1 + + 0..+50..950 +
+ Attenuator-2 + + 0 +
+ Attenuation-2 + + 0..+50..950 +
+ Turntable Chamber + + 0 +
+ Turntable Angles + + 0..+45..359 +
+ Modes + + Auto +
+ Packet Size + + 1024 +
+ Security + + AUTO +
+ Traffic Type + + TCP +
+ Direction + + DUT Transmit +
+ Upstream Port + + 1.1.eth1 Firmware: 0. 6-5 Resource: lf0350-9540 +
+ WiFi Port + + 1.1.wlan000 Firmware: 10.1-ct-8x-__xtH-022-bcdb24ff Resource: + lf0350-9540 +
+ Outer Loop is Attenuation + + false +
+ Show Events + + true +
+ Auto Save Report + + true +
+ Build Date + + Wed 26 May 2021 11:06:38 AM PDT +
+ Build Version + + 5.4.3 +
+ Git Version + + 899b50be0d42cdc86f0a6ae44d9bd6aaab43fe0b +
+ + +
+
Key Performance Indicators CSV

+
+
Generated by Candela Technologies LANforge network testing tool.
+ www.candelatech.com +
+ +

+ + diff --git a/reports/dataplane-2021-06-13-11-19-31/index.html b/reports/dataplane-2021-06-13-11-19-31/index.html new file mode 100644 index 000000000..77997b287 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/index.html @@ -0,0 +1,500 @@ + + + + + + Dataplane Test + + + + + +
+ +
+

Dataplane Test







Sun Jun 13 23:19:31 PDT 2021

+ +
+
+PDF Report
+ + + + + +
+ + + + + + + + + + +
+ Test Setup Information +
+ Device Under Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Name + + basic-ext-03-03 +
+ Software Version + + ecw5410-1.1.0.tar.gz + + Hardware Version + + ecw5410 +
+ Model Number + + ecw5410 + + Serial Number + + 903cb3944857 +
+ SSIDs + +
ssid_wpa2_2g 
+
+ Passwords + +
something 
+
+ BSSIDs + +
90:3c:b3:94:48:58 
+
+ Notes + + [BLANK] +
+
+ + +
+ + + + + +

+ Objective +

+

+ The Candela WiFi data plane test is designed to conduct an automatic + testing of all combinations of station types, MIMO types, Channel + Bandwidths, Traffic types, Traffic direction, Frame sizes etc… It will + run a quick throughput test at every combination of these test variables + and plot all the results in a set of charts to compare performance. The + user is allowed to define an intended load as a percentage of the max + theoretical PHY rate for every test combination. The expected behavior + is that for every test combination the achieved throughput should be at + least 70% of the theoretical max PHY rate under ideal test conditions. + This test provides a way to go through hundreds of combinations in a + fully automated fashion and very easily find patterns and problem areas + which can be further debugged using more specific testing. +

+ + +
+ +

Throughput for each different traffic type. Datasets with names ending in '-LL' will include the IP, TCP, UDP and Ethernet header bytes in their calculation. For Armageddon traffic only, low-level throughput includes the Ethernet FCS and preamble. Other datasets report 'goodput' for the protocol. +
+
CSV Data for Throughput vs Loops
+Throughput vs Loops
+Throughput as % of theoretical vs Packet Size
+ +

Pps throughput for each different traffic type. The values are estimated packets-per-second over the DUT, but some protocols such as TCP make this difficult to know for certain, so the value is extrapolated. +
+
CSV Data for RX Pps vs Loops
+RX Pps vs Loops
+ +

Latency for each different traffic type. If opposite-direction traffic is non-zero, then round-trip time will be reported. Otherwise, one-way latency will be reported. +
+
CSV Data for Latency vs Loops
+Latency vs Loops
+ +

Realtime Graph shows summary download and upload RX Goodput rate of connections created by this test. Goodput does not include Ethernet, IP, UDP/TCP header overhead. +
+
CSV Data for Realtime Throughput
+Realtime Throughput
+ + + + + +

+ Test Information +

+ + + + + + + +
+ Message +
+ Starting dataplane test with: 1 iterations. +
+ + +
+

+ + +
ChannelFrequencySecurityNSSCfg-ModeBandwidthPktTraffic-TypeDirectionAttenRotationDurationOffered-1mRx-BpsRx-Bps-1mRx-Bps-LLRx-Bps-3sPhy-RateTheoreticalThroughput%RSSITx-FailedTx-Failed%Tx-RateRx-RateRpt-ModeRpt-Mode-Brief
62437WPA23AUTO201024TCPDUT-TXNANA6075.853 Mbps69.903 Mbps71.561 Mbps75.684 Mbps83.13 Mbps1.3 GbpsNANA-50 / 1193650156 Mbps19.5 Mbps802.11bgn802.11n
+
TAB Delineated Data for Table Above +
CSV Data for Table Above + +

Brief csv report, may be imported into third-party tools. +
+

+ + +
Step IndexPosition [Deg]Attenuation [dB]Throughput [Mbps]Beacon RSSI [dBm]Data RSSI [dBm]
0NA069.900-5
+
TAB Delineated Data for Table Above +
CSV Data for Table Above + +

Packet Loss Percentage graph shows the percentage of lost packets as detected by the receiving endpoint due to packet gaps. If there is full packet loss, then this will not report any loss since there will be no gap to detect. +
+
CSV Data for Endpoint RX Packet Loss Percentage
+Endpoint RX Packet Loss Percentage
+ +

Error Graph shows occurances of packet errors. +
+
CSV Data for Rx Errors
+Rx Errors
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Test configuration and LANforge software version +
+ Path Loss + + 10 +
+ Requested Speed + + 85% +
+ Requested Opposite Speed + + 85% +
+ Multi-Conn + + 1 +
+ Armageddon Multi-Pkt + + 1000 +
+ ToS + + 0 +
+ Duration: + + 1 min (1 m) +
+ Settle Time: + + 1 sec (1 s) +
+ Send Buffer Size: + + OS Default +
+ Receive Buffer Size: + + OS Default +
+ Channels + + AUTO +
+ Spatial Streams + + AUTO +
+ Bandwidth + + AUTO +
+ Attenuator-1 + + 0 +
+ Attenuation-1 + + 0..+50..950 +
+ Attenuator-2 + + 0 +
+ Attenuation-2 + + 0..+50..950 +
+ Turntable Chamber + + 0 +
+ Turntable Angles + + 0..+45..359 +
+ Modes + + Auto +
+ Packet Size + + 1024 +
+ Security + + AUTO +
+ Traffic Type + + TCP +
+ Direction + + DUT Transmit +
+ Upstream Port + + 1.1.eth1 Firmware: 0. 6-5 Resource: lf0350-9540 +
+ WiFi Port + + 1.1.wlan000 Firmware: 10.1-ct-8x-__xtH-022-bcdb24ff Resource: + lf0350-9540 +
+ Outer Loop is Attenuation + + false +
+ Show Events + + true +
+ Auto Save Report + + true +
+ Build Date + + Wed 26 May 2021 11:06:38 AM PDT +
+ Build Version + + 5.4.3 +
+ Git Version + + 899b50be0d42cdc86f0a6ae44d9bd6aaab43fe0b +
+ + +
+
Key Performance Indicators CSV

+
+
Generated by Candela Technologies LANforge network testing tool.
+ www.candelatech.com +
+ +

+ + diff --git a/reports/dataplane-2021-06-13-11-19-31/kpi-chart-0-print.png b/reports/dataplane-2021-06-13-11-19-31/kpi-chart-0-print.png new file mode 100644 index 000000000..0ca3960bf Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/kpi-chart-0-print.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/kpi-chart-0.png b/reports/dataplane-2021-06-13-11-19-31/kpi-chart-0.png new file mode 100644 index 000000000..21cb265b3 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/kpi-chart-0.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/kpi.csv b/reports/dataplane-2021-06-13-11-19-31/kpi.csv new file mode 100644 index 000000000..0efdcf862 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/kpi.csv @@ -0,0 +1,2 @@ +Date test-rig dut-hw-version dut-sw-version dut-model-num dut-serial-num test-priority test-id short-description pass/fail numeric-score test details Units Graph-Group Subtest-Pass Subtest-Fail +1623651570763 ecw5410 ecw5410-1.1.0.tar.gz ecw5410 903cb3944857 90 Dataplane TCP-DUT-TX-1024pkt-sz 69.90298 Throughput at specified settings. Mbps Throughput 0 0 diff --git a/reports/dataplane-2021-06-13-11-19-31/logo.png b/reports/dataplane-2021-06-13-11-19-31/logo.png new file mode 100644 index 000000000..23cca07d9 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/logo.png differ diff --git a/reports/dataplane-2021-06-13-11-19-31/report.css b/reports/dataplane-2021-06-13-11-19-31/report.css new file mode 100644 index 000000000..9b2925190 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/report.css @@ -0,0 +1,256 @@ +html, body,div { + margin: 0; + padding:0; + font-size: 14px; +} +h1,h2,h3,h4 { + padding: 0em; + line-height: 1.5; + text-align: left; + color: rgb(42,91,41); +} +@font-face { + font-family: CenturyGothic; + src: url("CenturyGothic.woff"), + url("images/CenturyGothic.woff"), + url("/images/CenturyGothic.woff"), + url("http://www.candelatech.com/images/CenturyGothic.woff"); +} +body,h1,h2,h3,h4 { + font-family: CenturyGothic, "Century Gothic", Arial, Helvetica, sans-serif; +} +h1 { font-size: 30px;} +h2 { font-size: 24px;} +h3 { font-size: 18px;} +h4 { font-size: 14px;} +li,pre,tt { + text-align: left; +} +pre { + font-size: 10px; +} +table { + border-collapse: collapse; + background: #e0e0e0; +} +table, td, th { + border: 1px solid gray; + padding 4px; +} +table.noborder, table.noborder td, table.noborder th { + border: 0 none; +} +td { + background: white; +} +td.ar { + text-align: right; +} +th { + color: rgb(42,91,41); + text-align: center; +} +#lf_title { + text-align: center; + background-image: url(candela_swirl_small-72h.png); + background-position: right; + background-repeat: no-repeat; + height: 90px; +} +#new_chart { + display: block; + height: 250px; + min-width: 200px; + width: 80%; + border: 1px solid black; + margin: 14px auto; + padding: 14px; + vertical-align: bottom; + text-align: center; +} +.lf_chart { + margin: 1em; + padding: 5px; +} +#error_types ul { + background: #f0f0f0; + font-size: 12px; + line-height: 1.5; + margin: 1em; + padding: 0.25em inherit 0.25em inherit; + max-height: 8em; + overflow: auto; +} +li { + line-height: 1.5; +} +.contentDiv { + margin: 1em 0.25in; +} +.ct-point { + stroke-width: 6px;} + +.o_el { + display: inline-block; + width: 100px; + height: 230px; + border: none; + margin: 1px 1px 16px 1px; + padding: 10px 10px 0 10px; + background: #eee; + text-align: center; + vertical-align: bottom; +} +.bar_el { + display: block; + background: green; + border: none; + min-height: 1px; + + margin: 0 0 5px 0; + padding: 0; + text-align: center; +} +.label_el { + color: black; + display: block; + font-size: 14px; + font-family: Arial,Helvetica,sans-serif,mono; + margin: 1px; + text-align: center; + vertical-align: bottom; + width: inherit; +} +.value_el { + font-family: Arial,Helvetica,sans-serif,mono; + color: black; + display: block; + font-size: 14px; + margin: 0 auto; + padding: none; + border: none; + background: white; + text-align: center; + vertical-align: bottom; + width: auto; +} +.value_el>span { + background: #f0f0f0a0; + border: 1px solid #f0f0f0a0; + border-radius: 5px; + padding: 1px; + min-width: 2em; +} +.error { + color: red; +} + +@media only screen { +.hideFromPrint { } +.hideFromScreen { display:none; } +} +@media only print { +.hideFromScreen { } +.hideFromPrint { display:none; } +} + +/* these styles will get overridden by custom.css */ +.TitleFontScreen { + margin-left:auto; + margin-right:auto; + margin-top: 0; + margin-bottom: 0; + font-size: 50px; + padding-top: 1em; +} + +.TitleFontPrint { + line-height: 1; + margin-left:0px; + margin-right:auto; + margin-top: 0; + margin-bottom: 0; + font-size: 50px; + padding-top: 20px; + padding-left: 20px; +} + +.TitleFontPrintSub { + line-height: 1; + margin-left:0px; + margin-right:auto; + margin-top: 0; + margin-bottom: 0; + /*font-size: 20px; Let 'h3', etc control this */ + padding-top: 0px; + padding-left: 20px; +} + +.HeaderFont {} +.TableFont {} +.TableBorder {} +.ImgStyle {} +div.Section h1, div.Section h2 { + margin: 0 0 0 0em; +} +div.HeaderStyle h1, div.HeaderStyle h2 { + text-align: left; + margin: 0 0 0 0; +} +div.Section { + padding 5px; + position: relative; +} +div.Section img { + margin: 0; + padding: 0; + position: relative; + top: 50%; + transform: translateY(-50%); +} +div.FooterStyle { + width: 100%; + vertical-align: middle; + border: 0 none; + border-top: 2px solid #2A5B29; + color: #2A5B29; + font-size: 12px; + margin-top: 2em; +} +div.FooterStyle img { + width: auto; + height: auto; + text-align: right; +} +div.FooterStyle span.Gradient { + background: white; + color: #2A5B29; + display: inline-block; + height: 30px; + line-height: 1; + padding-top: 22px; + padding-bottom: 20px; + padding-left: 2em; + vertical-align: middle; + max-width:80%; + float:left; + width:50%; +} +.FooterStyle a, .FooterStyle a:visited { + color: #2A5B29; + font-size: 12px; + line-height: 1; + height: 30px; + margin: 0; + padding: 0; + vertical-align: middle; +} +div.FooterStyle a.LogoImgLink { + display: inline-block; + text-align: right; + float: right; +} +a .LogoImgLink { +} +a.LogoImgLink img { +} diff --git a/reports/dataplane-2021-06-13-11-19-31/report_banner-1000x205.jpg b/reports/dataplane-2021-06-13-11-19-31/report_banner-1000x205.jpg new file mode 100644 index 000000000..e9e080ab8 Binary files /dev/null and b/reports/dataplane-2021-06-13-11-19-31/report_banner-1000x205.jpg differ diff --git a/reports/dataplane-2021-06-13-11-19-31/text-csv-0.csv b/reports/dataplane-2021-06-13-11-19-31/text-csv-0.csv new file mode 100644 index 000000000..8bdd5a2ae --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/text-csv-0.csv @@ -0,0 +1,2 @@ +Channel,Frequency,Security,NSS,Cfg-Mode,Bandwidth,Pkt,Traffic-Type,Direction,Atten,Rotation,Duration,Offered-1m,Rx-Bps,Rx-Bps-1m,Rx-Bps-LL,Rx-Bps-3s,Phy-Rate,Theoretical,Throughput%,RSSI,Tx-Failed,Tx-Failed%,Tx-Rate,Rx-Rate,Rpt-Mode,Rpt-Mode-Brief +6,2437,WPA2,3,AUTO,20,1024,TCP,DUT-TX,NA,NA,60,75.853 Mbps,69.903 Mbps,71.561 Mbps,75.684 Mbps,83.13 Mbps,1.3 Gbps,NA,NA,-5,0 / 119365,0,156 Mbps,19.5 Mbps,802.11bgn,802.11n diff --git a/reports/dataplane-2021-06-13-11-19-31/text-csv-1.csv b/reports/dataplane-2021-06-13-11-19-31/text-csv-1.csv new file mode 100644 index 000000000..afd18f7db --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/text-csv-1.csv @@ -0,0 +1,2 @@ +Step Index,Position [Deg],Attenuation [dB],Throughput [Mbps],Beacon RSSI [dBm],Data RSSI [dBm] +0,NA,0,69.90,0,-5 diff --git a/reports/dataplane-2021-06-13-11-19-31/text-tab-0.csv b/reports/dataplane-2021-06-13-11-19-31/text-tab-0.csv new file mode 100644 index 000000000..a019386dd --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/text-tab-0.csv @@ -0,0 +1,2 @@ +Channel Frequency Security NSS Cfg-Mode Bandwidth Pkt Traffic-Type Direction Atten Rotation Duration Offered-1m Rx-Bps Rx-Bps-1m Rx-Bps-LL Rx-Bps-3s Phy-Rate Theoretical Throughput% RSSI Tx-Failed Tx-Failed% Tx-Rate Rx-Rate Rpt-Mode Rpt-Mode-Brief +6 2437 WPA2 3 AUTO 20 1024 TCP DUT-TX NA NA 60 75.853 Mbps 69.903 Mbps 71.561 Mbps 75.684 Mbps 83.13 Mbps 1.3 Gbps NA NA -5 0 / 119365 0 156 Mbps 19.5 Mbps 802.11bgn 802.11n diff --git a/reports/dataplane-2021-06-13-11-19-31/text-tab-1.csv b/reports/dataplane-2021-06-13-11-19-31/text-tab-1.csv new file mode 100644 index 000000000..cdc2f2411 --- /dev/null +++ b/reports/dataplane-2021-06-13-11-19-31/text-tab-1.csv @@ -0,0 +1,2 @@ +Step Index Position [Deg] Attenuation [dB] Throughput [Mbps] Beacon RSSI [dBm] Data RSSI [dBm] +0 NA 0 69.90 0 -5 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..5d016dd98 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,14 @@ +allure-pytest +Appium-Python-Client +bs4 +influxdb +influxdb-client +pandas +paramiko +perfecto-py37 +pytest==6.2.2 +requests +scp +selenium +tip-wlan-cloud +xlsxwriter \ No newline at end of file diff --git a/tests/Dockerfile b/tests/Dockerfile deleted file mode 100644 index 782cd092e..000000000 --- a/tests/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM python:alpine3.12 -WORKDIR /tests -COPY . /tests - -RUN mkdir ~/.pip \ - && echo "[global]" > ~/.pip/pip.conf \ - && echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf \ - && echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf -RUN pip3 install -r requirements.txt - -ENTRYPOINT [ "/bin/sh" ] diff --git a/tests/Dockerfile-lint b/tests/Dockerfile-lint deleted file mode 100644 index bcab34e7f..000000000 --- a/tests/Dockerfile-lint +++ /dev/null @@ -1,3 +0,0 @@ -FROM wlan-tip-tests -RUN pip3 install pylint -ENTRYPOINT [ "pylint" ] diff --git a/tests/configuration.py b/tests/configuration.py index 9a012e932..037881be7 100644 --- a/tests/configuration.py +++ b/tests/configuration.py @@ -6,7 +6,56 @@ """ CONFIGURATION = { - "basic-01": { + "advanced-02": { + "controller": { + 'url': "https://wlan-portal-svc-nola-01.cicd.lab.wlan.tip.build", # API base url for the controller + 'username': 'support@example.com', # cloud controller Login + 'password': 'support', # Cloud Controller Login Password + 'version': '1.1.0-SNAPSHOT', # Controller version + 'commit_date': "2021-04-27" # Controller version sdk, commit date + }, + 'access_point': [ + { + 'model': 'eap102', # AP Model, can be found in ap console using "node" command + 'mode': 'wifi6', # wifi5/wifi6 can be found on AP Hardware page on Confluence + 'serial': '903cb39d6959', # "node" command has serial_number information + 'jumphost': True, + # True, if you have AP On serial console and not ssh access, False, if you have AP ssh access from the machine + 'ip': "localhost", + # IP Address of System, which has AP Connected to serial cable (if jumphost is True), else - AP IP Address + 'username': "lanforge", # ssh username of system (lab-ctlr/ap) + 'password': "pumpkin77", # ssh password for system (lab-ctlr/ap) + 'port': 8803, # 22, # ssh port for system (lab-ctlr/ap) + 'jumphost_tty': '/dev/ttyAP3', # if jumphost is True, enter the serial console device name + 'version': "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/ecw5410/dev/eap102-2021-06-25-pending-b6743c3.tar.gz" + # Enter the Target AP Version URL for Testing + } + ], + # Traffic generator + "traffic_generator": { + "name": "lanforge", # ( lanforge/ perfecto) + # Details for LANforge system + "details": { + "ip": "localhost", # localhost, + "port": 8802, # 8802, + "ssh_port": 8804, + "2.4G-Radio": ["wiphy2", "wiphy4"], + "5G-Radio": ["wiphy5", "wiphy3"], + "AX-Radio": [], + "upstream": "1.1.eth1", + "upstream_subnet": "10.28.2.1/24", + "uplink": "1.1.eth3", + "2.4G-Station-Name": "wlan0", + "5G-Station-Name": "wlan0", + "AX-Station-Name": "ax" + } + } + + }, + + + +"basic-01": { "controller": { 'url': "https://wlan-portal-svc-nola-02.cicd.lab.wlan.tip.build", # API base url for the controller 'username': 'support@example.com', diff --git a/tests/conftest.py b/tests/conftest.py index 2e4d5b94a..93f5deca6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -253,7 +253,7 @@ def instantiate_firmware(request, setup_controller, get_configuration): for access_point_info in get_configuration['access_point']: version = access_point_info["version"] - if request.config.getini("build") != "0": + if request.config.getini("build").__contains__("https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/"): version = request.config.getini("build") firmware_client = FirmwareUtility(sdk_client=setup_controller, model=access_point_info["model"], @@ -513,6 +513,13 @@ def create_lanforge_chamberview_dut(get_configuration, testbed): testbed=testbed, access_point_data=get_configuration["access_point"]) yield True +@pytest.fixture(scope="session") +def lf_tools(get_configuration, testbed): + """ Create a DUT on LANforge""" + obj = ChamberView(lanforge_data=get_configuration["traffic_generator"]["details"], + testbed=testbed, access_point_data=get_configuration["access_point"]) + yield obj + @pytest.fixture(scope="module") def create_vlan(request, testbed, get_configuration): diff --git a/tests/e2e/advanced/conftest.py b/tests/e2e/advanced/conftest.py index e69de29bb..da719e185 100644 --- a/tests/e2e/advanced/conftest.py +++ b/tests/e2e/advanced/conftest.py @@ -0,0 +1,670 @@ +import os +import sys + +sys.path.append( + os.path.dirname( + os.path.realpath(__file__) + ) +) +if "libs" not in sys.path: + sys.path.append(f'../libs') + +from controller.controller import ProfileUtility +import time +from lanforge.lf_tests import RunTest +from lanforge.lf_tools import ChamberView +import pytest +import allure + + +@pytest.fixture(scope="session") +def instantiate_profile(): + yield ProfileUtility + + +@pytest.fixture(scope="session") +def lf_tools(get_configuration, testbed): + lf_tools_obj = ChamberView(lanforge_data=get_configuration['traffic_generator']['details'], + access_point_data=get_configuration['access_point'], + testbed=testbed) + yield lf_tools_obj + + +@pytest.fixture(scope="session") +def create_lanforge_chamberview(lf_tools): + scenario_object, scenario_name = lf_tools.Chamber_View() + return scenario_name + + +@pytest.fixture(scope="session") +def create_lanforge_chamberview_dut(lf_tools): + dut_object, dut_name = lf_tools.Create_Dut() + return dut_name + + +@pytest.fixture(scope="session") +def setup_vlan(): + vlan_id = [100] + allure.attach(body=str(vlan_id), name="VLAN Created: ") + yield vlan_id[0] + + +@allure.feature("CLIENT CONNECTIVITY SETUP") +@pytest.fixture(scope="class") +def setup_profiles(request, setup_controller, testbed, setup_vlan, get_equipment_id, + instantiate_profile, get_markers, create_lanforge_chamberview_dut, lf_tools, + get_security_flags, get_configuration, radius_info, get_apnos): + instantiate_profile = instantiate_profile(sdk_client=setup_controller) + vlan_id, mode = 0, 0 + instantiate_profile.cleanup_objects() + parameter = dict(request.param) + print(parameter) + test_cases = {} + profile_data = {} + if parameter['mode'] not in ["BRIDGE", "NAT", "VLAN"]: + print("Invalid Mode: ", parameter['mode']) + allure.attach(body=parameter['mode'], name="Invalid Mode: ") + yield test_cases + + if parameter['mode'] == "NAT": + mode = "NAT" + vlan_id = 1 + if parameter['mode'] == "BRIDGE": + mode = "BRIDGE" + vlan_id = 1 + if parameter['mode'] == "VLAN": + mode = "BRIDGE" + vlan_id = setup_vlan + + instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Equipment-AP-" + parameter['mode']) + + profile_data["equipment_ap"] = {"profile_name": testbed + "-Equipment-AP-" + parameter['mode']} + profile_data["ssid"] = {} + for i in parameter["ssid_modes"]: + profile_data["ssid"][i] = [] + for j in range(len(parameter["ssid_modes"][i])): + profile_name = testbed + "-SSID-" + i + "-" + str(j) + "-" + parameter['mode'] + data = parameter["ssid_modes"][i][j] + data["profile_name"] = profile_name + if "mode" not in dict(data).keys(): + data["mode"] = mode + if "vlan" not in dict(data).keys(): + data["vlan"] = vlan_id + instantiate_profile.delete_profile_by_name(profile_name=profile_name) + profile_data["ssid"][i].append(data) + # print(profile_name) + # print(profile_data) + + instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode) + time.sleep(10) + """ + Setting up rf profile + """ + rf_profile_data = { + "name": "RF-Profile-" + testbed + "-" + parameter['mode'] + "-" + + get_configuration['access_point'][0]['mode'] + } + + for i in parameter["rf"]: + rf_profile_data[i] = parameter['rf'][i] + # print(rf_profile_data) + + try: + instantiate_profile.delete_profile_by_name(profile_name=rf_profile_data['name']) + instantiate_profile.set_rf_profile(profile_data=rf_profile_data, + mode=get_configuration['access_point'][0]['mode']) + allure.attach(body=str(rf_profile_data), + name="RF Profile Created : " + get_configuration['access_point'][0]['mode']) + except Exception as e: + print(e) + allure.attach(body=str(e), name="Exception ") + + # Radius Profile Creation + if parameter["radius"]: + radius_info = radius_info + radius_info["name"] = testbed + "-Automation-Radius-Profile-" + mode + instantiate_profile.delete_profile_by_name(profile_name=testbed + "-Automation-Radius-Profile-" + mode) + try: + instantiate_profile.create_radius_profile(radius_info=radius_info) + allure.attach(body=str(radius_info), + name="Radius Profile Created") + test_cases['radius_profile'] = True + except Exception as e: + print(e) + test_cases['radius_profile'] = False + + # SSID Profile Creation + lf_dut_data = [] + for mode in profile_data['ssid']: + if mode == "open": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_open_ssid_profile(profile_data=j) + test_cases["open_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["open_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_open_ssid_profile(profile_data=j) + test_cases["open_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["open_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_ssid_profile(profile_data=j) + test_cases["wpa_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_ssid_profile(profile_data=j) + test_cases["wpa_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa2_personal": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa2_personal_ssid_profile(profile_data=j) + test_cases["wpa2_personal_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa2_personal_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa2_personal_ssid_profile(profile_data=j) + test_cases["wpa2_personal_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa2_personal_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa_wpa2_personal_mixed": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_wpa2_personal_mixed_ssid_profile( + profile_data=j) + test_cases["wpa_wpa2_personal_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_wpa2_personal_mixed_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_wpa2_personal_mixed_ssid_profile( + profile_data=j) + test_cases["wpa_wpa2_personal_mixed_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_wpa2_personal_mixed_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa3_personal": + for j in profile_data["ssid"][mode]: + print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_personal_ssid_profile(profile_data=j) + test_cases["wpa3_personal_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_personal_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_personal_ssid_profile(profile_data=j) + test_cases["wpa3_personal_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_personal_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa3_personal_mixed": + for j in profile_data["ssid"][mode]: + print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_personal_mixed_ssid_profile( + profile_data=j) + test_cases["wpa3_personal_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_personal_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_personal_mixed_ssid_profile( + profile_data=j) + test_cases["wpa3_personal_mixed_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_personal_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa_enterprise": + for j in profile_data["ssid"][mode]: + + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_enterprise_ssid_profile(profile_data=j) + test_cases["wpa_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + + except Exception as e: + print(e) + test_cases["wpa_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_enterprise_ssid_profile(profile_data=j) + test_cases["wpa_enterprise_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_enterprise_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa2_enterprise": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa2_enterprise_ssid_profile(profile_data=j) + test_cases["wpa2_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa2_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa2_enterprise_ssid_profile(profile_data=j) + test_cases["wpa2_enterprise_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa2_enterprise_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa3_enterprise": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_enterprise_ssid_profile(profile_data=j) + test_cases["wpa3_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_enterprise_ssid_profile(profile_data=j) + test_cases["wpa3_enterprise_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wpa_wpa2_enterprise_mixed": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_wpa2_enterprise_mixed_ssid_profile( + profile_data=j) + test_cases["wpa_wpa2_enterprise_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_wpa2_enterprise_mixed_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa_wpa2_enterprise_mixed_ssid_profile( + profile_data=j) + test_cases["wpa_wpa2_enterprise_mixed_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa_wpa2_enterprise_mixed_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + if mode == "wpa3_enterprise_mixed": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_enterprise_mixed_ssid_profile( + profile_data=j) + test_cases["wpa3_enterprise_mixed_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_mixed_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wpa3_enterprise_mixed_ssid_profile( + profile_data=j) + test_cases["wpa3_enterprise_mixed_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_mixed_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + + if mode == "wep": + for j in profile_data["ssid"][mode]: + # print(j) + if mode in get_markers.keys() and get_markers[mode]: + try: + if "twog" in get_markers.keys() and get_markers["twog"] and "is2dot4GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wep_ssid_profile(profile_data=j) + test_cases["wpa3_enterprise_2g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_2g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + try: + if "fiveg" in get_markers.keys() and get_markers["fiveg"] and "is5GHz" in list( + j["appliedRadios"]): + lf_dut_data.append(j) + creates_profile = instantiate_profile.create_wep_ssid_profile(profile_data=j) + test_cases["wpa3_enterprise_5g"] = True + allure.attach(body=str(creates_profile), + name="SSID Profile Created") + except Exception as e: + print(e) + test_cases["wpa3_enterprise_5g"] = False + allure.attach(body=str(e), + name="SSID Profile Creation Failed") + # Equipment AP Profile Creation + try: + instantiate_profile.set_ap_profile(profile_data=profile_data['equipment_ap']) + test_cases["equipment_ap"] = True + allure.attach(body=str(profile_data['equipment_ap']), + name="Equipment AP Profile Created") + except Exception as e: + print(e) + test_cases["equipment_ap"] = False + allure.attach(body=str(e), + name="Equipment AP Profile Creation Failed") + + # Push the Equipment AP Profile to AP + try: + for i in get_equipment_id: + instantiate_profile.push_profile_old_method(equipment_id=i) + except Exception as e: + print(e) + print("failed to create AP Profile") + + ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") + ssid_names = [] + for i in instantiate_profile.profile_creation_ids["ssid"]: + ssid_names.append(instantiate_profile.get_ssid_name_by_profile_id(profile_id=i)) + ssid_names.sort() + + # This loop will check the VIF Config with cloud profile + vif_config = [] + test_cases['vifc'] = False + for i in range(0, 18): + vif_config = list(ap_ssh.get_vif_config_ssids()) + vif_config.sort() + print(vif_config) + print(ssid_names) + if ssid_names == vif_config: + test_cases['vifc'] = True + break + time.sleep(10) + allure.attach(body=str("VIF Config: " + str(vif_config) + "\n" + "SSID Pushed from Controller: " + str(ssid_names)), + name="SSID Profiles in VIF Config and Controller: ") + ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") + + # This loop will check the VIF Config with VIF State + test_cases['vifs'] = False + for i in range(0, 18): + vif_state = list(ap_ssh.get_vif_state_ssids()) + vif_state.sort() + vif_config = list(ap_ssh.get_vif_config_ssids()) + vif_config.sort() + print(vif_config) + print(vif_state) + if vif_state == vif_config: + test_cases['vifs'] = True + break + time.sleep(10) + allure.attach(body=str("VIF Config: " + str(vif_config) + "\n" + "VIF State: " + str(vif_state)), + name="SSID Profiles in VIF Config and VIF State: ") + + ap_logs = ap_ssh.logread() + allure.attach(body=ap_logs, name="AP LOgs: ") + ssid_info = ap_ssh.get_ssid_info() + ssid_data = [] + print(ssid_info) + for i in range(0, len(ssid_info)): + if ssid_info[i][1] == "OPEN": + ssid_info[i].append("") + if ssid_info[i][1] == "OPEN": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=OPEN" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + if ssid_info[i][1] == "WPA": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + if ssid_info[i][1] == "WPA2": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA2" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + if ssid_info[i][1] == "WPA3_PERSONAL": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA3" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + if ssid_info[i][1] == "WPA | WPA2": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=WPA|WPA2" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + if ssid_info[i][1] == "EAP-TTLS": + ssid = ["ssid_idx=" + str(i) + " ssid=" + ssid_info[i][3] + " security=EAP-TTLS" + + " password=" + ssid_info[i][2] + " bssid=" + ssid_info[i][0]] + + ssid_data.append(ssid) + + # Add bssid password and security from iwinfo data + # Format SSID Data in the below format + # ssid_data = [ + # ['ssid_idx=0 ssid=Default-SSID-2g security=WPA|WEP| password=12345678 bssid=90:3c:b3:94:48:58'], + # ['ssid_idx=1 ssid=Default-SSID-5gl password=12345678 bssid=90:3c:b3:94:48:59'] + # ] + allure.attach(name="SSID DATA IN LF DUT", body=str(ssid_data)) + lf_tools.update_ssid(ssid_data=ssid_data) + + def teardown_session(): + print("\nRemoving Profiles") + instantiate_profile.delete_profile_by_name(profile_name=profile_data['equipment_ap']['profile_name']) + instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["ssid"]) + instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["radius"]) + instantiate_profile.delete_profile(instantiate_profile.profile_creation_ids["rf"]) + allure.attach(body=str(profile_data['equipment_ap']['profile_name'] + "\n"), + name="Tear Down in Profiles ") + time.sleep(20) + + request.addfinalizer(teardown_session) + yield test_cases + + +@pytest.fixture(scope="session") +def lf_test(get_configuration, setup_influx): + # print(get_configuration) + obj = RunTest(lanforge_data=get_configuration['traffic_generator']['details'], influx_params=setup_influx) + # pytest.exit("") + yield obj + + +@pytest.fixture(scope="session") +def station_names_twog(request, get_configuration): + station_names = [] + for i in range(0, int(request.config.getini("num_stations"))): + station_names.append(get_configuration["traffic_generator"]["details"]["2.4G-Station-Name"] + "0" + str(i)) + yield station_names + + +@pytest.fixture(scope="session") +def station_names_fiveg(request, get_configuration): + station_names = [] + for i in range(0, int(request.config.getini("num_stations"))): + station_names.append(get_configuration["traffic_generator"]["details"]["5G-Station-Name"] + "0" + str(i)) + yield station_names + + +@pytest.fixture(scope="session") +def num_stations(request): + num_sta = int(request.config.getini("num_stations")) + yield num_sta + + +@pytest.fixture(scope="class") +def get_vif_state(get_apnos, get_configuration): + ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") + vif_config = list(ap_ssh.get_vif_config_ssids()) + vif_state = list(ap_ssh.get_vif_state_ssids()) + vif_state.sort() + vif_config.sort() + allure.attach(name="vif_state", body=str(vif_state)) + yield vif_state + +@pytest.fixture(scope="class") +def get_vlan_list(get_apnos, get_configuration): + ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/") + vlan_list = list(ap_ssh.get_vlan()) + vlan_list.sort() + allure.attach(name="vlan_list", body=str(vlan_list)) + yield vlan_list + diff --git a/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_bridge_mode.py b/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_bridge_mode.py new file mode 100644 index 000000000..e85613e70 --- /dev/null +++ b/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_bridge_mode.py @@ -0,0 +1,353 @@ +""" + + Advanced Test: Rate v/s Range test under various combinations: Bridge Mode + pytest -m "ratevsrange and bridge " -s -vvv --skip-testrail --testbed=basic-01 --alluredir=../allure_reports + --> allure serve ../allure_reports/ + + +""" +import os +import time + +import pytest +import allure +import os.path +import csv +import pandas as pd + +pytestmark = [pytest.mark.ratevsrange, pytest.mark.bridge ,pytest.mark.usefixtures("setup_test_run")] + + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "open": [{"ssid_name": "ssid_open_2g", "appliedRadios": ["is2dot4GHz"]}, + {"ssid_name": "ssid_open_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"]}], + "wpa": [{"ssid_name": "ssid_wpa_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}], + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}]}, + "rf": { + "is5GHz": {"channelBandwidth": "is20MHz"}, + "is5GHzL": {"channelBandwidth": "is20MHz"}, + "is5GHzU": {"channelBandwidth": "is20MHz"} + }, + "radius": False +} + +@allure.feature("BRIDGE MODE CLIENT CONNECTIVITY") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.Mhz20 +class TestRatevsRangeBridge(object): + + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.client11b + def test_client_wpa2_personal_2g_11b(self, get_vif_state, + lf_test, station_names_twog, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and client11b" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2495 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "BRIDGE" + band = "twog" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_twog, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11b'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_twog, mode=mode, + instance_name="BRIDGE_RVR_11B", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + print("report name ", report_name) + entries = os.listdir("../reports/" + report_name + '/') + print("entries",entries) + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + + + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_twog) + + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + if str(kpi_val) == "empty": + print("kpi is empty, station did not got ip, Test failed") + allure.attach(name="Kpi Data", body="station did not got ip Test failed.") + assert False + else: + print("Test passed successfully") + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.client11g + def test_client_wpa2_personal_2g_11g(self, get_vif_state, + lf_test, station_names_twog, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and bridge and client11g" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2496 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "BRIDGE" + band = "twog" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_twog, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11g'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_twog, mode=mode, + instance_name="BRIDGE_RVR_11G", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_twog) + script_dir = os.path.dirname(__file__) # Script directory + print(script_dir) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + if str(kpi_val) == "empty": + print("kpi is empty, station did not got ip, Test failed") + allure.attach(name="Kpi Data", body="station did not got ip Test failed.") + assert False + else: + print("Test passed successfully") + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11a + def test_client_wpa2_personal_5g_11a(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration,lf_tools): + """ + + pytest -m "ratevsrange and bridge and client11a" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2497 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "BRIDGE" + band = "fiveg" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11a'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="BRIDGE_RVR_11A", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=['numeric-score'], dir_name=report_name) + print(str(kpi_val)) + if str(kpi_val) == "empty": + print("kpi is empty, station did not got ip, Test failed") + allure.attach(name="Kpi Data", body="station did not got ip Test failed.") + assert False + else: + print("Test passed successfully") + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11an + def test_client_wpa2_personal_5g_11an(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and bridge and client11an" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2498 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "BRIDGE" + band = "fiveg" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11an'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="BRIDGE_RVR_11AN", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + if str(kpi_val) == "empty": + print("kpi is empty, station did not got ip, Test failed") + allure.attach(name="Kpi Data", body="station did not got ip Test failed.") + assert False + else: + print("Test passed successfully") + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.performance_advanced + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11ac + def test_client_wpa2_personal_5g_11ac(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and bridge and client11ac" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2499 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "BRIDGE" + band = "fiveg" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11an-AC'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'] ,['attenuator2: 1.1.3059'], ['attenuations: 0..+50..950'],['attenuations2: 0..+50..950']] + + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="BRIDGE_RVR_11AC", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + if str(kpi_val) == "empty": + print("kpi is empty, station did not got ip, Test failed") + allure.attach(name="Kpi Data", body="station did not got ip Test failed.") + assert False + else: + print("Test passed successfully") + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False diff --git a/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_nat_mode.py b/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_nat_mode.py new file mode 100644 index 000000000..f7ab95d09 --- /dev/null +++ b/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_nat_mode.py @@ -0,0 +1,316 @@ +""" + + Advanced Test: Rate v/s Range test under various combinations: NAT Mode + pytest -m "throughput_benchmark_test and nat" -s -vvv --skip-testrail --testbed=basic-01 + + +""" +import os +import time + +import pytest +import allure + +pytestmark = [pytest.mark.ratevsrange, pytest.mark.nat ,pytest.mark.usefixtures("setup_test_run")] + + +setup_params_general = { + "mode": "NAT", + "ssid_modes": { + "open": [{"ssid_name": "ssid_open_2g", "appliedRadios": ["is2dot4GHz"]}, + {"ssid_name": "ssid_open_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"]}], + "wpa": [{"ssid_name": "ssid_wpa_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}], + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}]}, + "rf": { + "is5GHz": {"channelBandwidth": "is20MHz"}, + "is5GHzL": {"channelBandwidth": "is20MHz"}, + "is5GHzU": {"channelBandwidth": "is20MHz"} + }, + "radius": False +} + +@allure.feature("BRIDGE MODE CLIENT CONNECTIVITY") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.Mhz20 +class TestRatevsRangeNat(object): + + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.client11b + def test_client_wpa2_personal_2g_11b(self, get_vif_state, + lf_test, station_names_twog, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and nat and 11bclient" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2495 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "NAT" + band = "twog" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_twog, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11b'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_twog, mode=mode, + instance_name="NAT_RVR_11B", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_twog) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.client11g + def test_client_wpa2_personal_2g_11g(self, get_vif_state, + lf_test, station_names_twog, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and nat and client11g" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2496 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "NAT" + band = "twog" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_twog, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11G'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_twog, mode=mode, + instance_name="NAT_RVR_11G", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_twog) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11a + def test_client_wpa2_personal_5g_11a(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and nat and client11a" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2497 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "NAT" + band = "fiveg" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11a'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="NAT_RVR_11A", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11an + def test_client_wpa2_personal_5g_11an(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration,lf_tools): + """ + + pytest -m "ratevsrange and nat and client11an" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2498 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "NAT" + band = "fiveg" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11an'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="NAT_RVR_11AN", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.performance_advanced + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11ac + def test_client_wpa2_personal_5g_11ac(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and nat and client11ac" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2499 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "NAT" + band = "fiveg" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11an-AC'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="NAT_RVR_11AC", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False diff --git a/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_vlan_mode.py b/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_vlan_mode.py new file mode 100644 index 000000000..0c610435b --- /dev/null +++ b/tests/e2e/advanced/rate_vs_range/wpa2_personal/test_vlan_mode.py @@ -0,0 +1,314 @@ +""" + + Advanced Test: Rate v/s Range test under various combinations: VLAN Mode + pytest -m "throughput_benchmark_test and vlan" -s -vvv --skip-testrail --testbed=basic-01 + + +""" +import os +import time + +import pytest +import allure + +pytestmark = [pytest.mark.ratevsrange, pytest.mark.vlan ,pytest.mark.usefixtures("setup_test_run")] + + +setup_params_general = { + "mode": "VLAN", + "ssid_modes": { + "open": [{"ssid_name": "ssid_open_2g", "appliedRadios": ["is2dot4GHz"]}, + {"ssid_name": "ssid_open_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"]}], + "wpa": [{"ssid_name": "ssid_wpa_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}], + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa2_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}]}, + "rf": { + "is5GHz": {"channelBandwidth": "is20MHz"}, + "is5GHzL": {"channelBandwidth": "is20MHz"}, + "is5GHzU": {"channelBandwidth": "is20MHz"} + }, + "radius": False +} + +@allure.feature("BRIDGE MODE CLIENT CONNECTIVITY") +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.usefixtures("setup_profiles") +@pytest.mark.Mhz20 +class TestRatevsRangeVlan(object): + + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.client11b + def test_client_wpa2_personal_2g_11b(self, get_vif_state, + lf_test, station_names_twog, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and vlan and 11bclient" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2495 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "VLAN" + band = "twog" + vlan = 100 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_twog, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11b'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_twog, mode=mode, + instance_name="VLAN_RVR_11B", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_twog) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.client11g + def test_client_wpa2_personal_2g_11g(self, get_vif_state, + lf_test, station_names_twog, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and vlan and client11g" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2496 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "VLAN" + band = "twog" + vlan = 100 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_twog, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11g'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_twog, mode=mode, + instance_name="VLAN_RVR_11G", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_twog) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11a + def test_client_wpa2_personal_5g_11a(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and vlan and client11a" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2497 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "VLAN" + band = "fiveg" + vlan = 100 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11a'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="VLAN_RVR_11A", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11an + def test_client_wpa2_personal_5g_11an(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration,lf_tools): + """ + + pytest -m "ratevsrange and vlan and client11an" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2498 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "VLAN" + band = "fiveg" + vlan = 100 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11an'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="VLAN_RVR_11AN", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False + + @pytest.mark.performance_advanced + @pytest.mark.wpa2_personal + @pytest.mark.fiveg + @pytest.mark.client11ac + def test_client_wpa2_personal_5g_11ac(self, get_vif_state, + lf_test, station_names_fiveg, create_lanforge_chamberview_dut, + get_configuration, lf_tools): + """ + + pytest -m "ratevsrange and vlan and client11ac" -s -vvv --skip-testrail --testbed=advanced-02 + jira- wifi-2499 + """ + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] + ssid_name = profile_data["ssid_name"] + security_key = profile_data["security_key"] + security = "wpa2" + mode = "VLAN" + band = "fiveg" + vlan = 1 + dut_name = create_lanforge_chamberview_dut + if ssid_name not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + station = lf_test.Client_Connect(ssid=ssid_name, security=security, + passkey=security_key, mode=mode, band=band, + station_name=station_names_fiveg, vlan_id=vlan) + print("station", station) + + val = [['modes: 802.11an-AC'], ['pkts: MTU'], ['directions: DUT Transmit'], ['traffic_types:TCP'], + ['bandw_options: AUTO'], ['spatial_streams: AUTO'], ['attenuator: 1.1.3034'], ['attenuator2: 1.1.3059'], + ['attenuations: 0..+50..950'], ['attenuations2: 0..+50..950']] + + if station: + time.sleep(3) + rvr_o = lf_test.ratevsrange(station_name=station_names_fiveg, mode=mode, + instance_name="VLAN_RVR_11AC", + vlan_id=vlan, dut_name=dut_name, raw_lines=val) + report_name = rvr_o.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "ratevsrange") + print("Test Completed... Cleaning up Stations") + lf_test.Client_disconnect(station_name=station_names_fiveg) + kpi_val = lf_tools.read_kpi_file(column_name=None, dir_name=report_name) + print(str(kpi_val)) + allure.attach(name="Kpi Data", body=str(kpi_val)) + assert station + else: + assert False diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/open/__init__.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/open/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_bridge_mode.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_bridge_mode.py new file mode 100644 index 000000000..7a30dec91 --- /dev/null +++ b/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_bridge_mode.py @@ -0,0 +1,67 @@ +""" + Dual Band Performance Test : Bridge Mode + pytest -m "dual_band_test and bridge" + + +""" + +import os +import allure +import pytest + +pytestmark = [pytest.mark.dual_band_test, pytest.mark.bridge, + pytest.mark.usefixtures("setup_test_run")] + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "open": [{"ssid_name": "ssid_open_2g", "appliedRadios": ["is2dot4GHz"]}, + {"ssid_name": "ssid_open_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"]}]}, + "rf": {}, + "radius": False +} + + +@pytest.mark.dual_band_test +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +class TestDualbandPerformanceBridge(object): + """ + pytest -m "dual_band_test and bridge and open and twog and fiveg" + """ + + @pytest.mark.open + @pytest.mark.twog + @pytest.mark.fiveg + def test_client_open(self,get_vif_state,create_lanforge_chamberview_dut, lf_test,get_configuration): + profile_data = setup_params_general["ssid_modes"]["open"] + ssid_2G = profile_data[0]["ssid_name"] + ssid_5G = profile_data[1]["ssid_name"] + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + if ssid_2G and ssid_5G not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID's NOT AVAILABLE IN VIF STATE") + + dbpt_obj = lf_test.dualbandperformancetest(mode=mode,ssid_2G=ssid_2G,ssid_5G=ssid_5G, + instance_name="dbp_instance_open_bridge", + vlan_id=vlan, dut_name=dut_name) + report_name = dbpt_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "_dualbandperfomance") + diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_nat_mode.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_nat_mode.py new file mode 100644 index 000000000..c7781f1b2 --- /dev/null +++ b/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_nat_mode.py @@ -0,0 +1,67 @@ +""" + Dual Band Performance Test : NAT Mode + pytest -m "dual_band_test and nat" + + +""" + +import os +import allure +import pytest + +pytestmark = [pytest.mark.dual_band_test, pytest.mark.nat, + pytest.mark.usefixtures("setup_test_run")] + +setup_params_general = { + "mode": "NAT", + "ssid_modes": { + "open": [{"ssid_name": "ssid_open_2g", "appliedRadios": ["is2dot4GHz"]}, + {"ssid_name": "ssid_open_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"]}]}, + "rf": {}, + "radius": False +} + + +@pytest.mark.dual_band_test +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +class TestDualbandPerformanceNat(object): + """ + pytest -m "dual_band_test and nat and open and twog and fiveg" + """ + + @pytest.mark.open + @pytest.mark.twog + @pytest.mark.fiveg + def test_client_open(self,get_vif_state,create_lanforge_chamberview_dut, lf_test,get_configuration): + profile_data = setup_params_general["ssid_modes"]["open"] + ssid_2G = profile_data[0]["ssid_name"] + ssid_5G = profile_data[1]["ssid_name"] + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + if ssid_2G and ssid_5G not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID's NOT AVAILABLE IN VIF STATE") + + dbpt_obj = lf_test.dualbandperformancetest(mode=mode,ssid_2G=ssid_2G,ssid_5G=ssid_5G, + instance_name="dbp_instance_open_nat", + vlan_id=vlan, dut_name=dut_name) + report_name = dbpt_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "_dualbandperfomance") + diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_vlan_mode.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_vlan_mode.py new file mode 100644 index 000000000..5e1ada71c --- /dev/null +++ b/tests/e2e/basic/performance_tests/dual_band_performance_test/open/test_vlan_mode.py @@ -0,0 +1,72 @@ +""" + Dual Band Performance Test : VLAN Mode + pytest -m "dual_band_test and vlan" + + +""" + +import os +import allure +import pytest + +pytestmark = [pytest.mark.dual_band_test, pytest.mark.vlan, + pytest.mark.usefixtures("setup_test_run")] + +setup_params_general = { + "mode": "VLAN", + "ssid_modes": { + "open": [{"ssid_name": "ssid_open_2g", "appliedRadios": ["is2dot4GHz"]}, + {"ssid_name": "ssid_open_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"]}]}, + "rf": {}, + "radius": False +} + + +@pytest.mark.dual_band_test +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.parametrize( + "create_vlan", + [setup_params_general], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles","create_vlan") +class TestDualbandPerformanceVlan(object): + """ + pytest -m "dual_band_test and vlan and open and twog and fiveg" + """ + + @pytest.mark.open + @pytest.mark.twog + @pytest.mark.fiveg + def test_client_open(self,get_vif_state,create_lanforge_chamberview_dut, lf_test,get_configuration): + profile_data = setup_params_general["ssid_modes"]["open"] + ssid_2G = profile_data[0]["ssid_name"] + ssid_5G = profile_data[1]["ssid_name"] + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 100 + if ssid_2G and ssid_5G not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID's NOT AVAILABLE IN VIF STATE") + + dbpt_obj = lf_test.dualbandperformancetest(mode=mode,ssid_2G=ssid_2G,ssid_5G=ssid_5G, + instance_name="dbp_instance_open_vlan", + vlan_id=vlan, dut_name=dut_name) + report_name = dbpt_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "_dualbandperfomance") diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/__init__.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_bridge_mode.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_bridge_mode.py new file mode 100644 index 000000000..cab1c47e5 --- /dev/null +++ b/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_bridge_mode.py @@ -0,0 +1,68 @@ +""" + Dual Band Performance Test : Bridge Mode + pytest -m "performance and dual_band_test and bridge" + + +""" + +import os +import allure +import pytest + +pytestmark = [pytest.mark.performance,pytest.mark.dual_band_test, pytest.mark.bridge, + pytest.mark.usefixtures("setup_test_run")] + +setup_params_general = { + "mode": "BRIDGE", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2p_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa2p_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}]}, + "rf": {}, + "radius": False +} + + +@pytest.mark.dual_band_test +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +class TestDualbandPerformanceBridge(object): + """ + pytest -m "performance and dual_band_test and bridge and wpa2_personal and twog and fiveg" + """ + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.fiveg + def test_client_wpa2_personal(self,get_vif_state,create_lanforge_chamberview_dut,lf_test,get_configuration): + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"] + ssid_2G = profile_data[0]["ssid_name"] + ssid_5G = profile_data[1]["ssid_name"] + dut_name = create_lanforge_chamberview_dut + mode = "BRIDGE" + vlan = 1 + if ssid_2G and ssid_5G not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID's NOT AVAILABLE IN VIF STATE") + + dbpt_obj = lf_test.dualbandperformancetest(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, + instance_name="dbp_instance_wpa2p_bridge", + vlan_id=vlan, dut_name=dut_name) + report_name = dbpt_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "_dualbandperfomance") + diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_nat_mode.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_nat_mode.py new file mode 100644 index 000000000..c91135faf --- /dev/null +++ b/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_nat_mode.py @@ -0,0 +1,69 @@ +""" + Dual Band Performance Test : NAT Mode + pytest -m "performance and dual_band_test and nat" + + +""" + +import os +import allure +import pytest + +pytestmark = [pytest.mark.performance,pytest.mark.dual_band_test, pytest.mark.nat, + pytest.mark.usefixtures("setup_test_run")] + +setup_params_general = { + "mode": "NAT", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2p_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa2p_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}]}, + "rf": {}, + "radius": False +} + + +@pytest.mark.dual_band_test +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles") +class TestDualbandPerformanceNat(object): + + """ + pytest -m "performance and dual_band_test and nat and wpa2_personal and twog and fiveg" + """ + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.fiveg + def test_client_wpa2_personal(self,get_vif_state,create_lanforge_chamberview_dut,lf_test,get_configuration): + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"] + ssid_2G = profile_data[0]["ssid_name"] + ssid_5G = profile_data[1]["ssid_name"] + dut_name = create_lanforge_chamberview_dut + mode = "NAT" + vlan = 1 + if ssid_2G and ssid_5G not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID's NOT AVAILABLE IN VIF STATE") + + dbpt_obj = lf_test.dualbandperformancetest(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, + instance_name="dbp_instance_wpa2p_nat", + vlan_id=vlan, dut_name=dut_name) + report_name = dbpt_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "_dualbandperfomance") + diff --git a/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_vlan_mode.py b/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_vlan_mode.py new file mode 100644 index 000000000..8cb708957 --- /dev/null +++ b/tests/e2e/basic/performance_tests/dual_band_performance_test/wpa2_personal/test_vlan_mode.py @@ -0,0 +1,75 @@ +""" + Dual Band Performance Test : VLAN Mode + pytest -m "performance and dual_band_test and vlan" + + +""" + +import os +import allure +import pytest + +pytestmark = [pytest.mark.performance,pytest.mark.dual_band_test, pytest.mark.vlan, + pytest.mark.usefixtures("setup_test_run")] + +setup_params_general = { + "mode": "VLAN", + "ssid_modes": { + "wpa2_personal": [ + {"ssid_name": "ssid_wpa2p_2g", "appliedRadios": ["is2dot4GHz"], "security_key": "something"}, + {"ssid_name": "ssid_wpa2p_5g", "appliedRadios": ["is5GHzU", "is5GHz", "is5GHzL"], + "security_key": "something"}]}, + "rf": {}, + "radius": False +} + + +@pytest.mark.dual_band_test +@pytest.mark.wifi5 +@pytest.mark.wifi6 +@pytest.mark.parametrize( + 'setup_profiles', + [setup_params_general], + indirect=True, + scope="class" +) +@pytest.mark.parametrize( + "create_vlan", + [setup_params_general], + indirect=True, + scope="class" +) + +@pytest.mark.usefixtures("setup_profiles","create_vlan") +class TestDualbandPerformanceVlan(object): + + """ + pytest -m "dual_band_test and vlan and wpa2_personal and twog and fiveg" + """ + @pytest.mark.wpa2_personal + @pytest.mark.twog + @pytest.mark.fiveg + def test_client_wpa2_personal(self,get_vif_state,create_lanforge_chamberview_dut,lf_test,get_configuration): + profile_data = setup_params_general["ssid_modes"]["wpa2_personal"] + ssid_2G = profile_data[0]["ssid_name"] + ssid_5G = profile_data[1]["ssid_name"] + dut_name = create_lanforge_chamberview_dut + mode = "VLAN" + vlan = 100 + if ssid_2G and ssid_5G not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID's NOT AVAILABLE IN VIF STATE") + + dbpt_obj = lf_test.dualbandperformancetest(mode=mode, ssid_2G=ssid_2G, ssid_5G=ssid_5G, + instance_name="dbp_instance_wpa2p_vlan", + vlan_id=vlan, dut_name=dut_name) + report_name = dbpt_obj.report_name[0]['LAST']["response"].split(":::")[1].split("/")[-1] + entries = os.listdir("../reports/" + report_name + '/') + pdf = False + for i in entries: + if ".pdf" in i: + pdf = i + if pdf: + allure.attach.file(source="../reports/" + report_name + "/" + pdf, + name=get_configuration["access_point"][0]["model"] + "_dualbandperfomance") +