Merge branch 'master' into WIFI-5146

This commit is contained in:
Saurabh Goyal
2021-11-30 09:51:44 +05:30
committed by GitHub
13 changed files with 808 additions and 150 deletions

561
.github/workflows/quali-basic-manual.yml vendored Normal file
View File

@@ -0,0 +1,561 @@
name: manual pytest execution against basic lab
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:
openwifi_revision:
required: true
default: 'main'
description: 'revision of the Open Wifi Helm chart'
openwifi_gw_revision:
required: true
default: 'master'
description: 'revision of the Open Wifi gateway service'
openwifi_sec_revision:
required: true
default: 'main'
description: 'revision of the Open Wifi security service'
openwifi_fms_revision:
required: true
default: 'main'
description: 'revision of the Open Wifi fms service'
openwifi_ui_revision:
required: true
default: 'main'
description: 'revision of the Open Wifi UI'
ap_model:
description: 'AP model to test, one of ECW5410,EAP101,EC420,ECW5211,WF188N,EAP102,CIG194C'
required: true
firmware:
default: 'next-latest'
description: 'Target firmware version to be specified <branch>-<commit | latest>'
required: false
marker_expression:
description: "marker expression that will be passed to pytest's -m"
required: true
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: [ self-hosted, small ]
needs: [ build ]
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: install dependencies
run: pip install -r .quali/requirements.txt
- name: start reservation
id: start
env:
CLOUDSHELL_URL: quali-cloudshell.lab.wlan.tip.build
CLOUDSHELL_USER: ${{ secrets.CLOUDSHELL_USER }}
CLOUDSHELL_PASSWORD: ${{ secrets.CLOUDSHELL_PASSWORD }}
run: |
RES_ID=$(python .quali/start_reservation.py --openwifi-version "${{ github.event.inputs.openwifi_revision }}" --openwifi-gw-version "${{ github.event.inputs.openwifi_gw_revision }}" --openwifi-sec-version "${{ github.event.inputs.openwifi_sec_revision }}" --openwifi-fms-version "${{ github.event.inputs.openwifi_fms_revision }}" --openwifi-ui-version "${{ github.event.inputs.openwifi_ui_revision }}" --ap-model "${{ github.event.inputs.ap_model }}")
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: install JRE
run: |
sudo apt-get update
sudo apt-get install -y default-jre
- 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: get EKS access credentials
run: aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
- 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: 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::manual-${{ github.run_id }}"
- name: prepare namespace
id: namespace
run: |
NAMESPACE="testing-${{ github.run_id }}"
kubectl create ns $NAMESPACE
kubectl config set-context --current --namespace=$NAMESPACE
echo "::set-output name=name::${NAMESPACE}"
- name: prepare configuration
env:
CLOUDSHELL_URL: quali-cloudshell.lab.wlan.tip.build
CLOUDSHELL_USER: ${{ secrets.CLOUDSHELL_USER }}
CLOUDSHELL_PASSWORD: ${{ secrets.CLOUDSHELL_PASSWORD }}
run: |
cat << EOF > configuration.py
Customer = ""
server = ""
CONFIGURATION = {
"basic": $(python .quali/get_configuration.py ${{ steps.start.outputs.res_id }})
}
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
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: ${{ 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
- |
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
cd tests
pytest -m "${{ github.event.inputs.marker_expression }}" -s -vvv --testbed="basic" -o firmware="${{ github.event.inputs.firmware }}" --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
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: allure-results
path: allure-results
- name: generate Allure report
run: allure-${{ env.ALLURE_CLI_VERSION }}/bin/allure generate allure-results
- name: upload Allure report as artifact
uses: actions/upload-artifact@v2
with:
name: allure-report
path: allure-report
- name: cleanup
if: always()
run: |
kubectl delete ns "${{ steps.namespace.outputs.name }}" --wait=true
- name: stop reservation
if: always()
run: python .quali/stop_reservation.py ${{ steps.start.outputs.res_id }}
env:
CLOUDSHELL_URL: quali-cloudshell.lab.wlan.tip.build
CLOUDSHELL_USER: ${{ secrets.CLOUDSHELL_USER }}
CLOUDSHELL_PASSWORD: ${{ secrets.CLOUDSHELL_PASSWORD }}
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 }}"

View File

@@ -552,6 +552,22 @@ jobs:
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

View File

