Files
wlan-testing/setup_env.bash
shivam 3eb163c769 updated the env script to support pytest.ini creation and option to add test packages depending upon the user input
Also added an option to not apply config which a particular dut doesn't support

Signed-off-by: shivam <shivam.thakur@candelatech.com>
2023-01-02 20:04:51 +05:30

261 lines
11 KiB
Bash
Executable File

#!/usr/bin/bash
# Setup python environment variable and pip environment variable like
# export PYTHON=/usr/bin/python3
# export PIP=/usr/bin/pip3
#sh setup_env.bash -t tip_2x -d all -n "Shivam Thakur" -o TIP -e shivam.thakur@candelatech.com -i "TIP OpenWIFI 2.X Library"
set -e
helpFunction()
{
echo "Open Wifi CICD Test Automation Installation"
echo "Usage: $0 -t target -d device "
echo -e "\t-t Target SDK (AP and/or controller Library) eg. tip_2x"
echo -e "\t-n Author Name eg. Shivam Thakur"
echo -e "\t-o Organization eg. tip_2x"
echo -e "\t-e Author Email Address eg. tip_2x"
echo -e "\t-i Description Info eg. tip_2x"
echo -e "\t-d Test Device Name eg. lanforge | perfecto | all"
echo
echo -e "Required environment variables:"
echo -e "\tPYTHON - full path to Python3 executable (minimal version is 3.8). Example value - /usr/bin/python3"
echo -e "\tPIP - full path to PIP3 executable. Example value - /usr/bin/pip3"
exit 1 # Exit script after printing help
}
[[ -z ${PYTHON+x} ]] && echo "You must set the variable PYTHON in order to use this script." && echo && helpFunction && exit 1
[[ -z ${PIP+x} ]] && echo "You must set the variable PIP in order to use this script." && echo && helpFunction && exit 1
while getopts "t:n:o:e:i:d:" opt
do
case "$opt" in
t ) target="$OPTARG" ;;
n ) author="$OPTARG" ;;
o ) org="$OPTARG" ;;
e ) email="$OPTARG" ;;
i ) description="$OPTARG" ;;
d ) device="$OPTARG" ;;
? ) helpFunction ;; # Print helpFunction in case parameter is non-existent
esac
done
# Print helpFunction in case parameters are empty
if [ -z "$target" ] || [ -z "$author" ] || [ -z "$org" ] || [ -z "$email" ] || [ -z "$description" ] || [ -z "$device" ]
then
echo "Some or all of the parameters are empty";
helpFunction
fi
# Begin script in case all parameters are correct
echo "Target SDK for " "$target"
echo "$device"
# Check Python version and pip version
if ! hash $PYTHON; then
echo "python is not installed"
exit 1
fi
x=$($PYTHON -V)
echo $x
ver=$([[ "$x" =~ "Python 3" ]] && echo "38")
echo $ver
#ver=$($PYTHON -V 2>&1 | sed 's/.* \([0-9]\).\([0-9]\).*/\1\2/')
if [ "$ver" -lt "38" ]; then
echo "This script requires python 3.8 or greater"
exit 1
fi
if [ "$device" == "lanforge" ] || [ "$device" == "all" ]
then
if [ ! -d ../wlan-lanforge-scripts ]
then
cd ..
git clone https://github.com/Telecominfraproject/wlan-lanforge-scripts
cd wlan-lanforge-scripts
git checkout WIFI-1321-create-a-lan-forge-pip-module
cd ../wlan-testing/
fi
if [ -d ../wlan-lanforge-scripts ]
then
cd ../wlan-lanforge-scripts
if [ -d ../lanforge_scripts ]
then
$PIP uninstall ../lanforge_scripts/dist/*.whl
rm -rf ../lanforge_scripts
fi
bash to_pip.sh
$PIP install ../lanforge_scripts/dist/*.whl #--force-reinstall
echo "Installed LANforge PIP Module"
cd ../wlan-testing/
mkdir -p ~/.pip
echo "[global]" > ~/.pip/pip.conf
echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf
echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf
$PIP install -r requirements.txt
rm -f tests/imports.py
touch tests/imports.py
if [ $target == "tip_2x" ]
then
cd libs/tip_2x
$PYTHON setup.py bdist_wheel
$PIP install dist/*.whl --force-reinstall
cd ../../
fi
x=$(whoami)
echo -e "\"\"\"\nRegistered Target Imports\n\"\"\"\nimport sys\nimport importlib\n\nsys.path.append('/usr/local/bin')\n\nsys.path.append('/home/$x/.local//bin/')\n\nsys.path.append('/home/$x/.local/lib/python3.8/site-packages/')\n\n" >> tests/imports.py
echo -e "########################################################################################################################" >> tests/imports.py
echo -e "\"\"\"
Target Name:$target
Author Name:$author
Organization:$org
Register ID:1
Email:$email
description:$description
\"\"\"" >> tests/imports.py
echo -e "
try:
target = importlib.import_module(\"tip_2x\")
target = target.tip_2x
except ImportError as e:
print(e)
sys.exit(\"Python Import Error: \" + str(e))
" >> tests/imports.py
echo -e "########################################################################################################################" >> tests/imports.py
echo -e "########################################################################################################################" >> tests/imports.py
echo -e "\"\"\"
Target Name:lanforge_scripts
Author Name:$author
Organization:$org
Register ID:2
Email:$email
description:Candela LANforge Based Library
\"\"\"" >> tests/imports.py
echo -e "
try:
lanforge_libs = importlib.import_module(\"lanforge_scripts.lf_libs.lf_libs\")
lf_libs = lanforge_libs.lf_libs
scp_file = lanforge_libs.SCP_File
lanforge_tests = importlib.import_module(\"lanforge_scripts.lf_libs.lf_tests\")
lf_tests = lanforge_tests.lf_tests
except ImportError as e:
print(e)
sys.exit(\"Python Import Error: \" + str(e))
" >> tests/imports.py
echo -e "########################################################################################################################" >> tests/imports.py
cd libs/perfecto_interop
$PYTHON setup.py bdist_wheel
$PIP install dist/*.whl --force-reinstall
cd ../../
echo -e "########################################################################################################################" >> tests/imports.py
echo -e "\"\"\"
Target Name:perfecto_interop
Author Name:$author
Organization:$org
Register ID:2
Email:$email
description:Perfecto Based Interop Library
\"\"\"" >> tests/imports.py
echo -e "
try:
perfecto_interop = importlib.import_module(\"perfecto_interop\")
android_tests = perfecto_interop.android_tests
ios_tests = perfecto_interop.ios_tests
except ImportError as e:
print(e)
sys.exit(\"Python Import Error: \" + str(e))
" >> tests/imports.py
echo -e "########################################################################################################################" >> tests/imports.py
fi
fi
WLAN_TESTING_PATH=$(pwd)"/tests/"
echo $WLAN_TESTING_PATH
rm -f tests/pytest.ini
touch tests/pytest.ini
echo -e "[pytest]
python_files = test_*.py setup_*.py
norecursedirs = .svn _build tmp*
addopts= --junitxml=test_everything.xml
log_format = %(asctime)s %(levelname)s %(message)s
log_date_format = %Y-%m-%d %H:%M:%S
;norecursedirs=out build
num_stations=1
testpaths =
$WLAN_TESTING_PATH
# Cloud SDK settings
sdk-customer-id=2
#fIRMWARE Option
firmware=0
# Radius Settings
radius_server_ip=192.168.200.75
radius_port=1812
radius_secret=testing123
# Testrail Info
tr_url=https://telecominfraproject.testrail.com
tr_user=cicd@tip.com
tr_pass=Open$Wifi123
tr_project_id=WLAN
tr_prefix=TIP_
milestone=29
filterwarnings=ignore::UserWarning
markers =
; Test Suites, It Contains
ow_sanity_lf: OpenWifi Sanity Test Plan
ow_performance_lf: OpenWifi Performance Test Plan
ow_sanity_interop: OpenWifi Sanity with Interop
; Test Suites, It Contains
client_connect_tests: Client Connect Test Cases with bridge|nat|vlan modes across 2.4|5|6 GHz bands with Various Encryptions
client_connectivity_tests: Client Connectivity Test Cases with bridge|nat|vlan modes across 2.4|5|6 GHz bands with Various Encryptions
dfs_tests: Dynamic Frequency Selection Test Cases
multi_psk_tests: Multi PSK Test Cases
rate_limiting_tests: Rate Limiting Test Cases
dvlan_tests: Dynamic VLAN Test Cases
dynamic_qos_tests: Dynamic QOS Test Cases
multi_vlan_tests: Multi VLAN Combination based Test Cases
client_scale_tests: Client Capacity Tests with maximum possible Stations bridge|nat|vlan 2.4|5|6 GHz Bands
peak_throughput_tests: Single Client Peak Performance Test with various Bandwidths across 2.4|5|6 GHz Bands with various Client Types
dataplane_tests: Single Client Throughput Test with various pkt sizes with UL|DL|BI with AC|AX Client Types across 2.4|5|6 GHz Bands
multi_band_tests: Multi Band Performance Test on bridge|nat|vlan mode with Single Client on each of the 2.4|5|6 GHz Bands
rate_vs_range_tests: Rate verses Range Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
rate_vs_orientation_tests: Rate verses Orientation Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
rx_sensitivity_tests: Receiver Sensitivity Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
spatial_consistency_tests: Spatial Consistency Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
multi_assoc_disassoc_tests: Multi Association and Disassociation Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
multi_station_performance_tests: Multi Station Performance Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
mu_mimo_performance_tests: Multi User MIMO Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
ofdma_tests: OFDMA Tests with Various Combinations bridge|nat|vlan 2.4|5|6 GHz Bands
; Supported Markers
bridge: Use this marker to run bridge mode tests in each of the above test plans/suites
nat: Use this marker to run nat mode tests in each of the above test plans/suites
vlan: Use this marker to run vlan mode tests in each of the above test plans/suites
twog: Use this marker to run 2.4 GHz tests in each of the above test plans/suites
fiveg: Use this marker to run 5 GHz tests in each of the above test plans/suites
sixg: Use this marker to run 6 GHz tests in each of the above test plans/suites
open: Use this marker to run open Encryption tests in each of the above test plans/suites
wpa: Use this marker to run wpa Encryption tests in each of the above test plans/suites
wpa2_personal: Use this marker to run wpa2_personal Encryption tests in each of the above test plans/suites
wpa3_personal: Use this marker to run wpa3_personal Encryption tests in each of the above test plans/suites
wpa3_personal_mixed: Use this marker to run wpa3_personal_mixed Encryption tests in each of the above test plans/suites
wpa_wpa2_personal_mixed: Use this marker to run wpa_wpa2_personal_mixed Encryption tests in each of the above test plans/suites
wpa_enterprise: Use this marker to run wpa_enterprise Encryption tests in each of the above test plans/suites
wpa2_enterprise: Use this marker to run wpa2_enterprise Encryption tests in each of the above test plans/suites
wpa3_enterprise: Use this marker to run wpa3_enterprise Encryption tests in each of the above test plans/suites
wpa_wpa2_enterprise_mixed: Use this marker to run wpa_wpa2_enterprise_mixed Encryption tests in each of the above test plans/suites
wpa3_enterprise_mixed: Use this marker to run wpa3_enterprise_mixed Encryption tests in each of the above test plans/suites
" >> tests/pytest.ini