mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2026-03-20 03:41:54 +00:00
Merge branch 'master' into wifi-3492
This commit is contained in:
2
.github/workflows/manual.yml
vendored
2
.github/workflows/manual.yml
vendored
@@ -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
|
||||
|
||||
290
.github/workflows/uc_interop.yml
vendored
Normal file
290
.github/workflows/uc_interop.yml
vendored
Normal file
@@ -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 <<EOF | kubectl apply -f -
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: "${{ steps.job.outputs.name }}"
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: tests
|
||||
image: ${{ env.DOCKER_SERVER }}/cloud-sdk-nightly:${{ github.run_id }}
|
||||
command:
|
||||
- /bin/bash
|
||||
- -x
|
||||
- -c
|
||||
- |
|
||||
cd tests
|
||||
pytest -m "${{ steps.marker.outputs.expression }}" -s -vvv --testbed=interop -o 'jobName=Github-Interop-${{ matrix.test_type }}' -o 'jobNumber=${{ github.run_number }}' --skip-testrail --alluredir=/tmp/allure-results
|
||||
ret=\$?
|
||||
# sleep some time to be able to download the Allure results
|
||||
sleep 60
|
||||
exit \$ret
|
||||
volumeMounts:
|
||||
- name: configuration
|
||||
mountPath: "/wlan-testing/tests/configuration.py"
|
||||
subPath: configuration
|
||||
readOnly: true
|
||||
imagePullSecrets:
|
||||
- name: tip-docker-registry-key
|
||||
restartPolicy: Never
|
||||
volumes:
|
||||
- name: configuration
|
||||
secret:
|
||||
secretName: configuration
|
||||
backoffLimit: 0
|
||||
EOF
|
||||
# wait for pod to spawn
|
||||
sleep 1
|
||||
|
||||
podname=$(kubectl get pods --no-headers -o custom-columns=":metadata.name" -l job-name="${{ steps.job.outputs.name }}" | sed "s/pod\///")
|
||||
|
||||
kubectl wait "pod/$podname" --for condition=ready
|
||||
|
||||
until [ -s test_everything.xml ]
|
||||
do
|
||||
sleep 10
|
||||
echo "waiting for tests to complete..."
|
||||
kubectl cp $podname:/wlan-testing/tests/test_everything.xml test_everything.xml >/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 }}"
|
||||
2
.github/workflows/uc_sanity.yml
vendored
2
.github/workflows/uc_sanity.yml
vendored
@@ -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
|
||||
|
||||
10
.github/workflows/ucentralgw-dev-deployment.yaml
vendored
10
.github/workflows/ucentralgw-dev-deployment.yaml
vendored
@@ -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"
|
||||
}
|
||||
]'
|
||||
|
||||
|
||||
10
.github/workflows/ucentralgw-qa-deployment.yaml
vendored
10
.github/workflows/ucentralgw-qa-deployment.yaml
vendored
@@ -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"
|
||||
}
|
||||
]'
|
||||
|
||||
|
||||
@@ -166,7 +166,11 @@ kafka:
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 700Mi
|
||||
memory: 1Gi
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 45
|
||||
livenessProbe:
|
||||
initialDelaySeconds: 60
|
||||
zookeeper:
|
||||
heapSize: 256
|
||||
resources:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user