@@ -22,12 +22,13 @@ for folder in 'py-json', 'py-scripts':
sys.path.append(f"../lanforge/lanforge-scripts/py-scripts/tip-cicd-sanity")
sys.path.append(f'../libs')
sys.path.append(f'../tools')
sys.path.append(f'../libs/lanforge/')
from sta_connect2 import StaConnect2
import time
import string
import random
from scp_util import SCP_File
S = 12
# from eap_connect import EAPConnect
from test_ipv4_ttls import TTLSTest
@@ -50,6 +51,7 @@ class RunTest:
def __init__(self, lanforge_data=None, local_report_path="../reports/", influx_params=None, debug=False):
self.lanforge_ip = lanforge_data["ip"]
self.lanforge_port = lanforge_data["port"]
self.lanforge_ssh_port = lanforge_data["ssh_port"]
self.twog_radios = lanforge_data["2.4G-Radio"]
self.fiveg_radios = lanforge_data["5G-Radio"]
self.ax_radios = lanforge_data["AX-Radio"]
@@ -129,6 +131,13 @@ class RunTest:
print("test result: " + result)
pytest.exit("Test Failed: Debug True")
self.staConnect.cleanup()
supplicqant = "/home/lanforge/wifi/wpa_supplicant_log_" + self.staConnect.radio.split(".")[2] + ".txt"
obj = SCP_File(ip=self.lanforge_ip, port=self.lanforge_ssh_port, username="root", password="lanforge",
remote_path=supplicqant,
local_path=".")
obj.pull_file()
allure.attach.file(source="wpa_supplicant_log_" + self.staConnect.radio.split(".")[2] + ".txt",
name="supplicant_log")
for result in run_results:
print("test result: " + result)
result = True
@@ -215,6 +224,13 @@ class RunTest:
# print(e)
self.eap_connect.stop()
supplicqant = "/home/lanforge/wifi/wpa_supplicant_log_" + self.eap_connect.radio.split(".")[2] + ".txt"
obj = SCP_File(ip=self.lanforge_ip, port=self.lanforge_ssh_port, username="root", password="lanforge",
remote_path=supplicqant,
local_path=".")
obj.pull_file()
allure.attach.file(source="wpa_supplicant_log_" + self.eap_connect.radio.split(".")[2] + ".txt",
name="supplicant_log")
if not self.eap_connect.passes():
if self.debug:
print("test result: " + self.eap_connect.passes())

55
libs/lanforge/scp_util.py Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env python3
import argparse
import paramiko
from scp import SCPClient
class SCP_File:
def __init__(self, ip="localhost", port=22, username="lanforge", password="lanforge", remote_path="/home/lanforge/",
local_path="."):
self.ip = ip
self.port = port
self.remote_path = remote_path
self.local_path = local_path
self.username = username
self.password = password
def pull_file(self):
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=self.ip, username=self.username, password=self.password, port=self.port, allow_agent=False,
look_for_keys=False)
# ssh.close()
with SCPClient(ssh.get_transport()) as scp:
scp.get(remote_path=self.remote_path, local_path=self.local_path, recursive=True)
scp.close()
def main():
parser = argparse.ArgumentParser(prog="lf_utils",
formatter_class=argparse.RawTextHelpFormatter,
allow_abbrev=True,
epilog="About lf_tools.py",
description="Tools for LANforge System")
parser.add_argument('--host', type=str, help=' --host : IP Address f LANforge System', default="localhost")
parser.add_argument('--port', type=int, help='--passwd of dut', default=22)
parser.add_argument('--username', type=str, help='--username to use on LANforge', default="lanforge")
parser.add_argument('--password', type=str, help='--password to use on LANforge', default="lanforge")
parser.add_argument('--remote_path', type=str, help='--password to the given username',
default="/home/lanforge/lf_kinstall.pl")
parser.add_argument('--local_path', type=str, help='--action to perform'
'reboot | run_cmd', default=".")
args = parser.parse_args()
lf_tools = SCP_File(ip=args.host, port=args.port,
username=args.username, password=args.password,
remote_path=args.remote_path, local_path=args.local_path)
lf_tools.pull_file()
if __name__ == '__main__':
main()

View File

