mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-11-04 04:48:01 +00:00 
			
		
		
		
	Merge branch 'master' into WIFI-5733
This commit is contained in:
		
							
								
								
									
										136
									
								
								.github/actions/run-tests/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								.github/actions/run-tests/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,136 @@
 | 
				
			|||||||
 | 
					name: run tests on Kubernetes
 | 
				
			||||||
 | 
					description: create Kubernetes job that executes pytest code
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inputs:
 | 
				
			||||||
 | 
					  namespace:
 | 
				
			||||||
 | 
					    description: a name for the Kubernetes namespace that will be used
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					  testbed:
 | 
				
			||||||
 | 
					    description: the testbed string that will be passed to the --testbed parameter
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					  marker_expression:
 | 
				
			||||||
 | 
					    description: the marker expression that will be passed to the -m parameter
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					  configuration:
 | 
				
			||||||
 | 
					    description: the configuration string that will be used to create the configuration secret
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					  testing_docker_image:
 | 
				
			||||||
 | 
					    description: Docker image to use when executing tests
 | 
				
			||||||
 | 
					    required: true
 | 
				
			||||||
 | 
					  additional_args:
 | 
				
			||||||
 | 
					    description: additional arguments that will be passed to the pytest execution string
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					  allure_results_artifact_name:
 | 
				
			||||||
 | 
					    description: name of the artifact that the allure results will be uploaded to
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    default: allure-results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					runs:
 | 
				
			||||||
 | 
					  using: "composite"
 | 
				
			||||||
 | 
					  steps:
 | 
				
			||||||
 | 
					  - name: create and select namespace
 | 
				
			||||||
 | 
					    shell: bash
 | 
				
			||||||
 | 
					    run: |
 | 
				
			||||||
 | 
					      kubectl create ns ${{ inputs.namespace }}
 | 
				
			||||||
 | 
					      kubectl config set-context --current --namespace=${{ inputs.namespace }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - name: set job name
 | 
				
			||||||
 | 
					    shell: bash
 | 
				
			||||||
 | 
					    id: job
 | 
				
			||||||
 | 
					    run: echo "::set-output name=name::testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - name: create configuration.py secret
 | 
				
			||||||
 | 
					    shell: bash
 | 
				
			||||||
 | 
					    run: |
 | 
				
			||||||
 | 
					      cat << EOF > configuration.py
 | 
				
			||||||
 | 
					      ${{ inputs.configuration }}
 | 
				
			||||||
 | 
					      EOF
 | 
				
			||||||
 | 
					      kubectl create secret generic configuration --from-file=configuration=./configuration.py
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					  - name: run tests
 | 
				
			||||||
 | 
					    shell: bash
 | 
				
			||||||
 | 
					    run: |
 | 
				
			||||||
 | 
					      cat <<EOF | kubectl apply -f -
 | 
				
			||||||
 | 
					      apiVersion: batch/v1
 | 
				
			||||||
 | 
					      kind: Job
 | 
				
			||||||
 | 
					      metadata:
 | 
				
			||||||
 | 
					        name: "${{ steps.job.outputs.name }}"
 | 
				
			||||||
 | 
					      spec:
 | 
				
			||||||
 | 
					        template:
 | 
				
			||||||
 | 
					          metadata:
 | 
				
			||||||
 | 
					            annotations:
 | 
				
			||||||
 | 
					              cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
 | 
				
			||||||
 | 
					          spec:
 | 
				
			||||||
 | 
					            containers:
 | 
				
			||||||
 | 
					            - name: tests
 | 
				
			||||||
 | 
					              image: ${{ inputs.testing_docker_image }}
 | 
				
			||||||
 | 
					              resources:
 | 
				
			||||||
 | 
					                requests:
 | 
				
			||||||
 | 
					                  memory: "512Mi"
 | 
				
			||||||
 | 
					                  cpu: "250m"
 | 
				
			||||||
 | 
					                limits:
 | 
				
			||||||
 | 
					                  memory: "512Mi"
 | 
				
			||||||
 | 
					                  cpu: "250m"
 | 
				
			||||||
 | 
					              command:
 | 
				
			||||||
 | 
					                - /bin/bash
 | 
				
			||||||
 | 
					                - -x
 | 
				
			||||||
 | 
					                - -c
 | 
				
			||||||
 | 
					                - |
 | 
				
			||||||
 | 
					                  cd tests
 | 
				
			||||||
 | 
					                  pytest -m "${{ inputs.marker_expression }}" -s -vvv --testbed=${{ inputs.testbed }} --alluredir=/tmp/allure-results ${{ inputs.additional_args }}
 | 
				
			||||||
 | 
					                  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
 | 
				
			||||||
 | 
					            nodeSelector:
 | 
				
			||||||
 | 
					              env: tests
 | 
				
			||||||
 | 
					            tolerations:
 | 
				
			||||||
 | 
					            - key: "tests"
 | 
				
			||||||
 | 
					              operator: "Exists"
 | 
				
			||||||
 | 
					              effect: "NoSchedule"
 | 
				
			||||||
 | 
					            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 --timeout=600s
 | 
				
			||||||
 | 
					      kubectl logs -f $podname &
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      until [ -s test_everything.xml ]
 | 
				
			||||||
 | 
					      do
 | 
				
			||||||
 | 
					        sleep 10
 | 
				
			||||||
 | 
					        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: upload Allure results as artifact
 | 
				
			||||||
 | 
					    if: ${{ always() }}
 | 
				
			||||||
 | 
					    uses: actions/upload-artifact@v2
 | 
				
			||||||
 | 
					    with:
 | 
				
			||||||
 | 
					      name: ${{ inputs.allure_results_artifact_name }}
 | 
				
			||||||
 | 
					      path: allure-results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - name: cleanup
 | 
				
			||||||
 | 
					    if: ${{ always() }}
 | 
				
			||||||
 | 
					    shell: bash
 | 
				
			||||||
 | 
					    run: |
 | 
				
			||||||
 | 
					      kubectl delete ns "${{ inputs.namespace }}" --wait=true
 | 
				
			||||||
							
								
								
									
										384
									
								
								.github/workflows/interop.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										384
									
								
								.github/workflows/interop.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,10 +1,6 @@
 | 
				
			|||||||
name: interop testing
 | 
					name: interop testing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
env:
 | 
					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 credentials
 | 
				
			||||||
  AWS_EKS_NAME: tip-wlan-main
 | 
					  AWS_EKS_NAME: tip-wlan-main
 | 
				
			||||||
  AWS_DEFAULT_OUTPUT: json
 | 
					  AWS_DEFAULT_OUTPUT: json
 | 
				
			||||||
@@ -19,11 +15,6 @@ env:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
on:
 | 
					on:
 | 
				
			||||||
  workflow_dispatch:
 | 
					  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:
 | 
					  schedule:
 | 
				
			||||||
  - cron: '30 20 * * *'
 | 
					  - cron: '30 20 * * *'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -35,172 +26,203 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    # checkout needed repositories
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
    - name: Checkout Testing repo
 | 
					    - name: build and push Docker image
 | 
				
			||||||
      uses: actions/checkout@v2
 | 
					      uses: ./.github/actions/build-and-push-docker
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        path: wlan-testing
 | 
					        registry: tip-tip-wlan-cloud-docker-repo.jfrog.io
 | 
				
			||||||
 | 
					        registry_user: wlan-testing-cicd
 | 
				
			||||||
 | 
					        registry_password: ${{ secrets.DOCKER_USER_PASSWORD }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Checkout LANforge scripts
 | 
					  # interop-01
 | 
				
			||||||
      uses: actions/checkout@v2
 | 
					  test-galaxy-s9:
 | 
				
			||||||
      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
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    needs: [ build ]
 | 
					    needs: [ build ]
 | 
				
			||||||
    strategy:
 | 
					    continue-on-error: true
 | 
				
			||||||
      fail-fast: false
 | 
					 | 
				
			||||||
      max-parallel: 1
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        test_type: [android, ios]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    outputs:
 | 
					 | 
				
			||||||
      additional_markers: ${{ steps.marker.outputs.additional }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: get EKS access credentials
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: install Allure CLI tool
 | 
					    - name: run tests
 | 
				
			||||||
      run: |
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
        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::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 and interop_uc_sanity and client_connect"
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
          MARKER_EXPRESSION="interop_ios and interop_uc_sanity and client_connect"
 | 
					 | 
				
			||||||
        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:
 | 
					 | 
				
			||||||
            metadata:
 | 
					 | 
				
			||||||
              annotations:
 | 
					 | 
				
			||||||
                cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
 | 
					 | 
				
			||||||
            spec:
 | 
					 | 
				
			||||||
              containers:
 | 
					 | 
				
			||||||
              - name: tests
 | 
					 | 
				
			||||||
                image: ${{ env.DOCKER_SERVER }}/cloud-sdk-nightly:${{ github.run_id }}
 | 
					 | 
				
			||||||
                resources:
 | 
					 | 
				
			||||||
                  requests:
 | 
					 | 
				
			||||||
                    memory: "512Mi"
 | 
					 | 
				
			||||||
                    cpu: "250m"
 | 
					 | 
				
			||||||
                  limits:
 | 
					 | 
				
			||||||
                    memory: "512Mi"
 | 
					 | 
				
			||||||
                    cpu: "250m"
 | 
					 | 
				
			||||||
                command:
 | 
					 | 
				
			||||||
                  - /bin/bash
 | 
					 | 
				
			||||||
                  - -x
 | 
					 | 
				
			||||||
                  - -c
 | 
					 | 
				
			||||||
                  - |
 | 
					 | 
				
			||||||
                    cd tests
 | 
					 | 
				
			||||||
                    pytest -m "${{ steps.marker.outputs.expression }}" -s -vvv --testbed=interop-03 -o 'jobName=Github-Interop-${{ matrix.test_type }}' -o 'jobNumber=${{ github.run_number }}' --alluredir=/tmp/allure-results --skip-lanforge
 | 
					 | 
				
			||||||
                    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
 | 
					 | 
				
			||||||
              nodeSelector:
 | 
					 | 
				
			||||||
                env: tests
 | 
					 | 
				
			||||||
              tolerations:
 | 
					 | 
				
			||||||
              - key: "tests"
 | 
					 | 
				
			||||||
                operator: "Exists"
 | 
					 | 
				
			||||||
                effect: "NoSchedule"
 | 
					 | 
				
			||||||
              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 --timeout=600s
 | 
					 | 
				
			||||||
        kubectl logs -f $podname &
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        until [ -s test_everything.xml ]
 | 
					 | 
				
			||||||
        do
 | 
					 | 
				
			||||||
          sleep 10
 | 
					 | 
				
			||||||
          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: upload Allure results as artifact
 | 
					 | 
				
			||||||
      if: ${{ always() }}
 | 
					 | 
				
			||||||
      uses: actions/upload-artifact@v2
 | 
					 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        name: allure-results-${{ matrix.test_type }}
 | 
					        namespace: interop-${{ github.run_id }}-galaxy-s9
 | 
				
			||||||
        path: allure-results
 | 
					        testbed: interop-01
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and android"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-android='Galaxy S9' -o 'jobName=Github-Interop-galaxy-s9' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-galaxy-s9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: cleanup
 | 
					  test-iphone-12:
 | 
				
			||||||
      if: ${{ always() }}
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
      run: |
 | 
					    needs: [ test-galaxy-s9 ]
 | 
				
			||||||
        kubectl delete job "${{ steps.job.outputs.name }}" --wait=true --ignore-not-found=true
 | 
					    continue-on-error: true
 | 
				
			||||||
        kubectl delete secret configuration --wait=true --ignore-not-found=true
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: run tests
 | 
				
			||||||
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        namespace: interop-${{ github.run_id }}-iphone-12
 | 
				
			||||||
 | 
					        testbed: interop-01
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and ios"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-iOS='iPhone-12' -o 'jobName=Github-Interop-iphone-12' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-iphone-12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test-pixel-4:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: [ test-iphone-12 ]
 | 
				
			||||||
 | 
					    continue-on-error: true
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: run tests
 | 
				
			||||||
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        namespace: interop-${{ github.run_id }}-pixel-4
 | 
				
			||||||
 | 
					        testbed: interop-01
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and android"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-android='Pixel 4' -o 'jobName=Github-Interop-pixel-4' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-pixel-4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # interop-02
 | 
				
			||||||
 | 
					  test-galaxy-s10:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: [ build ]
 | 
				
			||||||
 | 
					    continue-on-error: true
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: run tests
 | 
				
			||||||
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        namespace: interop-${{ github.run_id }}-galaxy-s10
 | 
				
			||||||
 | 
					        testbed: interop-02
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and android"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-android='Galaxy S10.*' -o 'jobName=Github-Interop-galaxy-s10' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-galaxy-s10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test-iphone-7:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: [ test-galaxy-s10 ]
 | 
				
			||||||
 | 
					    continue-on-error: true
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: run tests
 | 
				
			||||||
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        namespace: interop-${{ github.run_id }}-iphone-7
 | 
				
			||||||
 | 
					        testbed: interop-02
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and ios"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-iOS='iPhone-7' -o 'jobName=Github-Interop-iphone-7' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-iphone-7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test-iphone-11:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: [ test-iphone-7 ]
 | 
				
			||||||
 | 
					    continue-on-error: true
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: run tests
 | 
				
			||||||
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        namespace: interop-${{ github.run_id }}-iphone-11
 | 
				
			||||||
 | 
					        testbed: interop-02
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and ios"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-iOS='iPhone-11' -o 'jobName=Github-Interop-iphone-11' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-iphone-11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # interop-03
 | 
				
			||||||
 | 
					  test-galaxy-s20:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: [ build ]
 | 
				
			||||||
 | 
					    continue-on-error: true
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: run tests
 | 
				
			||||||
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        namespace: interop-${{ github.run_id }}-galaxy-s20
 | 
				
			||||||
 | 
					        testbed: interop-03
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and android"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-android='Galaxy S20' -o 'jobName=Github-Interop-galaxy-s20' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-galaxy-s20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test-iphone-xr:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    needs: [ test-galaxy-s20 ]
 | 
				
			||||||
 | 
					    continue-on-error: true
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: get EKS access credentials
 | 
				
			||||||
 | 
					      run: aws eks update-kubeconfig  --name ${{ env.AWS_EKS_NAME }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: run tests
 | 
				
			||||||
 | 
					      uses: ./.github/actions/run-tests
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        namespace: interop-${{ github.run_id }}-iphone-xr
 | 
				
			||||||
 | 
					        testbed: interop-03
 | 
				
			||||||
 | 
					        marker_expression: "interop_uc_sanity and client_connect and ios"
 | 
				
			||||||
 | 
					        configuration: "${{ secrets.LAB_CONFIGURATION }}"
 | 
				
			||||||
 | 
					        testing_docker_image: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }}
 | 
				
			||||||
 | 
					        additional_args: "-o model-iOS='iPhone-XR' -o 'jobName=Github-Interop-iphone-xr' -o 'jobNumber=${{ github.run_number }}' --skip-lanforge"
 | 
				
			||||||
 | 
					        allure_results_artifact_name: allure-results-iphone-xr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  report:
 | 
					  report:
 | 
				
			||||||
    needs: [ test ]
 | 
					    needs: [ test-iphone-11, test-iphone-xr, test-pixel-4 ]
 | 
				
			||||||
    if: always()
 | 
					    if: always()
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      max-parallel: 1
 | 
				
			||||||
 | 
					      fail-fast: false
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        device:
 | 
				
			||||||
 | 
					        - galaxy-s9
 | 
				
			||||||
 | 
					        - galaxy-s10
 | 
				
			||||||
 | 
					        - galaxy-s20
 | 
				
			||||||
 | 
					        - pixel-4
 | 
				
			||||||
 | 
					        - iphone-7
 | 
				
			||||||
 | 
					        - iphone-xr
 | 
				
			||||||
 | 
					        - iphone-11
 | 
				
			||||||
 | 
					        - iphone-12
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - name: install Allure CLI tool
 | 
					    - name: install Allure CLI tool
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
@@ -209,13 +231,8 @@ jobs:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    - uses: actions/download-artifact@v2
 | 
					    - uses: actions/download-artifact@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        name: allure-results-android
 | 
					        name: allure-results-${{ matrix.device }}
 | 
				
			||||||
        path: allure-results-android
 | 
					        path: allure-results
 | 
				
			||||||
 | 
					 | 
				
			||||||
    - uses: actions/download-artifact@v2
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        name: allure-results-ios
 | 
					 | 
				
			||||||
        path: allure-results-ios
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: checkout testing repo
 | 
					    - name: checkout testing repo
 | 
				
			||||||
      uses: actions/checkout@v2
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
@@ -231,14 +248,14 @@ jobs:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    - name: copy history into results
 | 
					    - name: copy history into results
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        if [ -e "reports/interop/interop/latest" ] ; then
 | 
					        if [ -e "reports/interop/${{ matrix.device }}/latest" ] ; then
 | 
				
			||||||
          cp -r reports/interop/interop/latest/history/ allure-results-ios/history
 | 
					          cp -r reports/interop/${{ matrix.device }}/latest/history/ allure-results/history
 | 
				
			||||||
          cp -r reports/interop/interop/latest/history/ allure-results-android/history
 | 
					 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: add report metadata
 | 
					    - name: add report metadata
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        cat << EOF >> allure-results-android/environment.properties
 | 
					        cat << EOF >> allure-results/environment.properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Testbed=interop
 | 
					        Testbed=interop
 | 
				
			||||||
        Tests.CommitId=$(cd wlan-testing && git rev-parse --short HEAD)
 | 
					        Tests.CommitId=$(cd wlan-testing && git rev-parse --short HEAD)
 | 
				
			||||||
        CiRun.Id=${{ github.run_id }}
 | 
					        CiRun.Id=${{ github.run_id }}
 | 
				
			||||||
@@ -247,28 +264,27 @@ jobs:
 | 
				
			|||||||
        EOF
 | 
					        EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: generate Allure report
 | 
					    - name: generate Allure report
 | 
				
			||||||
      run: allure-${{ env.ALLURE_CLI_VERSION }}/bin/allure generate allure-results-android allure-results-ios
 | 
					      run: allure-${{ env.ALLURE_CLI_VERSION }}/bin/allure generate allure-results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: upload Allure report as artifact
 | 
					    - name: upload Allure report as artifact
 | 
				
			||||||
      uses: actions/upload-artifact@v2
 | 
					      uses: actions/upload-artifact@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        name: allure-report
 | 
					        name: allure-report-${{ matrix.device }}
 | 
				
			||||||
        path: allure-report
 | 
					        path: allure-report
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # doing this to be able to aggregate multiple reports together later on
 | 
					    # doing this to be able to aggregate multiple reports together later on
 | 
				
			||||||
    - name: copy results into report
 | 
					    - name: copy results into report
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        mkdir -p allure-report/results
 | 
					        mkdir -p allure-report/results
 | 
				
			||||||
        cp -r allure-results-android/* allure-report/results
 | 
					        cp -r allure-results/* allure-report/results
 | 
				
			||||||
        cp -r allure-results-ios/* allure-report/results
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: copy new report
 | 
					    - name: copy new report
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        mkdir -p reports/interop/interop
 | 
					        mkdir -p reports/interop/${{ matrix.device }}
 | 
				
			||||||
        cp -Tr allure-report reports/interop/interop/${{ github.run_number }}
 | 
					        cp -Tr allure-report reports/interop/${{ matrix.device }}/${{ github.run_number }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: update latest symlink
 | 
					    - name: update latest symlink
 | 
				
			||||||
      working-directory: reports/interop/interop
 | 
					      working-directory: reports/interop/${{ matrix.device }}
 | 
				
			||||||
      run: ln -fns ${{ github.run_number }} latest
 | 
					      run: ln -fns ${{ github.run_number }} latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: generate new index.html
 | 
					    - name: generate new index.html
 | 
				
			||||||
@@ -296,15 +312,19 @@ jobs:
 | 
				
			|||||||
      uses: ./wlan-testing/.github/actions/allure-report-to-s3
 | 
					      uses: ./wlan-testing/.github/actions/allure-report-to-s3
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        test_type: interop
 | 
					        test_type: interop
 | 
				
			||||||
        testbed: interop
 | 
					        testbed: ${{ matrix.device }}
 | 
				
			||||||
        report_path: allure-report
 | 
					        report_path: allure-report
 | 
				
			||||||
        s3_access_key_id: ${{ secrets.ALLURE_S3_ACCESS_KEY_ID }}
 | 
					        s3_access_key_id: ${{ secrets.ALLURE_S3_ACCESS_KEY_ID }}
 | 
				
			||||||
        s3_access_key_secret: ${{ secrets.ALLURE_S3_ACCESS_KEY_SECRET }}
 | 
					        s3_access_key_secret: ${{ secrets.ALLURE_S3_ACCESS_KEY_SECRET }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  cleanup:
 | 
					  cleanup:
 | 
				
			||||||
    needs: [ test ]
 | 
					    needs: [ test-iphone-11, test-iphone-xr, test-pixel-4 ]
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    if: always()
 | 
					    if: always()
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
    - name: cleanup Docker image
 | 
					    - 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 }}"
 | 
					      uses: ./.github/actions/cleanup-docker
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        registry_user: wlan-testing-cicd
 | 
				
			||||||
 | 
					        registry_password: ${{ secrets.DOCKER_USER_PASSWORD }}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ from cloudshell.api.cloudshell_api import UpdateTopologyGlobalInputsRequest, Upd
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from common import get_session
 | 
					from common import get_session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_attribute_value(cloudshell_session, attribute):
 | 
					def get_attribute_value(cloudshell_session, attribute):
 | 
				
			||||||
    if attribute.Type == 'Boolean':
 | 
					    if attribute.Type == 'Boolean':
 | 
				
			||||||
        return True if attribute.Value == 'True' else False
 | 
					        return True if attribute.Value == 'True' else False
 | 
				
			||||||
@@ -26,7 +27,7 @@ def main():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    config = {
 | 
					    config = {
 | 
				
			||||||
        'controller': {},
 | 
					        'controller': {},
 | 
				
			||||||
        'access_point':[],
 | 
					        'access_point': [],
 | 
				
			||||||
        'traffic_generator': {}
 | 
					        'traffic_generator': {}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -35,8 +36,9 @@ def main():
 | 
				
			|||||||
            continue
 | 
					            continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        config['controller']['url'] = f'https://sec-{res_id.split("-")[0]}.cicd.lab.wlan.tip.build:16001'
 | 
					        config['controller']['url'] = f'https://sec-{res_id.split("-")[0]}.cicd.lab.wlan.tip.build:16001'
 | 
				
			||||||
        config['controller']['username'] = next(attr.Value for attr in service.Attributes if attr.Name == f'{service.ServiceName}.User')
 | 
					        config['controller']['username'] = next(
 | 
				
			||||||
        #config['controller']['password'] = next(attr.Value for attr in service.Attributes if attr.Name == f'{service.ServiceName}.Password')
 | 
					            attr.Value for attr in service.Attributes if attr.Name == f'{service.ServiceName}.User')
 | 
				
			||||||
 | 
					        # config['controller']['password'] = next(attr.Value for attr in service.Attributes if attr.Name == f'{service.ServiceName}.Password')
 | 
				
			||||||
        config['controller']['password'] = 'OpenWifi%123'
 | 
					        config['controller']['password'] = 'OpenWifi%123'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for resource in resources_in_reservation:
 | 
					    for resource in resources_in_reservation:
 | 
				
			||||||
@@ -67,8 +69,8 @@ def main():
 | 
				
			|||||||
                    'ip': tf_config['ip'],
 | 
					                    'ip': tf_config['ip'],
 | 
				
			||||||
                    'port': tf_config['port'],
 | 
					                    'port': tf_config['port'],
 | 
				
			||||||
                    'ssh_port': tf_config['ssh_port'],
 | 
					                    'ssh_port': tf_config['ssh_port'],
 | 
				
			||||||
                    '2.4G-Radio': [tf_config['lf_2dot4G_Radio']],
 | 
					                    '2.4G-Radio': tf_config['lf_2dot4G_Radio'].replace(' ', '').split(','),
 | 
				
			||||||
                    '5G-Radio': [tf_config['lf_5G_Radio']],
 | 
					                    '5G-Radio': tf_config['lf_5G_Radio'].replace(' ', '').split(','),
 | 
				
			||||||
                    'AX-Radio': tf_config['AX_Radio'].replace(' ', '').split(','),
 | 
					                    'AX-Radio': tf_config['AX_Radio'].replace(' ', '').split(','),
 | 
				
			||||||
                    'upstream': tf_config['Upstream'],
 | 
					                    'upstream': tf_config['Upstream'],
 | 
				
			||||||
                    'upstream_subnet': tf_config['upstream_subnet'],
 | 
					                    'upstream_subnet': tf_config['upstream_subnet'],
 | 
				
			||||||
@@ -83,5 +85,6 @@ def main():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    print(repr(config))
 | 
					    print(repr(config))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    main()
 | 
					    main()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -920,12 +920,11 @@ def get_ip_address_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
 | 
				
			|||||||
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
					    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        time.sleep(2)
 | 
					        time.sleep(1)
 | 
				
			||||||
        driver.implicitly_wait(2)
 | 
					 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            print("Verifying Connected Wifi Connection")
 | 
					            print("Verifying Connected Wifi Connection")
 | 
				
			||||||
            report.step_start("Loading Wifi Page")
 | 
					            report.step_start("Loading Wifi Page")
 | 
				
			||||||
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
					            element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//XCUIElementTypeCell[@name='Wi-Fi']")))
 | 
				
			||||||
            element.click()
 | 
					            element.click()
 | 
				
			||||||
        except NoSuchElementException:
 | 
					        except NoSuchElementException:
 | 
				
			||||||
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
					            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
				
			||||||
@@ -948,7 +947,7 @@ def get_ip_address_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
 | 
				
			|||||||
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
					                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
				
			||||||
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
					                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
				
			||||||
                        except:
 | 
					                        except:
 | 
				
			||||||
                            print("switch is OFF")
 | 
					                            print("Switch is OFF")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
					                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
				
			||||||
                            print("WIFI Switch is ON")
 | 
					                            print("WIFI Switch is ON")
 | 
				
			||||||
@@ -983,17 +982,16 @@ def get_ip_address_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        print("getting in to Additional details")
 | 
					        print("getting in to Additional details")
 | 
				
			||||||
        additional_details_element = driver.find_element_by_xpath(
 | 
					        additional_details_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")))
 | 
				
			||||||
            "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
					 | 
				
			||||||
        additional_details_element.click()
 | 
					        additional_details_element.click()
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            print("Forget Connected Network")
 | 
					            print("Forget Connected Network")
 | 
				
			||||||
            forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
 | 
					            forget_ssid = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
				
			||||||
            forget_ssid.click()
 | 
					            forget_ssid.click()
 | 
				
			||||||
            print("Forget old ssid")
 | 
					            print("Forget old ssid")
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                report.step_start("Forget SSID popup1")
 | 
					                report.step_start("Forget SSID popup1")
 | 
				
			||||||
                forget_ssid_popup = driver.find_element_by_xpath("//*[@label='Forget']")
 | 
					                forget_ssid_popup = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
				
			||||||
                forget_ssid_popup.click()
 | 
					                forget_ssid_popup.click()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                print("**alert** Forget SSID popup killed **alert**")
 | 
					                print("**alert** Forget SSID popup killed **alert**")
 | 
				
			||||||
@@ -1053,7 +1051,6 @@ def get_ip_address_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # ---------------------Set Password-------------------------------
 | 
					    # ---------------------Set Password-------------------------------
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        driver.implicitly_wait(5)
 | 
					 | 
				
			||||||
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
					        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
				
			||||||
        wifiPassword.send_keys(WifiPass)
 | 
					        wifiPassword.send_keys(WifiPass)
 | 
				
			||||||
    except NoSuchElementException:
 | 
					    except NoSuchElementException:
 | 
				
			||||||
@@ -1062,8 +1059,7 @@ def get_ip_address_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # ---------------------Click on join-------------------------------
 | 
					    # ---------------------Click on join-------------------------------
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        driver.implicitly_wait(5)
 | 
					        joinBTN = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Join']")))
 | 
				
			||||||
        joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
					 | 
				
			||||||
        joinBTN.click()
 | 
					        joinBTN.click()
 | 
				
			||||||
    except Exception as e:
 | 
					    except Exception as e:
 | 
				
			||||||
        print("Join Button Not Enabled...Password may not be needed")
 | 
					        print("Join Button Not Enabled...Password may not be needed")
 | 
				
			||||||
@@ -1103,9 +1099,8 @@ def get_ip_address_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            time.sleep(2)
 | 
					            time.sleep(2)
 | 
				
			||||||
            driver.implicitly_wait(2)
 | 
					 | 
				
			||||||
            report.step_start("Forget Network")
 | 
					            report.step_start("Forget Network")
 | 
				
			||||||
            forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
 | 
					            forget_ssid = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
				
			||||||
            forget_ssid.click()
 | 
					            forget_ssid.click()
 | 
				
			||||||
            print("Forget old ssid")
 | 
					            print("Forget old ssid")
 | 
				
			||||||
            # time.sleep(2)
 | 
					            # time.sleep(2)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user