diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index 9001964df..9ff05405c 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -116,7 +116,7 @@ jobs: - -c - | cd tests - pytest -m "performance and ${{ github.event.inputs.marker_expression }}" -s -vvv --testbed="${{ github.event.inputs.testbed }}" --skip-testrail --alluredir=/tmp/allure-results "${{ github.event.inputs.additional_args }}" + pytest -m "${{ github.event.inputs.marker_expression }}" -s -vvv --testbed="${{ github.event.inputs.testbed }}" --skip-testrail --alluredir=/tmp/allure-results "${{ github.event.inputs.additional_args }}" ret=\$? # sleep some time to be able to download the Allure results sleep 60 diff --git a/.github/workflows/uc_interop.yml b/.github/workflows/uc_interop.yml new file mode 100644 index 000000000..473f9827e --- /dev/null +++ b/.github/workflows/uc_interop.yml @@ -0,0 +1,290 @@ +name: 2.x interop testing + +env: + # thirdparties + DOCKER_SERVER: tip-tip-wlan-cloud-docker-repo.jfrog.io + DOCKER_USER_NAME: wlan-testing-cicd + DOCKER_USER_PASSWORD: ${{ secrets.DOCKER_USER_PASSWORD }} + # AWS credentials + 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 }} + # Cloud SDK certs + CACERT: ${{ secrets.CACERT }} + CAKEY: ${{ secrets.CAKEY }} + ALLURE_CLI_VERSION: 2.14.0 + +on: + workflow_dispatch: + inputs: + additional_markers: + default: '' + description: 'Pass additional markers that will be and-combined with the interop marker, e.g. "twog or fiveg" -> "interop and twog or fiveg"' + required: false + schedule: + - cron: '15 0 * * *' + +defaults: + run: + shell: bash + +jobs: + build: + runs-on: ubuntu-latest + steps: + # checkout needed repositories + - name: Checkout Testing repo + uses: actions/checkout@v2 + with: + path: wlan-testing + + - name: Checkout LANforge scripts + uses: actions/checkout@v2 + with: + path: wlan-lanforge-scripts + repository: Telecominfraproject/wlan-lanforge-scripts + + - name: import LANforge scripts + working-directory: wlan-testing + run: ./sync_repos.bash + + # build and push docker image + - name: docker login + run: docker login ${{ env.DOCKER_SERVER }} -u ${{ env.DOCKER_USER_NAME }} -p ${{ env.DOCKER_USER_PASSWORD }} + - name: build docker image + working-directory: wlan-testing + run: docker build -t ${{ env.DOCKER_SERVER }}/cloud-sdk-nightly:${{ github.run_id }} -f docker/Dockerfile . + - name: push docker image + run: docker push ${{ env.DOCKER_SERVER }}/cloud-sdk-nightly:${{ github.run_id }} + + + test: + runs-on: ubuntu-latest + needs: [ build ] + strategy: + fail-fast: false + max-parallel: 1 + matrix: + test_type: [android, ios] + + outputs: + additional_markers: ${{ steps.marker.outputs.additional }} + + steps: + - name: get EKS access credentials + run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }} + + - name: install Allure CLI tool + run: | + wget https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/${{ env.ALLURE_CLI_VERSION }}/allure-commandline-${{ env.ALLURE_CLI_VERSION }}.tgz + tar -xzf allure-commandline-${{ env.ALLURE_CLI_VERSION }}.tgz + + - name: set job name + id: job + run: echo "::set-output name=name::2-x-interop-ci-${{ github.run_number }}-${{ matrix.test_type }}" + + - name: create configuration.py secret + run: | + cat << EOF > configuration.py + ${{ secrets.LAB_CONFIGURATION }} + EOF + kubectl create secret generic configuration --from-file=configuration=./configuration.py + + - name: calculate marker expression + id: marker + run: | + if [ "${{ matrix.test_type }}" = "android" ]; then + MARKER_EXPRESSION="interop_and" + else + MARKER_EXPRESSION="interop_ios" + fi + + ADDITIONAL_MARKERS="${{ github.event.inputs.additional_markers || '' }}" + if [ ! -z "$ADDITIONAL_MARKERS" ]; then + MARKER_EXPRESSION="$MARKER_EXPRESSION and ${ADDITIONAL_MARKERS}" + fi + + echo "::set-output name=additional::${ADDITIONAL_MARKERS}" + echo "::set-output name=expression::${MARKER_EXPRESSION}" + + - name: run interop tests + run: | + cat </dev/null 2>&1 + done + echo "tests completed" + echo "downloading allure results..." + kubectl cp $podname:/tmp/allure-results allure-results >/dev/null 2>&1 + echo "waiting for pod to exit" + kubectl logs -f $podname >/dev/null 2>&1 + exit $(kubectl get pod $podname --output="jsonpath={.status.containerStatuses[].state.terminated.exitCode}") + + - name: print logs + if: ${{ always() }} + run: | + podname=$(kubectl get pods --no-headers -o custom-columns=":metadata.name" -l job-name="${{ steps.job.outputs.name }}" | sed "s/pod\///") + kubectl logs $podname + + - name: upload Allure results as artifact + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: allure-results-${{ matrix.test_type }} + path: allure-results + + - name: cleanup + if: ${{ always() }} + run: | + kubectl delete job "${{ steps.job.outputs.name }}" --wait=true --ignore-not-found=true + kubectl delete secret configuration --wait=true --ignore-not-found=true + + report: + needs: [ test ] + if: always() + runs-on: ubuntu-latest + steps: + - name: install Allure CLI tool + run: | + wget https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/${{ env.ALLURE_CLI_VERSION }}/allure-commandline-${{ env.ALLURE_CLI_VERSION }}.tgz + tar -xzf allure-commandline-${{ env.ALLURE_CLI_VERSION }}.tgz + + - uses: actions/download-artifact@v2 + with: + name: allure-results-android + path: allure-results-android + + - uses: actions/download-artifact@v2 + with: + name: allure-results-ios + path: allure-results-ios + + - name: checkout testing repo + uses: actions/checkout@v2 + with: + path: wlan-testing + + - name: get reports branch + uses: actions/checkout@v2 + continue-on-error: true + with: + ref: gh-pages + path: reports + + - name: copy history into results + run: | + if [ -e "reports/interop/2.x-interop/latest" ] ; then + cp -r reports/interop/2.x-interop/latest/history/ allure-results-ios/history + cp -r reports/interop/2.x-interop/latest/history/ allure-results-android/history + fi + + - name: add report metadata + run: | + cat << EOF >> allure-results-android/environment.properties + Testbed=interop + Tests.CommitId=$(cd wlan-testing && git rev-parse --short HEAD) + CiRun.Id=${{ github.run_id }} + CiRun.Number=${{ github.run_number }} + CiRun.Url=https://github.com/${{github.repository}}/actions/runs/${{github.run_id}} + EOF + + - name: generate Allure report + run: allure-${{ env.ALLURE_CLI_VERSION }}/bin/allure generate allure-results-android allure-results-ios + + - name: upload Allure report as artifact + uses: actions/upload-artifact@v2 + with: + name: allure-report + path: allure-report + + # doing this to be able to aggregate multiple reports together later on + - name: copy results into report + run: | + mkdir -p allure-report/results + cp -r allure-results-android/* allure-report/results + cp -r allure-results-ios/* allure-report/results + + - name: copy new report + run: | + mkdir -p reports/interop/2.x-interop + cp -Tr allure-report reports/interop/2.x-interop/${{ github.run_number }} + + - name: update latest symlink + working-directory: reports/interop/2.x-interop + run: ln -fns ${{ github.run_number }} latest + + - name: generate new index.html + run: python wlan-testing/.github/tools/generate_directory_index.py -r reports + + - name: commit reports update + working-directory: reports + 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 "Automated deployment: $(date -u)" + + - name: push + if: github.ref == 'refs/heads/master' && needs.test.outputs.additional_markers == '' + uses: ad-m/github-push-action@v0.6.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: gh-pages + directory: reports + + cleanup: + needs: [ test ] + runs-on: ubuntu-latest + if: always() + steps: + - name: cleanup Docker image + run: curl -u${{ env.DOCKER_USER_NAME }}:${{ env.DOCKER_USER_PASSWORD }} -X DELETE "https://tip.jfrog.io/artifactory/tip-wlan-cloud-docker-repo/cloud-sdk-nightly/${{ github.run_id }}" diff --git a/.github/workflows/uc_sanity.yml b/.github/workflows/uc_sanity.yml index 4334f2e20..f7ddab021 100644 --- a/.github/workflows/uc_sanity.yml +++ b/.github/workflows/uc_sanity.yml @@ -1,4 +1,4 @@ -name: uCentral sanity testing +name: 2.x sanity testing env: # thirdparties DOCKER_SERVER: tip-tip-wlan-cloud-docker-repo.jfrog.io diff --git a/.github/workflows/ucentralgw-dev-deployment.yaml b/.github/workflows/ucentralgw-dev-deployment.yaml index 9854b9506..da18504a7 100644 --- a/.github/workflows/ucentralgw-dev-deployment.yaml +++ b/.github/workflows/ucentralgw-dev-deployment.yaml @@ -29,11 +29,11 @@ env: { "namespace": "dev01", "deploy_method": "git", - "chart_version": "main", - "ucentralgw_version": "master", - "ucentralsec_version": "main", - "ucentralfms_version": "main", - "ucentralgwui_version": "main" + "chart_version": "v2.1.0-RC1", + "ucentralgw_version": "v2.1.0-RC1", + "ucentralsec_version": "v2.1.0-RC1", + "ucentralfms_version": "v2.1.0-RC1", + "ucentralgwui_version": "v2.1.0-RC1" } ]' diff --git a/.github/workflows/ucentralgw-qa-deployment.yaml b/.github/workflows/ucentralgw-qa-deployment.yaml index bfc2fc553..3331d051c 100644 --- a/.github/workflows/ucentralgw-qa-deployment.yaml +++ b/.github/workflows/ucentralgw-qa-deployment.yaml @@ -29,11 +29,11 @@ env: { "namespace": "qa01", "deploy_method": "git", - "chart_version": "main", - "ucentralgw_version": "master", - "ucentralsec_version": "main", - "ucentralfms_version": "main", - "ucentralgwui_version": "main" + "chart_version": "v2.1.0-RC1", + "ucentralgw_version": "v2.1.0-RC1", + "ucentralsec_version": "v2.1.0-RC1", + "ucentralfms_version": "v2.1.0-RC1", + "ucentralgwui_version": "v2.1.0-RC1" } ]' diff --git a/helm/ucentral/values.ucentral-qa.yaml b/helm/ucentral/values.ucentral-qa.yaml index f96a8a8fb..e9ce642a2 100644 --- a/helm/ucentral/values.ucentral-qa.yaml +++ b/helm/ucentral/values.ucentral-qa.yaml @@ -166,7 +166,11 @@ kafka: memory: 512Mi limits: cpu: 200m - memory: 700Mi + memory: 1Gi + readinessProbe: + initialDelaySeconds: 45 + livenessProbe: + initialDelaySeconds: 60 zookeeper: heapSize: 256 resources: diff --git a/libs/apnos/apnos.py b/libs/apnos/apnos.py index 7b8457186..f9f36616b 100644 --- a/libs/apnos/apnos.py +++ b/libs/apnos/apnos.py @@ -457,6 +457,40 @@ class APNOS: print(e) return iwinfo_bssid_data + def iwinfo(self): + client = self.ssh_cli_connect() + cmd = "iwinfo" + if self.mode: + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ + f"cmd --value \"{cmd}\" " + stdin, stdout, stderr = client.exec_command(cmd) + output = stdout.read().replace(b":~# iwinfo", b"").decode('utf-8') + o = output + return o + + def gettxpower(self): + client = self.ssh_cli_connect() + cmd = "iw dev | grep txpower" + if self.mode: + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ + f"cmd --value \"{cmd}\" " + stdin, stdout, stderr = client.exec_command(cmd) + output = stdout.read().replace(b":~# iw dev | grep txpower", b"").decode('utf-8') + tx_power = output.replace("\t\t", "").split("\r\n") + tx_power.remove('') + tx_power.remove('\n') + cmd = "iw dev | grep Interface" + if self.mode: + cmd = f"cd ~/cicd-git/ && ./openwrt_ctl.py {self.owrt_args} -t {self.tty} --action " \ + f"cmd --value \"{cmd}\" " + stdin, stdout, stderr = client.exec_command(cmd) + output = stdout.read().replace(b":~# iw dev | grep Interface", b"").decode('utf-8') + name = output.replace("\t", "").splitlines() + name.remove('') + name.pop(-1) + return tx_power, name + + def logread(self): try: client = self.ssh_cli_connect() @@ -537,5 +571,7 @@ if __name__ == '__main__': 'version': "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap102/20210625-edgecore_eap102-uCentral-trunk-4225122-upgrade.bin" } var = APNOS(credentials=obj, sdk="2.x") - x = var.get_iwinfo() - print(x) + tx_power, name = var.gettxpower() + allure.attach(name="interface name: ", body=str(name)) + allure.attach(name="tx power: ", body=str(tx_power)) + print(tx_power, name) diff --git a/libs/perfecto_libs/android_lib.py b/libs/perfecto_libs/android_lib.py index 5b0424e7e..dc326a3b0 100644 --- a/libs/perfecto_libs/android_lib.py +++ b/libs/perfecto_libs/android_lib.py @@ -805,3 +805,210 @@ def verify_APconnMobileDevice_Android(request, profileNameSSID, setup_perfectoMo assert False closeApp(connData["appPackage-android"], setup_perfectoMobile) + + # Cache_clear Function +def cache_clear_android(request, setup_perfectoMobile, connData): + print("\n-------------------------------------") + print("Select Cache Clear") + print("-------------------------------------") + report = setup_perfectoMobile[1] + driver = setup_perfectoMobile[0] + + report.step_start("Switching Driver Context") + print("Switching Context to Native") + contexts = driver.contexts + driver.switch_to.context(contexts[0]) + + # Open Settings Application + openApp(connData["appPackage-android"], setup_perfectoMobile) + + deviceModelName = getDeviceModelName(setup_perfectoMobile) + print("Selected Device Model: " + deviceModelName) + + if deviceModelName != ("Pixel 4" and "Galaxy S9"): + try: + print("Clicking Search button") + report.step_start("Click Search") + conn_ele = driver.find_element_by_xpath("//*[@content-desc='Search']") + conn_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Search") + + try: + driver.implicitly_wait(30) + print("Entering Chrome in Search") + report.step_start("Entering text Chrome") + search_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings.intelligence:id/search_src_text']") + search_ele.send_keys("chrome") + except Exception as e: + print("Exception: Entering chrome failed") + print(e) + + try: + driver.implicitly_wait(40) + print("Clicking Chrome App Info") + report.step_start("Click Chrome App Info") + chrome_ele = driver.find_element_by_xpath("//*[@text='Chrome']") + chrome_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Chrome") + + # Scroll Down + scrollDown(setup_perfectoMobile) + + try: + driver.implicitly_wait(30) + print("Clicking Storage") + report.step_start("Click Storage") + store_ele = driver.find_element_by_xpath("//*[@text='Storage']") + store_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Storage") + + try: + driver.implicitly_wait(30) + print("Clicking Clear Cache") + report.step_start("Click Clear Cache") + clear_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/button2']") + clear_ele.click() + print("Cleared Cache") + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Clearcache") + + try: + driver.implicitly_wait(30) + print("Checking if cache cleared or not with 0B") + report.step_start("Checking if cache cleared or not with 0B") + check_ele = driver.find_element_by_xpath("//*[@text='0 B']") + if check_ele is not None: + return True + else: + return False + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Checking cache clear") + + elif deviceModelName == ("Pixel 4"): + # Pixel cache clear code + try: + print("Clicking Search button") + report.step_start("Click Search") + conn_ele = driver.find_element_by_xpath("//*[@class='android.widget.ImageButton']") + conn_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Search") + + try: + driver.implicitly_wait(30) + print("Entering Chrome in Search") + report.step_start("Entering text Chrome") + search_ele = driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']") + search_ele.send_keys("chrome") + except Exception as e: + print("Exception: Entering chrome failed") + print(e) + + try: + driver.implicitly_wait(35) + print("Clicking Chrome App Info") + report.step_start("Click Chrome App Info") + chrom_ele = driver.find_element_by_xpath("//*[@text='Chrome']") + chrom_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Chrome") + + try: + driver.implicitly_wait(30) + print("Clicking Storage & cache") + report.step_start("Click Storage & cache") + store_ele = driver.find_element_by_xpath("//*[@text='Storage & cache']") + store_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Storage & cache") + + try: + driver.implicitly_wait(30) + print("Clicking Clear Cache") + report.step_start("Click Clear Cache") + clear_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/button2']") + clear_ele.click() + print("Cleared cache") + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Clearcache") + + try: + driver.implicitly_wait(30) + print("Checking if cache cleared or not with 0B") + report.step_start("Checking if cache cleared or not with 0B") + store_ele = driver.find_element_by_xpath("//*[@text='0 B']") + if store_ele is not None: + return True + else: + return False + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Checking cache clear") + + else: + try: + print("Clicking Search button") + report.step_start("Click Search") + conn_ele = driver.find_element_by_xpath("//*[@content-desc='Search settings']") + conn_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Search") + + try: + driver.implicitly_wait(30) + print("Entering Chrome in Search") + report.step_start("Entering text Chrome") + search_ele = driver.find_element_by_xpath( + "//*[@resource-id='com.android.settings.intelligence:id/search_src_text']") + search_ele.send_keys("chrome") + except Exception as e: + print("Exception: Entering chrome failed") + print(e) + + try: + driver.implicitly_wait(40) + print("Clicking Chrome App Info") + report.step_start("Click Chrome App Info") + chrome_ele = driver.find_element_by_xpath("//*[@text='Chrome']") + chrome_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Chrome") + + # Scroll Down + scrollDown(setup_perfectoMobile) + + try: + driver.implicitly_wait(30) + print("Clicking Storage") + report.step_start("Click Storage") + store_ele = driver.find_element_by_xpath("//*[@text='Storage']") + store_ele.click() + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Storage") + + try: + driver.implicitly_wait(30) + print("Clicking Clear Cache") + report.step_start("Click Clear Cache") + clear_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/button2']") + clear_ele.click() + print("Cleared Cache") + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Click Clearcache") + + try: + driver.implicitly_wait(30) + print("Checking if cache cleared or not with 0B") + report.step_start("Checking if cache cleared or not with 0B") + check_ele = driver.find_element_by_xpath("//*[@text='0 B']") + if check_ele is not None: + return True + else: + return False + except NoSuchElementException: + print("Exception: Verify Xpath - Update/check Xpath for Checking cache clear") + + + closeApp(connData["appPackage-android"], setup_perfectoMobile) \ No newline at end of file diff --git a/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py b/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py index cd6ae3b22..7165fd0f5 100644 --- a/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py +++ b/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py @@ -16,7 +16,8 @@ import allure if 'perfecto_libs' not in sys.path: sys.path.append(f'../libs/perfecto_libs') -pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.android, pytest.mark.interop_and, pytest.mark.openRoaming, pytest.mark.bridge] +# pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.android, pytest.mark.interop_and, pytest.mark.openRoaming, pytest.mark.bridge] +pytestmark = [pytest.mark.openRoaming] from android_lib import closeApp, set_APconnMobileDevice_android, verify_APconnMobileDevice_Android, deleteOpenRoamingInstalledProfile, downloadInstallOpenRoamingProfile, verifyUploadDownloadSpeed_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp diff --git a/tests/e2e/interOp/conftest.py b/tests/e2e/interOp/conftest.py index ae614f904..fa719a112 100644 --- a/tests/e2e/interOp/conftest.py +++ b/tests/e2e/interOp/conftest.py @@ -692,32 +692,35 @@ def pytest_runtest_makereport(item, call): def pytest_sessionfinish(session, exitstatus): - - print() - skipped_amount = 0 - #print('Perfecto TestCase Execution Status:', exitstatus) - passed_amount = sum(1 for result in session.results.values() if result.passed) - failed_amount = sum(1 for result in session.results.values() if result.failed) - skipped_amount = sum(1 for result in session.results.values() if result.skipped) - # print(f'There are {passed_amount} passed and {failed_amount} failed tests') - TotalExecutedCount = failed_amount + passed_amount + skipped_amount - - print('\n------------------------------------') - print('Interop Perfecto TestCase Execution Summary') - print('------------------------------------') - print('Total TestCase Executed: ' + str(TotalExecutedCount)) - print('Total Passed: ' + str(passed_amount)) - print('Total Failed: ' + str(failed_amount)) - print('Total Skipped: ' + str(skipped_amount) + "\n") - try: - for index in range(len(testCaseNameList)): - print(str(index+1) + ") " + str(testCaseNameList[index]) + " : " + str(testCaseStatusList[index])) - print(" ReportURL: " + str(testCaseReportURL[index])) - print(" FailureMsg: " + str(testCaseErrorMsg[index]) + "\n") - except Exception as e: - print('No Interop Test Cases Executed') + if reporting_client is not None: + print() + skipped_amount = 0 + # print('Perfecto TestCase Execution Status:', exitstatus) + passed_amount = sum(1 for result in session.results.values() if result.passed) + failed_amount = sum(1 for result in session.results.values() if result.failed) + skipped_amount = sum(1 for result in session.results.values() if result.skipped) + # print(f'There are {passed_amount} passed and {failed_amount} failed tests') + TotalExecutedCount = failed_amount + passed_amount + skipped_amount + print('\n------------------------------------') + print('TestCase Execution Summary') + print('------------------------------------') + print('Total TestCase Executed: ' + str(TotalExecutedCount)) + print('Total Passed: ' + str(passed_amount)) + print('Total Failed: ' + str(failed_amount)) + print('Total Skipped: ' + str(skipped_amount) + "\n") + try: + for index in range(len(testCaseNameList)): + print(str(index + 1) + ") " + str(testCaseNameList[index]) + " : " + str(testCaseStatusList[index])) + print(" ReportURL: " + str(testCaseReportURL[index])) + print(" FailureMsg: " + str(testCaseErrorMsg[index]) + "\n") + except Exception as e: + print('No Interop Test Cases Executed') + else: + pass + except Exception as e: + pass print('------------------------------------------------------------------\n\n\n\n') @pytest.fixture(scope="function") diff --git a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py index b79e45c23..79d1577c6 100644 --- a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py +++ b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py @@ -27,7 +27,8 @@ import allure if 'perfecto_libs' not in sys.path: sys.path.append(f'../libs/perfecto_libs') -pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_ios, pytest.mark.ios, pytest.mark.openRoaming, pytest.mark.bridge] +# pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_ios, pytest.mark.ios, pytest.mark.openRoaming, pytest.mark.bridge] +pytestmark = [pytest.mark.openRoaming] from iOS_lib import closeApp, openApp, ForgetProfileWifiConnection, deleteOpenRoamingInstalledProfile, verifyUploadDownloadSpeediOS, downloadInstallOpenRoamingProfile, ForgetWifiConnection, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown diff --git a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_NatMode.py b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_NatMode.py index 84df3c741..5c74b9e15 100644 --- a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_NatMode.py +++ b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_NatMode.py @@ -28,7 +28,8 @@ import allure if 'perfecto_libs' not in sys.path: sys.path.append(f'../libs/perfecto_libs') -pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_ios, pytest.mark.ios, pytest.mark.openRoaming, pytest.mark.nat] +# pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_ios, pytest.mark.ios, pytest.mark.openRoaming, pytest.mark.nat] +pytestmark = [pytest.mark.openRoaming] from iOS_lib import closeApp, openApp, ForgetProfileWifiConnection, deleteOpenRoamingInstalledProfile, verifyUploadDownloadSpeediOS, downloadInstallOpenRoamingProfile, ForgetWifiConnection, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown diff --git a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_vlan_mode.py b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_vlan_mode.py index 7398ff623..76c5d28d3 100644 --- a/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_vlan_mode.py +++ b/tests/e2e/interOp/iOS/OpenRoamingPassPoint/test_OpenRoaming_vlan_mode.py @@ -27,7 +27,8 @@ import allure if 'perfecto_libs' not in sys.path: sys.path.append(f'../libs/perfecto_libs') -pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_ios, pytest.mark.ios, pytest.mark.openRoaming, pytest.mark.vlan] +# pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_ios, pytest.mark.ios, pytest.mark.openRoaming, pytest.mark.vlan] +pytestmark = [pytest.mark.openRoaming] from iOS_lib import closeApp, openApp, ForgetProfileWifiConnection, deleteOpenRoamingInstalledProfile, verifyUploadDownloadSpeediOS, downloadInstallOpenRoamingProfile, ForgetWifiConnection, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown diff --git a/tests/fixtures_2x.py b/tests/fixtures_2x.py index bd9effe46..47c98909a 100644 --- a/tests/fixtures_2x.py +++ b/tests/fixtures_2x.py @@ -286,8 +286,20 @@ class Fixtures_2x: print("AP is Not Broadcasting Applied Config") allure.attach(name="Failed to Apply Config : Active Config in AP : ", body=str(ap_config_active)) time.sleep(10) + try: + iwinfo = ap_ssh.iwinfo() + allure.attach(name="iwinfo: ", body=str(iwinfo)) + + # tx_power, name = ap_ssh.gettxpower() + # allure.attach(name="interface name: ", body=str(name)) + # allure.attach(name="tx power: ", body=str(tx_power)) + except: + pass ap_logs = ap_ssh.logread() allure.attach(body=ap_logs, name="AP Logs: ") + + + try: ssid_info_sdk = instantiate_profile_obj.get_ssid_info() ap_wifi_data = ap_ssh.get_iwinfo() @@ -321,6 +333,13 @@ class Fixtures_2x: pass def teardown_session(): + iwinfo = ap_ssh.iwinfo() + allure.attach(name="iwinfo: ", body=str(iwinfo)) + + # tx_power, name = ap_ssh.gettxpower() + # allure.attach(name="interface name: ", body=str(name)) + # allure.attach(name="tx power: ", body=str(tx_power)) + ap_logs = ap_ssh.logread() allure.attach(body=ap_logs, name="AP Logs after test completion") print("\nTeardown")