@@ -42,7 +42,6 @@ from LANforge.LFUtils import *
if 'py-json' not in sys.path:
sys.path.append('../py-scripts')
from apnos.apnos import APNOS
from controller.controller_1x.controller import Controller
from controller.controller_1x.controller import FirmwareUtility
import pytest
from lanforge.lf_tests import RunTest
@@ -50,11 +49,10 @@ from cv_test_manager import cv_test
from configuration import CONFIGURATION
from configuration import RADIUS_SERVER_DATA
from configuration import RADIUS_ACCOUNTING_DATA
from lanforge.scp_util import SCP_File
from testrails.testrail_api import APIClient
from testrails.reporting import Reporting
from lf_tools import ChamberView
from sta_connect2 import StaConnect2
from os import path
from typing import Any, Callable, Optional
@@ -679,3 +677,25 @@ def get_ap_logs(request, get_apnos, get_configuration):
pass
request.addfinalizer(collect_logs)
@pytest.fixture(scope="function")
def get_lf_logs(request, get_apnos, get_configuration):
ip = get_configuration["traffic_generator"]["details"]["ip"]
port = get_configuration["traffic_generator"]["details"]["ssh_port"]
def collect_logs_lf():
log_0 = "/home/lanforge/lanforge_log_0.txt"
log_1 = "/home/lanforge/lanforge_log_1.txt"
obj = SCP_File(ip=ip, port=port, username="root", password="lanforge", remote_path=log_0,
local_path=".")
obj.pull_file()
allure.attach.file(source="lanforge_log_0.txt",
name="lanforge_log_0")
obj = SCP_File(ip=ip, port=port, username="root", password="lanforge", remote_path=log_1,
local_path=".")
obj.pull_file()
allure.attach.file(source="lanforge_log_1.txt",
name="lanforge_log_1")
request.addfinalizer(collect_logs_lf)

View File

