mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-10-30 18:38:06 +00:00 
			
		
		
		
	[WIFI-5976] integrate Quali advanced blueprint into work (#305)
* Add Quali Advance Lab reservation to workflow and adapt reservation script Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Adopt namespace normalizing from Quali sanity workflow Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Separate Quali advanced and static advanced workflow Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Remove cron scheduling of static advanced workflow and add different Quali reservation duration for advance tests Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Fix conditional duration setting Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Set reservation duration to 12 hours for advance tests Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Apply newest changes from master branch Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
This commit is contained in:
		
							
								
								
									
										2
									
								
								.github/workflows/advanced.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/advanced.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,8 +5,6 @@ env: | ||||
|  | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   schedule: | ||||
|   - cron: '30 20 * * *' | ||||
|  | ||||
| defaults: | ||||
|   run: | ||||
|   | ||||
							
								
								
									
										621
									
								
								.github/workflows/quali-advanced.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										621
									
								
								.github/workflows/quali-advanced.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,621 @@ | ||||
| name: Quali advanced testing | ||||
|  | ||||
| env: | ||||
|   ALLURE_CLI_VERSION: 2.14.0 | ||||
|  | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|     inputs: | ||||
|       openwifi_revision: | ||||
|         required: true | ||||
|         default: 'main' | ||||
|         description: 'revision of the Open Wifi Helm chart' | ||||
|       ap_models: | ||||
|         required: true | ||||
|         default: 'EAP102,cig_wf194c' | ||||
|         description: 'the AP models to test' | ||||
|       ap_version: | ||||
|         required: true | ||||
|         default: 'next-latest' | ||||
|         description: 'revision of firmware to flash on AP, <branch>-<commit>' | ||||
|       marker_expression: | ||||
|         required: true | ||||
|         default: 'advance' | ||||
|         description: 'Marker expression to select tests to execute' | ||||
|   schedule: | ||||
|   - cron: '30 20 * * *' | ||||
|  | ||||
| defaults: | ||||
|   run: | ||||
|     shell: bash | ||||
|  | ||||
| jobs: | ||||
|   vars: | ||||
|     runs-on: ubuntu-latest | ||||
|     outputs: | ||||
|       openwifi_revision: ${{ steps.vars.outputs.openwifi}} | ||||
|       ap_models: ${{ steps.vars.outputs.ap_models}} | ||||
|       ap_version: ${{ steps.vars.outputs.ap_version}} | ||||
|       marker_expression: ${{ steps.vars.outputs.marker_expression }} | ||||
|  | ||||
|     steps: | ||||
|       - name: set variables | ||||
|         id: vars | ||||
|         run: | | ||||
|           echo ::set-output name=openwifi::$(echo "${{ github.event.inputs.openwifi_revision || 'main' }}") | ||||
|           echo ::set-output name=ap_models::$(echo "${{ github.event.inputs.ap_models || 'EAP102,cig_wf194c' }}") | ||||
|           echo ::set-output name=ap_version::$(echo "${{ github.event.inputs.ap_version || 'next-latest' }}") | ||||
|           echo ::set-output name=marker_expression::$(echo "${{ github.event.inputs.marker_expression || 'advance' }}") | ||||
|  | ||||
|   generate-matrix: | ||||
|     name: generate AP model matrix | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: vars | ||||
|     outputs: | ||||
|       matrix: ${{ steps.set-matrix.outputs.matrix }} | ||||
|     steps: | ||||
|     - name: generate-matrix | ||||
|       id: set-matrix | ||||
|       run: | | ||||
|         AP_MODELS="${{ needs.vars.outputs.ap_models }}" | ||||
|         AP_MODELS=$(echo $AP_MODELS | sed "s/,/\",\"/g" | sed 's/^/[\"/g' | sed 's/$/\"]/g') | ||||
|         AP_MODELS=$(echo "$AP_MODELS" | jq -c 'map({"ap_model":.})') | ||||
|         echo "::set-output name=matrix::{\"include\":${AP_MODELS}}" | ||||
|  | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - name: build and push Docker image | ||||
|       uses: ./.github/actions/build-and-push-docker | ||||
|       with: | ||||
|         registry: tip-tip-wlan-cloud-docker-repo.jfrog.io | ||||
|         registry_user: wlan-testing-cicd | ||||
|         registry_password: ${{ secrets.DOCKER_USER_PASSWORD }} | ||||
|  | ||||
|   test: | ||||
|     runs-on: [ self-hosted, small ] | ||||
|     needs: [ vars, generate-matrix, build ] | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }} | ||||
|     env: | ||||
|       AWS_EKS_NAME: tip-wlan-main | ||||
|       AWS_DEFAULT_OUTPUT: json | ||||
|       AWS_DEFAULT_REGION: us-east-2 | ||||
|       AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | ||||
|       AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CLIENT_ID }} | ||||
|       AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CLIENT_KEY }} | ||||
|       CLOUDSHELL_URL: quali-cloudshell.lab.wlan.tip.build | ||||
|       CLOUDSHELL_USER: ${{ secrets.CLOUDSHELL_USER}} | ||||
|       CLOUDSHELL_PASSWORD: ${{ secrets.CLOUDSHELL_PASSWORD }} | ||||
|       MARKER_EXPRESSION: ${{ needs.vars.outputs.marker_expression }} | ||||
|  | ||||
|     steps: | ||||
|     - name: install aws CLI tool | ||||
|       run: | | ||||
|         curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" | ||||
|         unzip awscliv2.zip | ||||
|         sudo ./aws/install | ||||
|     - name: install kubectl | ||||
|       run: | | ||||
|         curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" | ||||
|         sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl | ||||
|  | ||||
|     - name: Set up Python | ||||
|       uses: actions/setup-python@v2 | ||||
|       with: | ||||
|         python-version: '3.8' | ||||
|  | ||||
|     - name: checkout testing repo | ||||
|       uses: actions/checkout@v2 | ||||
|       with: | ||||
|         path: wlan-testing | ||||
|  | ||||
|     - name: install dependencies | ||||
|       run: pip install -r wlan-testing/.quali/requirements.txt | ||||
|  | ||||
|     - name: start reservation | ||||
|       id: start | ||||
|       run: | | ||||
|         RES_ID=$(python wlan-testing/.quali/start_reservation.py --openwifi-version "${{ needs.vars.outputs.openwifi_revision }}" --ap-model "${{ matrix.ap_model }}" --blueprint "Advance Lab") | ||||
|         echo ::set-output name=res_id::"$RES_ID" | ||||
|  | ||||
|     - name: set reservation identifier | ||||
|       id: reservation | ||||
|       run: echo ::set-output name=identifier::$(echo ${{ steps.start.outputs.res_id }} | cut -d "-" -f 1) | ||||
|  | ||||
|     - 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::advanced-ci-${{ github.run_number }}" | ||||
|  | ||||
|     - name: prepare namespace | ||||
|       id: namespace | ||||
|       run: | | ||||
|         NAMESPACE="testing-${{ github.run_id }}-$(echo ${{ matrix.ap_model }} | tr '[:upper:]' '[:lower:]' | tr '_' '-')" | ||||
|         kubectl create ns $NAMESPACE | ||||
|         kubectl config set-context --current --namespace=$NAMESPACE | ||||
|         echo "::set-output name=name::${NAMESPACE}" | ||||
|  | ||||
|     - name: prepare configuration | ||||
|       run: | | ||||
|         cat << EOF > configuration.py | ||||
|         Customer = "" | ||||
|         server = "" | ||||
|         CONFIGURATION = { | ||||
|           "advanced": $(python wlan-testing/.quali/get_configuration.py ${{ steps.start.outputs.res_id }}) | ||||
|         } | ||||
|  | ||||
|         open_flow = {} | ||||
|  | ||||
|         RADIUS_SERVER_DATA = { | ||||
|             "ip": "10.10.1.221", | ||||
|             "port": 1812, | ||||
|             "secret": "testing123", | ||||
|             "user": "user", | ||||
|             "password": "password", | ||||
|             "pk_password": "whatever" | ||||
|         } | ||||
|  | ||||
|         RADIUS_ACCOUNTING_DATA = { | ||||
|             "ip": "10.10.1.221", | ||||
|             "port": 1813, | ||||
|             "secret": "testing123", | ||||
|             "user": "user", | ||||
|             "password": "password", | ||||
|             "pk_password": "whatever" | ||||
|         } | ||||
|  | ||||
|         PASSPOINT_RADIUS_SERVER_DATA = { | ||||
|             "ip": "52.234.179.191", | ||||
|             "port": 11812, | ||||
|             "secret": "yeababy20!", | ||||
|             "user": "nolaradius", | ||||
|             "password": "nolastart", | ||||
|             "pk_password": "whatever" | ||||
|         } | ||||
|  | ||||
|         PASSPOINT_RADIUS_ACCOUNTING_SERVER_DATA = { | ||||
|             "ip": "52.234.179.191", | ||||
|             "port": 11813, | ||||
|             "secret": "yeababy20!" | ||||
|         } | ||||
|  | ||||
|         PASSPOINT_PROVIDER_INFO = { | ||||
|             "mcc": None, | ||||
|             "mnc": None, | ||||
|             "network": None, | ||||
|             "nai_realms": { | ||||
|                 "domain": "oss.ameriband.com", | ||||
|                 "encoding": 0, | ||||
|                 "eap_map": {"EAP-TTLS with username/password": ["Credential Type:username/password", | ||||
|                                                                 "Non-EAP Inner Authentication Type:MSCHAPV2"]} | ||||
|             }, | ||||
|             "osu_nai_standalone": "anonymous@ameriband.com", | ||||
|             "osu_nai_shared": "anonymous@ameriband.com", | ||||
|             "roaming_oi": [] | ||||
|         } | ||||
|  | ||||
|         PASSPOINT_OPERATOR_INFO = { | ||||
|             "osen": "Disabled", | ||||
|             "domain_name_list": ["telecominfraproject.atlassian.net"], | ||||
|             "operator_names": [ | ||||
|                 {"locale": "eng", "name": "Default friendly passpoint_operator name"}, | ||||
|                 {"locale": "fra", "name": "Nom de l'opérateur convivial par défaut"} | ||||
|             ] | ||||
|         } | ||||
|  | ||||
|         PASSPOINT_VENUE_INFO = { | ||||
|             "venue_type": {"group": "Business", "type": "Police Station"}, | ||||
|             "venue_names": [ | ||||
|                 {"locale": "eng", "name": "Example passpoint_venue", "url": "http://www.example.com/info-eng"}, | ||||
|                 {"locale": "fra", "name": "Exemple de lieu", "url": "http://www.example.com/info-fra"} | ||||
|             ] | ||||
|         } | ||||
|  | ||||
|         PASSPOINT_PROFILE_INFO = { | ||||
|             "profile_download_url_ios": "https://onboard.almondlabs.net/ttls/AmeriBand-Profile.mobileconfig", | ||||
|             "profile_download_url_android": "https://onboard.almondlabs.net/ttls/androidconfig.cfg", | ||||
|             "profile_name_on_device": "AmeriBand", | ||||
|             "radius_configuration": { | ||||
|                 "user_defined_nas_id": "FB001AP001", | ||||
|                 "operator_id": "AmeribandTIP", | ||||
|                 "radius_acounting_service_interval": 60 | ||||
|             }, | ||||
|             "interworking_hs2dot0": "Enabled", | ||||
|             "hessid": None, | ||||
|             "access_network": { | ||||
|                 "Access Network Type": "Free Public Network", | ||||
|                 "Authentication Type": "Acceptance of Terms & Conditions", | ||||
|                 "Emergency Services Reachable": "Enabled", | ||||
|                 "Unauthenticated Emergency Service": "Disabled", | ||||
|             }, | ||||
|             "ip_connectivity": { | ||||
|                 "Internet Connectivity": "Enabled", | ||||
|                 "IP Address Type": "Public IPv4 Address Available", | ||||
|                 "Connection Capability": [{"status": "open", "protocol": "TCP", "port": 8888}], | ||||
|                 "ANQP Domain ID": 1234, | ||||
|                 "GAS Address 3 Behaviour": "P2P Spec Workaround From Request", | ||||
|                 "Disable DGAF": False | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         TEST_CASES = { | ||||
|             "ap_upgrade": 2233, | ||||
|             "5g_wpa2_bridge": 2236, | ||||
|             "2g_wpa2_bridge": 2237, | ||||
|             "5g_wpa_bridge": 2419, | ||||
|             "2g_wpa_bridge": 2420, | ||||
|             "2g_wpa_nat": 4323, | ||||
|             "5g_wpa_nat": 4324, | ||||
|             "2g_wpa2_nat": 4325, | ||||
|             "5g_wpa2_nat": 4326, | ||||
|             "2g_wpa2_eap_ttls_bridge": 5214, | ||||
|             "5g_wpa2_eap_ttls_bridge": 5215, | ||||
|             "2g_wpa2_eap_ttls_nat": 5216, | ||||
|             "5g_wpa2_eap_ttls_nat": 5217, | ||||
|             "cloud_connection": 5222, | ||||
|             "cloud_fw": 5247, | ||||
|             "5g_wpa2_vlan": 5248, | ||||
|             "5g_wpa_vlan": 5249, | ||||
|             "5g_wpa2_eap_ttls_vlan": 5250, | ||||
|             "2g_wpa2_vlan": 5251, | ||||
|             "2g_wpa_vlan": 5252, | ||||
|             "2g_wpa2_eap_ttls_vlan": 5253, | ||||
|             "cloud_ver": 5540, | ||||
|             "bridge_vifc": 5541, | ||||
|             "nat_vifc": 5542, | ||||
|             "vlan_vifc": 5543, | ||||
|             "bridge_vifs": 5544, | ||||
|             "nat_vifs": 5545, | ||||
|             "vlan_vifs": 5546, | ||||
|             "upgrade_api": 5547, | ||||
|             "create_fw": 5548, | ||||
|             "ap_profile_bridge": 5641, | ||||
|             "ap_profile_nat": 5642, | ||||
|             "ap_profile_vlan": 5643, | ||||
|             "ssid_2g_wpa2_eap_bridge": 5644, | ||||
|             "ssid_2g_wpa2_bridge": 5645, | ||||
|             "ssid_2g_wpa_bridge": 5646, | ||||
|             "ssid_5g_wpa2_eap_bridge": 5647, | ||||
|             "ssid_5g_wpa2_bridge": 5648, | ||||
|             "ssid_5g_wpa_bridge": 5649, | ||||
|             "ssid_2g_wpa2_eap_nat": 5650, | ||||
|             "ssid_2g_wpa2_nat": 5651, | ||||
|             "ssid_2g_wpa_nat": 5652, | ||||
|             "ssid_5g_wpa2_eap_nat": 5653, | ||||
|             "ssid_5g_wpa2_nat": 5654, | ||||
|             "ssid_5g_wpa_nat": 5655, | ||||
|             "ssid_2g_wpa2_eap_vlan": 5656, | ||||
|             "ssid_2g_wpa2_vlan": 5657, | ||||
|             "ssid_2g_wpa_vlan": 5658, | ||||
|             "ssid_5g_wpa2_eap_vlan": 5659, | ||||
|             "ssid_5g_wpa2_vlan": 5660, | ||||
|             "ssid_5g_wpa_vlan": 5661, | ||||
|             "radius_profile": 5808, | ||||
|             "bridge_ssid_update": 8742, | ||||
|             "nat_ssid_update": 8743, | ||||
|             "vlan_ssid_update": 8744, | ||||
|             "2g_wpa3_bridge": 9740, | ||||
|             "5g_wpa3_bridge": 9741, | ||||
|             "ssid_2g_wpa3_bridge": 9742, | ||||
|             "ssid_5g_wpa3_bridge": 9743, | ||||
|             "ssid_2g_wpa3_nat": 9744, | ||||
|             "ssid_5g_wpa3_nat": 9745, | ||||
|             "ssid_2g_wpa3_vlan": 9746, | ||||
|             "ssid_5g_wpa3_vlan": 9747, | ||||
|             "2g_wpa3_nat": 9748, | ||||
|             "5g_wpa3_nat": 9749, | ||||
|             "2g_wpa3_vlan": 9750, | ||||
|             "5g_wpa3_vlan": 9751, | ||||
|             "ssid_2g_wpa3_eap_bridge": 9752, | ||||
|             "ssid_5g_wpa3_eap_bridge": 9753, | ||||
|             "2g_wpa3_eap_ttls_bridge": 9754, | ||||
|             "5g_wpa3_eap_ttls_bridge": 9755, | ||||
|             "ssid_2g_wpa3_eap_nat": 9756, | ||||
|             "ssid_5g_wpa3_eap_nat": 9757, | ||||
|             "ssid_2g_wpa3_eap_vlan": 9758, | ||||
|             "ssid_5g_wpa3_eap_vlan": 9759, | ||||
|             "2g_wpa3_eap_ttls_nat": 9760, | ||||
|             "5g_wpa3_eap_ttls_nat": 9761, | ||||
|             "2g_wpa3_eap_ttls_vlan": 9762, | ||||
|             "5g_wpa3_eap_ttls_vlan": 9763, | ||||
|             "ssid_2g_wpa3_mixed_bridge": 9764, | ||||
|             "ssid_5g_wpa3_mixed_bridge": 9765, | ||||
|             "2g_wpa3_mixed_eap_ttls_wpa3_bridge": 9766, | ||||
|             "2g_wpa3_mixed_wpa3_bridge": 9767, | ||||
|             "5g_wpa3_mixed_eap_ttls_wpa3_bridge": 9768, | ||||
|             "5g_wpa3_mixed_wpa3_bridge": 9769, | ||||
|             "ssid_2g_wpa3_mixed_nat": 9770, | ||||
|             "ssid_5g_wpa3_mixed_nat": 9771, | ||||
|             "ssid_2g_wpa3_mixed_vlan": 9772, | ||||
|             "ssid_5g_wpa3_mixed_vlan": 9773, | ||||
|             # "2g_wpa3_mixed_wpa2_nat": 9774, | ||||
|             "2g_wpa3_mixed_wpa3_nat": 9775, | ||||
|             # "5g_wpa3_mixed_wpa2_nat": 9776, | ||||
|             "5g_wpa3_mixed_wpa3_nat": 9777, | ||||
|             # "2g_wpa3_mixed_wpa2_vlan": 9778, | ||||
|             "2g_wpa3_mixed_wpa3_vlan": 9779, | ||||
|             # "5g_wpa3_mixed_wpa2_vlan": 9780, | ||||
|             "5g_wpa3_mixed_wpa3_vlan": 9781, | ||||
|             "ssid_2g_wpa3_enterprise_mixed_bridge": 9782, | ||||
|             "ssid_5g_wpa3_enterprise_mixed_bridge": 9783, | ||||
|             "2g_wpa2_mixed_eap_wpa2_bridge": 9784, | ||||
|             "2g_wpa3_mixed_eap_wpa3_bridge": 9785, | ||||
|             "5g_wpa3_mixed_eap_wpa2_bridge": 9786, | ||||
|             "5g_wpa3_mixed_eap_wpa3_bridge": 9787, | ||||
|             "ssid_2g_wpa3_enterprise_mixed_nat": 9788, | ||||
|             "ssid_5g_wpa3_enterprise_mixed_nat": 9789, | ||||
|             "2g_wpa3_mixed_eap_wpa2_nat": 9790, | ||||
|             "2g_wpa3_mixed_eap_ttls_wpa3_nat": 9791, | ||||
|             "5g_wpa3_mixed_eap_wpa2_nat": 9792, | ||||
|             "5g_wpa3_mixed_eap_ttls_wpa3_nat": 9793, | ||||
|             "ssid_2g_wpa3_enterprise_mixed_vlan": 9794, | ||||
|             "ssid_5g_wpa3_enterprise_mixed_vlan": 9795, | ||||
|             "2g_wpa3_mixed_eap_wpa2_vlan": 9796, | ||||
|             "2g_wpa3_mixed_eap_ttls_wpa3_vlan": 9797, | ||||
|             "5g_wpa3_mixed_eap_wpa2_vlan": 9798, | ||||
|             "5g_wpa3_mixed_eap_ttls_wpa3_vlan": 9799, | ||||
|             "ssid_2g_open_bridge": 9805, | ||||
|             "ssid_5g_open_bridge": 9806, | ||||
|             "ssid_2g_open_nat": 9807, | ||||
|             "ssid_5g_open_nat": 9808, | ||||
|             "ssid_2g_open_vlan": 9809, | ||||
|             "ssid_5g_open_vlan": 9810, | ||||
|             "ssid_2g_wpa2_mixed_bridge": 9811, | ||||
|             "ssid_5g_wpa2_mixed_bridge": 9812, | ||||
|             "ssid_2g_wpa2_mixed_nat": 9813, | ||||
|             "ssid_5g_wpa2_mixed_nat": 9814, | ||||
|             "ssid_2g_wpa2_mixed_vlan": 9815, | ||||
|             "ssid_5g_wpa2_mixed_vlan": 9817, | ||||
|             "ssid_2g_wpa_wpa2_enterprise_mixed_bridge": 9818, | ||||
|             "ssid_5g_wpa_wpa2_enterprise_mixed_bridge": 9819, | ||||
|             "ssid_2g_wpa_wpa2_enterprise_mixed_nat": 9820, | ||||
|             "ssid_5g_wpa_wpa2_enterprise_mixed_nat": 9821, | ||||
|             "ssid_2g_wpa_wpa2_enterprise_mixed_vlan": 9822, | ||||
|             "ssid_5g_wpa_wpa2_enterprise_mixed_vlan": 9823, | ||||
|             "ssid_2g_wpa_eap_bridge": 9824, | ||||
|             "ssid_5g_wpa_eap_bridge": 9825, | ||||
|             # "ssid_2g_wpa2_eap_bridge": 9824, | ||||
|             # "ssid_5g_wpa2_eap_bridge": 9825, | ||||
|             "ssid_2g_wpa_eap_nat": 9826, | ||||
|             "ssid_5g_wpa_eap_nat": 9827, | ||||
|             "ssid_2g_wpa_eap_vlan": 9828, | ||||
|             "ssid_5g_wpa_eap_vlan": 9829, | ||||
|             # "ap_update_bridge": 9856, | ||||
|             # "ap_update_nat": 9857, | ||||
|             # "ap_update_vlan": 9858, | ||||
|             # "bridge_vifc_update": 9859, | ||||
|             # "nat_vifc_update": 9860, | ||||
|             # "vlan_vifc_update": 9861, | ||||
|             # "bridge_vifs_update": 9862, | ||||
|             # "nat_vifs_update": 9863, | ||||
|             # "vlan_vifs_update": 9864, | ||||
|             "2g_wpa_eap_ttls_bridge": 9867, | ||||
|             "5g_wpa_eap_ttls_bridge": 9768, | ||||
|             "2g_wpa_eap_ttls_nat": 9869, | ||||
|             "5g_wpa_eap_ttls_nat": 9770, | ||||
|             "2g_wpa_eap_ttls_vlan": 9871, | ||||
|             "5g_wpa_eap_ttls_vlan": 9872, | ||||
|             # "2g_wpa2_mixed_eap_wpa_bridge": 9873, | ||||
|             "2g_wpa2_mixed_eap_ttls_wpa2_bridge": 9874, | ||||
|             # "5g_wpa2_mixed_eap_wpa_bridge": 9875, | ||||
|             "5g_wpa2_mixed_eap_ttls_wpa2_bridge": 9876, | ||||
|             # "2g_wpa2_mixed_eap_wpa_nat": 9877, | ||||
|             "2g_wpa2_mixed_eap_ttls_wpa2_nat": 9878, | ||||
|             # "5g_wpa2_mixed_eap_wpa_nat": 9879, | ||||
|             "5g_wpa2_mixed_eap_ttls_wpa2_nat": 9880, | ||||
|             # "2g_wpa2_mixed_eap_wpa_vlan": 9881, | ||||
|             "2g_wpa2_mixed_eap_ttls_wpa2_vlan": 9882, | ||||
|             # "5g_wpa2_mixed_eap_wpa_vlan": 9883, | ||||
|             "5g_wpa2_mixed_eap_ttls_wpa2_vlan": 9884, | ||||
|             # "2g_wpa2_mixed_wpa_bridge": 9885, | ||||
|             "2g_wpa2_mixed_wpa2_bridge": 9886, | ||||
|             # "5g_wpa2_mixed_wpa_bridge": 9887, | ||||
|             "5g_wpa2_mixed_wpa2_bridge": 9888, | ||||
|             # "2g_wpa2_mixed_wpa_nat": 9889, | ||||
|             "2g_wpa2_mixed_wpa2_nat": 9890, | ||||
|             # "5g_wpa2_mixed_wpa_nat": 9891, | ||||
|             "5g_wpa2_mixed_wpa2_nat": 9892, | ||||
|             # "2g_wpa2_mixed_wpa_vlan": 9893, | ||||
|             "2g_wpa2_mixed_wpa2_vlan": 9894, | ||||
|             # "5g_wpa2_mixed_wpa_vlan": 9895, | ||||
|             "5g_wpa2_mixed_wpa2_vlan": 9896, | ||||
|             "2g_open_bridge": 2234, | ||||
|             "5g_open_bridge": 2235, | ||||
|             "2g_open_nat": 4321, | ||||
|             "5g_open_nat": 4322, | ||||
|             "2g_open_vlan": 9897, | ||||
|             "5g_open_vlan": 9898 | ||||
|         } | ||||
|         EOF | ||||
|  | ||||
|         cat configuration.py | ||||
|  | ||||
|         kubectl create secret generic configuration --from-file=configuration=./configuration.py | ||||
|  | ||||
|     - name: run 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: tip-tip-wlan-cloud-docker-repo.jfrog.io/cloud-sdk-nightly:${{ github.run_id }} | ||||
|                 resources: | ||||
|                   requests: | ||||
|                     memory: "512Mi" | ||||
|                     cpu: "250m" | ||||
|                   limits: | ||||
|                     memory: "512Mi" | ||||
|                     cpu: "250m" | ||||
|                 command: | ||||
|                   - /bin/bash | ||||
|                   - -x | ||||
|                   - -c | ||||
|                   - | | ||||
|                     HOSTS="sec-${{ steps.reservation.outputs.identifier }}.cicd.lab.wlan.tip.build gw-${{ steps.reservation.outputs.identifier }}.cicd.lab.wlan.tip.build fms-${{ steps.reservation.outputs.identifier }}.cicd.lab.wlan.tip.build" | ||||
|                     for HOST in \$HOSTS; do | ||||
|                       HOST_ENTRY="" | ||||
|                       until [[ ! -z "\$HOST_ENTRY" ]]; do sleep 1; HOST_ENTRY=\$(getent hosts \$HOST); done; | ||||
|                       echo "\$HOST_ENTRY" >> /etc/hosts | ||||
|                       echo "DNS record for \$HOST resolved successfully!" | ||||
|                     done | ||||
|  | ||||
|                     cat /etc/hosts | ||||
|  | ||||
|                     cd tests | ||||
|                     pytest -m "${{ needs.vars.outputs.marker_expression }}" -s -vvv --testbed="advanced" --alluredir=/tmp/allure-results -o firmware="${{ needs.vars.outputs.ap_version }}" | ||||
|                     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: show gw logs | ||||
|       if: failure() | ||||
|       run: kubectl -n openwifi-${{ steps.reservation.outputs.identifier }} logs deployment/owgw | ||||
|  | ||||
|     - name: show fms logs | ||||
|       if: failure() | ||||
|       run: kubectl -n openwifi-${{ steps.reservation.outputs.identifier }} logs deployment/owfms | ||||
|  | ||||
|     - name: show prov logs | ||||
|       if: failure() | ||||
|       run: kubectl -n openwifi-${{ steps.reservation.outputs.identifier }} logs deployment/owprov | ||||
|  | ||||
|     - name: show sec logs | ||||
|       if: failure() | ||||
|       run: kubectl -n openwifi-${{ steps.reservation.outputs.identifier }} logs deployment/owsec | ||||
|  | ||||
|     - name: upload Allure results as artifact | ||||
|       if: ${{ always() }} | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: allure-results-${{ matrix.ap_model }} | ||||
|         path: allure-results | ||||
|  | ||||
|     - name: cleanup | ||||
|       if: ${{ always() }} | ||||
|       run: | | ||||
|         kubectl delete ns "${{ steps.namespace.outputs.name }}" --wait=true | ||||
|  | ||||
|     - name: stop reservation | ||||
|       if: always() | ||||
|       run: python wlan-testing/.quali/stop_reservation.py ${{ steps.start.outputs.res_id }} | ||||
|  | ||||
|   report: | ||||
|     needs: [ vars, generate-matrix, test ] | ||||
|     if: always() | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }} | ||||
|     steps: | ||||
|     - name: checkout testing repo | ||||
|       uses: actions/checkout@v2 | ||||
|  | ||||
|     - uses: actions/download-artifact@v2 | ||||
|       with: | ||||
|         name: allure-results-${{ matrix.ap_model }} | ||||
|         path: allure-results | ||||
|  | ||||
|     - name: download history of previous run | ||||
|       continue-on-error: true | ||||
|       run: | | ||||
|         LAST_RUN_ID=$(aws s3api head-object --bucket openwifi-allure-reports --key advance/${{ matrix.ap_model }}/latest/index.html | jq -r .Metadata.latest) | ||||
|         aws s3 cp --recursive s3://openwifi-allure-reports/advance/${{ matrix.ap_model }}/$LAST_RUN_ID/history history | ||||
|  | ||||
|     - name: generate Allure report | ||||
|       uses: ./.github/actions/generate-allure-report | ||||
|       with: | ||||
|         results_path: ./allure-results | ||||
|         history_path: ./history | ||||
|         additional_metadata: | | ||||
|           Ap.Model=${{ matrix.ap_model }} | ||||
|  | ||||
|     - name: upload Allure report as artifact | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: allure-report-${{ matrix.ap_model }} | ||||
|         path: allure-report | ||||
|  | ||||
|     # doing this to be able to aggregate multiple reports together later on | ||||
|     - name: copy results into report | ||||
|       run: | | ||||
|         cp -r allure-results allure-report/results | ||||
|  | ||||
|     - name: upload to S3 | ||||
|       if: github.ref == 'refs/heads/master' && needs.vars.outputs.marker_expression == 'advance' | ||||
|       uses: ./wlan-testing/.github/actions/allure-report-to-s3 | ||||
|       with: | ||||
|         test_type: advance | ||||
|         testbed: ${{ matrix.ap_model }} | ||||
|         report_path: allure-report | ||||
|         s3_access_key_id: ${{ secrets.ALLURE_S3_ACCESS_KEY_ID }} | ||||
|         s3_access_key_secret: ${{ secrets.ALLURE_S3_ACCESS_KEY_SECRET }} | ||||
|  | ||||
|   cleanup: | ||||
|     needs: [ test ] | ||||
|     runs-on: ubuntu-latest | ||||
|     if: always() | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - name: cleanup Docker image | ||||
|       uses: ./.github/actions/cleanup-docker | ||||
|       with: | ||||
|         registry_user: wlan-testing-cicd | ||||
|         registry_password: ${{ secrets.DOCKER_USER_PASSWORD }} | ||||
| @@ -7,6 +7,7 @@ import argparse | ||||
| from common import wait_for_provisioning_status, get_session | ||||
|  | ||||
| run_id = os.environ.get('GITHUB_RUN_NUMBER', 1) | ||||
| marker_expression = os.environ.get('MARKER_EXPRESSION', 'sanity')  | ||||
|  | ||||
| def main(): | ||||
|     parser = argparse.ArgumentParser() | ||||
| @@ -17,15 +18,21 @@ def main(): | ||||
|     parser.add_argument('--openwifi-ui-version', default='main') | ||||
|     parser.add_argument('--ap-model', default='[Any]') | ||||
|     parser.add_argument('--wifi-type', default='[Any]') | ||||
|     parser.add_argument('--blueprint', default='Basic Lab') | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     session = get_session() | ||||
|  | ||||
|     if marker_expression == 'advance': | ||||
|         reservation_duration = 720 | ||||
|     else | ||||
|         reservation_duration = 360 | ||||
|  | ||||
|     reservation = session.CreateImmediateTopologyReservation( | ||||
|         reservationName=f'sanity-{run_id}', | ||||
|         reservationName=f'{marker_expression}-{run_id}', | ||||
|         owner=session.username, | ||||
|         durationInMinutes=360, | ||||
|         topologyFullPath='Basic Lab', | ||||
|         durationInMinutes=reservation_duration, | ||||
|         topologyFullPath=args.blueprint, | ||||
|         globalInputs=[ | ||||
|             UpdateTopologyGlobalInputsRequest('Chart Version', args.openwifi_version), | ||||
|             UpdateTopologyGlobalInputsRequest('owgw Version', args.openwifi_gw_version), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Johann Hoffmann
					Johann Hoffmann