@@ -46,7 +46,7 @@ class TestBridgeModeEnterpriseTTLSSuiteA(object):
@pytest.mark.wpa_enterprise
@pytest.mark.twog
def test_wpa_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -73,7 +73,7 @@ class TestBridgeModeEnterpriseTTLSSuiteA(object):
@pytest.mark.wpa_enterprise
@pytest.mark.fiveg
def test_wpa_enterprise_5g(self, station_names_fiveg, get_ap_logs,
def test_wpa_enterprise_5g(self, station_names_fiveg, get_ap_logs, get_lf_logs,
setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
""" wpa enterprise 5g
@@ -98,7 +98,7 @@ class TestBridgeModeEnterpriseTTLSSuiteA(object):
@pytest.mark.sanity_light
@pytest.mark.wpa2_enterprise
@pytest.mark.twog
def test_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -126,7 +126,7 @@ class TestBridgeModeEnterpriseTTLSSuiteA(object):
@pytest.mark.sanity_light
@pytest.mark.wpa2_enterprise
@pytest.mark.fiveg
def test_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -154,7 +154,7 @@ class TestBridgeModeEnterpriseTTLSSuiteA(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.twog
def test_wpa3_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -181,7 +181,7 @@ class TestBridgeModeEnterpriseTTLSSuiteA(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.fiveg
def test_wpa3_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -239,7 +239,7 @@ class TestBridgeModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa_wpa2_enterprise_mixed
@pytest.mark.twog
def test_wpa_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -267,7 +267,7 @@ class TestBridgeModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa_wpa2_enterprise_mixed
@pytest.mark.fiveg
def test_wpa_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test,
update_report, test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -295,7 +295,7 @@ class TestBridgeModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.twog
def test_wpa3_enterprise_mixed_2g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_mixed_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report, test_cases, radius_info, exit_on_fail):
""" wpa enterprise 2g
@@ -322,7 +322,7 @@ class TestBridgeModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.fiveg
def test_wpa3_enterprise_mixed_5g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_mixed_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test,
update_report, exit_on_fail,
test_cases, radius_info):

View File

@@ -50,7 +50,8 @@ class TestBridgeModeConnectivitySuiteA(object):
@pytest.mark.open
@pytest.mark.twog
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-2809", name="JIRA LINK")
def test_open_ssid_2g(self, get_vif_state, get_ap_logs, setup_profiles, lf_test, update_report,
def test_open_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs, setup_profiles, lf_test,
update_report,
station_names_twog,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -76,7 +77,7 @@ class TestBridgeModeConnectivitySuiteA(object):
@pytest.mark.open
@pytest.mark.fiveg
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-2801", name="JIRA LINK")
def test_open_ssid_5g(self, get_vif_state, get_ap_logs, lf_test, test_cases, station_names_fiveg,
def test_open_ssid_5g(self, get_vif_state, get_ap_logs, lf_test, test_cases, station_names_fiveg, get_lf_logs,
update_report):
"""Client Connectivity open ssid 5G
pytest -m "client_connectivity and bridge and general and open and fiveg"
@@ -103,7 +104,7 @@ class TestBridgeModeConnectivitySuiteA(object):
@pytest.mark.twog
@allure.story('wpa 2.4 GHZ Band')
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-2801", name="JIRA LINK")
def test_wpa_ssid_2g(self, get_vif_state, get_ap_logs, update_report,
def test_wpa_ssid_2g(self, get_vif_state, get_ap_logs, update_report, get_lf_logs,
lf_test, test_cases, station_names_twog):
"""Client Connectivity wpa ssid 2.4G
pytest -m "client_connectivity and bridge and general and wpa and twog"
@@ -129,7 +130,8 @@ class TestBridgeModeConnectivitySuiteA(object):
@pytest.mark.wpa
@pytest.mark.fiveg
@allure.story('wpa 5 GHZ Band')
def test_wpa_ssid_5g(self, get_vif_state, get_ap_logs, lf_test, update_report, test_cases, station_names_fiveg):
def test_wpa_ssid_5g(self, get_vif_state, get_ap_logs, lf_test, update_report, get_lf_logs,
test_cases, station_names_fiveg):
"""Client Connectivity wpa ssid 5G
pytest -m "client_connectivity and bridge and general and wpa and fiveg"
"""
@@ -154,7 +156,8 @@ class TestBridgeModeConnectivitySuiteA(object):
@pytest.mark.wpa2_personal
@pytest.mark.twog
@allure.story('wpa2_personal 2.4 GHZ Band')
def test_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs, lf_test, update_report, test_cases,
def test_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
lf_test, update_report, test_cases,
station_names_twog):
"""Client Connectivity wpa2_personal ssid 2.4G
pytest -m "client_connectivity and bridge and general and wpa2_personal and twog"
@@ -181,7 +184,7 @@ class TestBridgeModeConnectivitySuiteA(object):
@pytest.mark.fiveg
@allure.story('wpa2_personal 5 GHZ Band')
def test_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs, update_report, test_cases,
station_names_fiveg,
station_names_fiveg, get_lf_logs,
lf_test):
"""Client Connectivity wpa2_personal ssid 5G
pytest -m "client_connectivity and bridge and general and wpa2_personal and fiveg"
@@ -270,7 +273,8 @@ class TestBridgeModeConnectivitySuiteTwo(object):
@pytest.mark.wpa3_personal
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_wpa3_personal_ssid_5g(self, get_vif_state, get_ap_logs, station_names_fiveg, lf_test, test_cases,
def test_wpa3_personal_ssid_5g(self, get_vif_state, get_ap_logs, station_names_fiveg,
lf_test, test_cases, get_lf_logs,
update_report):
"""Client Connectivity open ssid 2.4G
pytest -m "client_connectivity and bridge and general and wpa3_personal and fiveg"
@@ -296,7 +300,7 @@ class TestBridgeModeConnectivitySuiteTwo(object):
@pytest.mark.twog
@allure.story('open 2.4 GHZ Band')
def test_wpa3_personal_mixed_ssid_2g(self, get_vif_state, get_ap_logs, station_names_twog, setup_profiles,
lf_test,
lf_test, get_lf_logs,
update_report,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -323,7 +327,7 @@ class TestBridgeModeConnectivitySuiteTwo(object):
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_wpa3_personal_mixed_ssid_5g(self, get_vif_state, get_ap_logs, station_names_fiveg, lf_test,
test_cases,
test_cases, get_lf_logs,
update_report):
"""Client Connectivity open ssid 2.4G
pytest -m "client_connectivity and bridge and general and wpa3_personal_mixed and fiveg"
@@ -349,7 +353,7 @@ class TestBridgeModeConnectivitySuiteTwo(object):
@pytest.mark.twog
@allure.story('wpa wpa2 personal mixed 2.4 GHZ Band')
def test_wpa_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs, station_names_twog, setup_profiles,
lf_test,
lf_test, get_lf_logs,
update_report,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -376,7 +380,8 @@ class TestBridgeModeConnectivitySuiteTwo(object):
@pytest.mark.wpa_wpa2_personal_mixed
@pytest.mark.fiveg
@allure.story('wpa wpa2 personal mixed 5 GHZ Band')
def test_wpa_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs, station_names_fiveg, lf_test, test_cases,
def test_wpa_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs, station_names_fiveg, get_lf_logs,
lf_test, test_cases,
update_report):
"""Client Connectivity open ssid 2.4G
pytest -m "client_connectivity and bridge and general and wpa_wpa2_personal_mixed and fiveg"

View File

@@ -34,7 +34,7 @@ class TestNATModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa_enterprise
@pytest.mark.twog
def test_wpa_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise["ssid_modes"]["wpa_enterprise"][0]
@@ -59,7 +59,7 @@ class TestNATModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa_enterprise
@pytest.mark.fiveg
def test_wpa_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise["ssid_modes"]["wpa_enterprise"][1]
@@ -85,7 +85,7 @@ class TestNATModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.sanity_light
@pytest.mark.wpa2_enterprise
@pytest.mark.twog
def test_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise["ssid_modes"]["wpa2_enterprise"][0]
@@ -111,7 +111,7 @@ class TestNATModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.sanity_light
@pytest.mark.wpa2_enterprise
@pytest.mark.fiveg
def test_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise["ssid_modes"]["wpa2_enterprise"][1]
@@ -136,7 +136,7 @@ class TestNATModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.twog
def test_wpa3_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise["ssid_modes"]["wpa3_enterprise"][0]
@@ -160,7 +160,7 @@ class TestNATModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.fiveg
def test_wpa3_enterprise_5g(self, get_vif_state,station_names_fiveg, get_ap_logs,
def test_wpa3_enterprise_5g(self, get_vif_state,station_names_fiveg, get_ap_logs, get_lf_logs,
setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise["ssid_modes"]["wpa3_enterprise"][1]
@@ -210,7 +210,7 @@ class TestNATModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa_wpa2_enterprise_mixed
@pytest.mark.twog
def test_wpa_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test, update_report,
test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise_two["ssid_modes"]["wpa_wpa2_enterprise_mixed"][0]
@@ -235,7 +235,7 @@ class TestNATModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa_wpa2_enterprise_mixed
@pytest.mark.fiveg
def test_wpa_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test,
update_report, test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise_two["ssid_modes"]["wpa_wpa2_enterprise_mixed"][1]
@@ -260,7 +260,7 @@ class TestNATModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.twog
def test_wpa3_enterprise_mixed_2g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_mixed_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report, test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise_two["ssid_modes"]["wpa3_enterprise_mixed"][0]
@@ -284,8 +284,8 @@ class TestNATModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.fiveg
def test_wpa3_enterprise_mixed_5g(self, get_vif_state, get_ap_logs,
station_names_fiveg, setup_profiles, lf_test,
def test_wpa3_enterprise_mixed_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test,
update_report, exit_on_fail,
test_cases, radius_info):
profile_data = setup_params_enterprise_two["ssid_modes"]["wpa3_enterprise_mixed"][1]

View File

@@ -48,7 +48,7 @@ class TestNATModeConnectivitySuiteA(object):
@pytest.mark.open
@pytest.mark.twog
@allure.story('open 2.4 GHZ Band')
def test_open_ssid_2g(self, get_vif_state, get_ap_logs,
def test_open_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
setup_profiles, lf_test, update_report,
station_names_twog,
test_cases):
@@ -77,7 +77,7 @@ class TestNATModeConnectivitySuiteA(object):
@pytest.mark.open
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_open_ssid_5g(self, get_vif_state, get_ap_logs,
def test_open_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
lf_test, test_cases, station_names_fiveg,
update_report):
"""Client Connectivity open ssid 5G
@@ -104,7 +104,7 @@ class TestNATModeConnectivitySuiteA(object):
@pytest.mark.wpa
@pytest.mark.twog
@allure.story('wpa 2.4 GHZ Band')
def test_wpa_ssid_2g(self, get_vif_state, get_ap_logs, update_report,
def test_wpa_ssid_2g(self, get_vif_state, get_ap_logs, update_report, get_lf_logs,
lf_test, test_cases, station_names_twog):
"""Client Connectivity wpa ssid 2.4G
pytest -m "client_connectivity and NAT and general and wpa and twog"
@@ -129,7 +129,7 @@ class TestNATModeConnectivitySuiteA(object):
@pytest.mark.wpa
@pytest.mark.fiveg
@allure.story('wpa 5 GHZ Band')
def test_wpa_ssid_5g(self, get_vif_state, get_ap_logs,
def test_wpa_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
lf_test, update_report, test_cases, station_names_fiveg):
"""Client Connectivity wpa ssid 5G
pytest -m "client_connectivity and NAT and general and wpa and fiveg"
@@ -155,7 +155,7 @@ class TestNATModeConnectivitySuiteA(object):
@pytest.mark.wpa2_personal
@pytest.mark.twog
@allure.story('wpa2_personal 2.4 GHZ Band')
def test_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs,
def test_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
lf_test, update_report, test_cases,
station_names_twog):
"""Client Connectivity wpa2_personal ssid 2.4G
@@ -182,7 +182,7 @@ class TestNATModeConnectivitySuiteA(object):
@pytest.mark.wpa2_personal
@pytest.mark.fiveg
@allure.story('wpa2_personal 5 GHZ Band')
def test_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs,
def test_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
update_report, test_cases,
station_names_fiveg,
lf_test):
@@ -245,7 +245,7 @@ class TestNATModeConnectivitySuiteB(object):
@pytest.mark.wpa3_personal
@pytest.mark.twog
@allure.story('open 2.4 GHZ Band')
def test_wpa3_personal_ssid_2g(self, get_vif_state, get_ap_logs,
def test_wpa3_personal_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report,
test_cases):
@@ -272,7 +272,7 @@ class TestNATModeConnectivitySuiteB(object):
@pytest.mark.wpa3_personal
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_wpa3_personal_ssid_5g(self, get_vif_state, get_ap_logs,
def test_wpa3_personal_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, lf_test, test_cases,
update_report):
"""Client Connectivity open ssid 2.4G
@@ -300,7 +300,7 @@ class TestNATModeConnectivitySuiteB(object):
@allure.story('open 2.4 GHZ Band')
def test_wpa3_personal_mixed_ssid_2g(self, get_vif_state, get_ap_logs,
station_names_twog, setup_profiles,
lf_test,
lf_test, get_lf_logs,
update_report,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -326,7 +326,7 @@ class TestNATModeConnectivitySuiteB(object):
@pytest.mark.wpa3_personal_mixed
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_wpa3_personal_mixed_ssid_5g(self, get_vif_state, get_ap_logs,
def test_wpa3_personal_mixed_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, lf_test,
test_cases,
update_report):
@@ -353,7 +353,7 @@ class TestNATModeConnectivitySuiteB(object):
@pytest.mark.wpa_wpa2_personal_mixed
@pytest.mark.twog
@allure.story('wpa wpa2 personal mixed 2.4 GHZ Band')
def test_wpa_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs,
def test_wpa_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles,
lf_test,
update_report,
@@ -382,7 +382,7 @@ class TestNATModeConnectivitySuiteB(object):
@pytest.mark.wpa_wpa2_personal_mixed
@pytest.mark.fiveg
@allure.story('wpa wpa2 personal mixed 5 GHZ Band')
def test_wpa_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs,
def test_wpa_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, lf_test, test_cases,
update_report):
"""Client Connectivity open ssid 2.4G

View File

@@ -34,7 +34,7 @@ class TestVLANModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa_enterprise
@pytest.mark.twog
def test_wpa_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report,
test_cases, radius_info, exit_on_fail):
@@ -60,7 +60,7 @@ class TestVLANModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa_enterprise
@pytest.mark.fiveg
def test_wpa_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test,
update_report,
test_cases, radius_info, exit_on_fail):
@@ -87,7 +87,7 @@ class TestVLANModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.sanity_light
@pytest.mark.wpa2_enterprise
@pytest.mark.twog
def test_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report,
test_cases, radius_info, exit_on_fail):
@@ -114,7 +114,7 @@ class TestVLANModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.sanity_light
@pytest.mark.wpa2_enterprise
@pytest.mark.fiveg
def test_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test,
update_report,
test_cases, radius_info, exit_on_fail):
@@ -140,7 +140,7 @@ class TestVLANModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.twog
def test_wpa3_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report,
test_cases, radius_info, exit_on_fail):
@@ -165,7 +165,7 @@ class TestVLANModeEnterpriseTTLSSuiteOne(object):
@pytest.mark.wpa3_enterprise
@pytest.mark.fiveg
def test_wpa3_enterprise_5g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles, lf_test,
update_report,
test_cases, radius_info, exit_on_fail):
@@ -216,7 +216,7 @@ class TestVLANModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa_wpa2_enterprise_mixed
@pytest.mark.twog
def test_wpa_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs,
def test_wpa_wpa2_enterprise_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report,
test_cases, radius_info, exit_on_fail):
@@ -244,7 +244,7 @@ class TestVLANModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.fiveg
def test_wpa_wpa2_enterprise_5g(self, get_vif_state, get_ap_logs,
station_names_fiveg, setup_profiles,
lf_test,
lf_test, get_lf_logs,
update_report, test_cases, radius_info, exit_on_fail):
profile_data = setup_params_enterprise_two["ssid_modes"]["wpa_wpa2_enterprise_mixed"][1]
ssid_name = profile_data["ssid_name"]
@@ -268,7 +268,7 @@ class TestVLANModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.twog
def test_wpa3_enterprise_mixed_2g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_mixed_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles,
lf_test,
update_report, test_cases, radius_info, exit_on_fail):
@@ -293,7 +293,7 @@ class TestVLANModeEnterpriseTTLSSuiteTwo(object):
@pytest.mark.wpa3_enterprise_mixed
@pytest.mark.fiveg
def test_wpa3_enterprise_mixed_5g(self, get_vif_state, get_ap_logs,
def test_wpa3_enterprise_mixed_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, setup_profiles,
lf_test,
update_report, exit_on_fail,

View File

@@ -46,8 +46,8 @@ class TestvlanModeConnectivitySuiteA(object):
@pytest.mark.open
@pytest.mark.twog
@allure.story('open 2.4 GHZ Band')
def test_open_ssid_2g(self, get_vif_state, get_ap_logs,
setup_profiles, lf_test, update_report,
def test_open_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
setup_profiles, lf_test, update_report,
station_names_twog,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -72,8 +72,8 @@ class TestvlanModeConnectivitySuiteA(object):
@pytest.mark.open
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_open_ssid_5g(self, get_vif_state, get_ap_logs,
lf_test, test_cases, station_names_fiveg,
def test_open_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
lf_test, test_cases, station_names_fiveg,
update_report):
"""Client Connectivity open ssid 5G
pytest -m "client_connectivity and vlan and general and open and fiveg"
@@ -100,7 +100,7 @@ class TestvlanModeConnectivitySuiteA(object):
@pytest.mark.twog
@allure.story('wpa 2.4 GHZ Band')
def test_wpa_ssid_2g(self, get_vif_state, get_ap_logs,
update_report,
update_report, get_lf_logs,
lf_test, test_cases, station_names_twog):
"""Client Connectivity wpa ssid 2.4G
pytest -m "client_connectivity and vlan and general and wpa and twog"
@@ -126,7 +126,7 @@ class TestvlanModeConnectivitySuiteA(object):
@pytest.mark.wpa
@pytest.mark.fiveg
@allure.story('wpa 5 GHZ Band')
def test_wpa_ssid_5g(self, get_vif_state, get_ap_logs,
def test_wpa_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
lf_test, update_report, test_cases, station_names_fiveg):
"""Client Connectivity wpa ssid 5G
pytest -m "client_connectivity and vlan and general and wpa and fiveg"
@@ -152,8 +152,8 @@ class TestvlanModeConnectivitySuiteA(object):
@pytest.mark.wpa2_personal
@pytest.mark.twog
@allure.story('wpa2_personal 2.4 GHZ Band')
def test_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs,
lf_test, update_report, test_cases,
def test_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
lf_test, update_report, test_cases,
station_names_twog):
"""Client Connectivity wpa2_personal ssid 2.4G
pytest -m "client_connectivity and vlan and general and wpa2_personal and twog"
@@ -179,8 +179,8 @@ class TestvlanModeConnectivitySuiteA(object):
@pytest.mark.wpa2_personal
@pytest.mark.fiveg
@allure.story('wpa2_personal 5 GHZ Band')
def test_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs,
update_report, test_cases,
def test_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
update_report, test_cases,
station_names_fiveg,
lf_test):
"""Client Connectivity wpa2_personal ssid 5G
@@ -243,8 +243,8 @@ class TestvlanModeConnectivitySuiteTwo(object):
@pytest.mark.wpa3_personal
@pytest.mark.twog
@allure.story('open 2.4 GHZ Band')
def test_wpa3_personal_ssid_2g(self, get_vif_state, get_ap_logs,
station_names_twog, setup_profiles, lf_test,
def test_wpa3_personal_ssid_2g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_twog, setup_profiles, lf_test,
update_report,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -271,8 +271,8 @@ class TestvlanModeConnectivitySuiteTwo(object):
@pytest.mark.wpa3_personal
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_wpa3_personal_ssid_5g(self, get_vif_state, get_ap_logs,
station_names_fiveg, lf_test, test_cases,
def test_wpa3_personal_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, lf_test, test_cases,
update_report):
"""Client Connectivity open ssid 2.4G
pytest -m "client_connectivity and vlan and general and wpa3_personal and fiveg"
@@ -298,8 +298,8 @@ class TestvlanModeConnectivitySuiteTwo(object):
@pytest.mark.twog
@allure.story('open 2.4 GHZ Band')
def test_wpa3_personal_mixed_ssid_2g(self, get_vif_state, get_ap_logs,
station_names_twog, setup_profiles,
lf_test,
station_names_twog, setup_profiles,
lf_test, get_lf_logs,
update_report,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -326,8 +326,8 @@ class TestvlanModeConnectivitySuiteTwo(object):
@pytest.mark.fiveg
@allure.story('open 5 GHZ Band')
def test_wpa3_personal_mixed_ssid_5g(self, get_vif_state, get_ap_logs,
station_names_fiveg, lf_test,
test_cases,
station_names_fiveg, lf_test,
test_cases, get_lf_logs,
update_report):
"""Client Connectivity open ssid 2.4G
pytest -m "client_connectivity and vlan and general and wpa3_personal_mixed and fiveg"
@@ -353,8 +353,8 @@ class TestvlanModeConnectivitySuiteTwo(object):
@pytest.mark.twog
@allure.story('wpa wpa2 personal mixed 2.4 GHZ Band')
def test_wpa_wpa2_personal_ssid_2g(self, get_vif_state, get_ap_logs,
station_names_twog, setup_profiles,
lf_test,
station_names_twog, setup_profiles,
lf_test, get_lf_logs,
update_report,
test_cases):
"""Client Connectivity open ssid 2.4G
@@ -381,8 +381,8 @@ class TestvlanModeConnectivitySuiteTwo(object):
@pytest.mark.wpa_wpa2_personal_mixed
@pytest.mark.fiveg
@allure.story('wpa wpa2 personal mixed 5 GHZ Band')
def test_wpa_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs,
station_names_fiveg, lf_test, test_cases,
def test_wpa_wpa2_personal_ssid_5g(self, get_vif_state, get_ap_logs, get_lf_logs,
station_names_fiveg, lf_test, test_cases,
update_report):
"""Client Connectivity open ssid 2.4G
pytest -m "client_connectivity and vlan and general and wpa_wpa2_personal_mixed and fiveg"

View File

@@ -1,70 +0,0 @@
#!/usr/bin/python3.9
"""
lf_tools : Tools for LANforge
reboot, run_cmd, etc
./lf_tools --host 10.28.3.8 --port 22 --username root --password lanforge --action reboot
./lf_tools --host 10.28.3.8 --port 22 --username root --password lanforge --action run_cmd --cmd ls
"""
import argparse
import paramiko
class LFTools:
def __init__(self, host="", port=22, username="root", password="lanforge"):
self.host = host
self.port = port
self.username = username
self.password = password
def ssh_cli_connect(self):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print("Connecting to LANforge: %s@%s:%s" % (
self.username, self.host, self.port))
client.connect(self.host, username=self.username, password=self.password,
port=self.port, timeout=10, allow_agent=False, banner_timeout=200)
return client
def run_cmd(self, cmd):
client = self.ssh_cli_connect()
stdin, stdout, stderr = client.exec_command(cmd)
output = "Output: " + str(stdout.read())
error = "Error: " + str(stderr.read())
client.close()
return output, error
def run_action(self, action, cmd):
if action == "reboot":
output, error = self.run_cmd("reboot")
print(output, error)
elif action == "run_cmd":
output, error = self.run_cmd(cmd)
print(output, error)
else:
print("Invalid Action")
def main():
parser = argparse.ArgumentParser(prog="lf_utils",
formatter_class=argparse.RawTextHelpFormatter,
allow_abbrev=True,
epilog="About lf_tools.py",
description="Tools for LANforge System")
parser.add_argument('--host', type=str, help=' --host : IP Address f LANforge System', default="localhost")
parser.add_argument('--port', type=int, help='--passwd of dut', default=22)
parser.add_argument('--username', type=str, help='--username to use on LANforge', default="root")
parser.add_argument('--password', type=str, help='--password to the given username', default="lanforge")
parser.add_argument('--action', type=str, help='--action to perform'
'reboot | run_cmd', default="run_cmd")
parser.add_argument('--cmd', type=str, help='--cmd : used when action is "run_cmd"', default="pwd")
args = parser.parse_args()
lf_tools = LFTools(host=args.host, port=args.port, username=args.username, password=args.password)
lf_tools.run_action(args.action, args.cmd)
if __name__ == '__main__':
main()

55
tools/scp_util.py Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env python3
import argparse
import paramiko
from scp import SCPClient
class SCP_File:
def __init__(self, ip="localhost", port=22, username="lanforge", password="lanforge", remote_path="/home/lanforge/",
local_path="."):
self.ip = ip
self.port = port
self.remote_path = remote_path
self.local_path = local_path
self.username = username
self.password = password
def pull_file(self):
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=self.ip, username=self.username, password=self.password, port=self.port, allow_agent=False,
look_for_keys=False)
# ssh.close()
with SCPClient(ssh.get_transport()) as scp:
scp.get(remote_path=self.remote_path, local_path=self.local_path, recursive=True)
scp.close()
def main():
parser = argparse.ArgumentParser(prog="lf_utils",
formatter_class=argparse.RawTextHelpFormatter,
allow_abbrev=True,
epilog="About lf_tools.py",
description="Tools for LANforge System")
parser.add_argument('--host', type=str, help=' --host : IP Address f LANforge System', default="localhost")
parser.add_argument('--port', type=int, help='--passwd of dut', default=22)
parser.add_argument('--username', type=str, help='--username to use on LANforge', default="lanforge")
parser.add_argument('--password', type=str, help='--password to use on LANforge', default="lanforge")
parser.add_argument('--remote_path', type=str, help='--password to the given username',
default="/home/lanforge/lf_kinstall.pl")
parser.add_argument('--local_path', type=str, help='--action to perform'
'reboot | run_cmd', default=".")
args = parser.parse_args()
lf_tools = SCP_File(ip=args.host, port=args.port,
username=args.username, password=args.password,
remote_path=args.remote_path, local_path=args.local_path)
lf_tools.pull_file()
if __name__ == '__main__':
main()