instruct people to use update_deps.py

This commit is contained in:
Matthew Stidham
2021-01-26 15:52:45 -08:00
committed by Jed Reynolds
parent be7e94916f
commit 2550204f3e
3 changed files with 118 additions and 87 deletions

View File

@@ -10,6 +10,8 @@ Follow our [getting started cookbook](http://www.candelatech.com/cookbook.php?vo
to learn more about how to operate your LANforge client. to learn more about how to operate your LANforge client.
## Getting Started ## ## Getting Started ##
The first step is to run update_deps.py which is located in py-scripts. This command will install all dependencies necessary for lanforge-scripts on your system.
New automation tests and JSON client scripts should go in `../py-scripts`. This directory New automation tests and JSON client scripts should go in `../py-scripts`. This directory
is intended for utility and library scripts. To use this module, make sure your include path is intended for utility and library scripts. To use this module, make sure your include path
captures this module by adding it to your `sys.path`. We recommend your scripts in `../py-scripts` captures this module by adding it to your `sys.path`. We recommend your scripts in `../py-scripts`
@@ -172,4 +174,3 @@ This directory defines the LANforge module holding the following classes:
Have fun coding! Have fun coding!
support@candelatech.com support@candelatech.com

View File

@@ -2,6 +2,9 @@
This directory contains python scripts useful for unit-tests. It uses libraries in ../py-json. Please place new tests in this directory. Unless they are libraries, please avoid adding python scripts to ../py-json. Please read https://www.candelatech.com/cookbook/cli/json-python to learn about how to use the LANforge client JSON directly. Review http://www.candelatech.com/scripting_cookbook.php to understand more about scripts in general. This directory contains python scripts useful for unit-tests. It uses libraries in ../py-json. Please place new tests in this directory. Unless they are libraries, please avoid adding python scripts to ../py-json. Please read https://www.candelatech.com/cookbook/cli/json-python to learn about how to use the LANforge client JSON directly. Review http://www.candelatech.com/scripting_cookbook.php to understand more about scripts in general.
# Getting Started # Getting Started
The first step is to make sure all dependencies are installed in your system by running update_deps.py in this folder.
Please consider using the `LFCliBase` class as your script superclass. It will help you with a consistent set of JSON handling methods and pass and fail methods for recording test results. Below is a sample snippet that includes LFCliBase: Please consider using the `LFCliBase` class as your script superclass. It will help you with a consistent set of JSON handling methods and pass and fail methods for recording test results. Below is a sample snippet that includes LFCliBase:
if 'py-json' not in sys.path: if 'py-json' not in sys.path:
@@ -263,6 +266,3 @@ Test will exit on failure of not receiving traffic for one minute on any station
* class `VapStations` * class `VapStations`
* function `run`: * function `run`:
* function `main`: * function `main`:

View File

@@ -14,23 +14,26 @@ CURR_TEST_NUM=0
CURR_TEST_NAME="BLANK" CURR_TEST_NAME="BLANK"
STOP_NUM=9 STOP_NUM=9
DATA_DIR="/home/lanforge/report-data" DATA_DIR="${TEST_DIR}"
REPORT_DIR="/home/lanforge/html-reports" REPORT_DIR="/home/lanforge/html-reports"
#set -vex
#Test array #Test array
testCommands=("./example_security_connection.py --num_stations $NUM_STA --ssid jedway-r8000-36 --passwd jedway-r8000-36 --radio $RADIO_USED --security wpa " testCommands=(
"./example_security_connection.py --num_stations $NUM_STA --ssid jedway-r8000-36 --passwd jedway-r8000-36 --radio $RADIO_USED --security wpa"
"./example_security_connection.py --num_stations $NUM_STA --ssid $SSID_USED --passwd $SSID_USED --radio $RADIO_USED --security wpa2" "./example_security_connection.py --num_stations $NUM_STA --ssid $SSID_USED --passwd $SSID_USED --radio $RADIO_USED --security wpa2"
"./example_security_connection.py --num_stations $NUM_STA --ssid jedway-wep-48 --passwd jedway-wep-48 --radio $RADIO_USED --security wep" "./example_security_connection.py --num_stations $NUM_STA --ssid jedway-wep-48 --passwd jedway-wep-48 --radio $RADIO_USED --security wep"
"./example_security_connection.py --num_stations $NUM_STA --ssid jedway-wpa3-1 --passwd jedway-wpa3-1 --radio $RADIO_USED --security wpa3" "./example_security_connection.py --num_stations $NUM_STA --ssid jedway-wpa3-1 --passwd jedway-wpa3-1 --radio $RADIO_USED --security wpa3"
"./test_ipv4_connection.py --radio wiphy2 --num_stations $NUM_STA --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY" "./test_ipv4_connection.py --radio wiphy2 --num_stations $NUM_STA --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY"
"./test_generic.py --mgr localhost --radio $RADIO_USED --ssid $SSID_USED --passwd $PASSWD_USED --num_stations $NUM_STA --type lfping --dest 10.40.0.1 --security $SECURITY" "./test_generic.py --radio $RADIO_USED --ssid $SSID_USED --passwd $PASSWD_USED --num_stations $NUM_STA --type lfping --dest 10.40.0.1 --security $SECURITY"
"./test_generic.py --mgr localhost --radio $RADIO_USED --ssid $SSID_USED --passwd $PASSWD_USED --num_stations $NUM_STA --type speedtest --speedtest_min_up 20 --speedtest_min_dl 20 --speedtest_max_ping 150 --security $SECURITY" "./test_generic.py --radio $RADIO_USED --ssid $SSID_USED --passwd $PASSWD_USED --num_stations $NUM_STA --type speedtest --speedtest_min_up 20 --speedtest_min_dl 20 --speedtest_max_ping 150 --security $SECURITY"
"./test_ipv4_l4_urls_per_ten.py --radio $RADIO_USED --num_stations $NUM_STA --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --num_tests 1 --requests_per_ten 600 --target_per_ten 600" "./test_ipv4_l4_urls_per_ten.py --radio $RADIO_USED --num_stations $NUM_STA --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --num_tests 1 --requests_per_ten 600 --target_per_ten 600"
"./test_ipv4_l4_wifi.py --radio wiphy0 --num_stations $NUM_STA --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --test_duration 2m" "./test_ipv4_l4_wifi.py --radio wiphy0 --num_stations $NUM_STA --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --test_duration 2m"
"./test_ipv4_l4.py --radio wiphy3 --num_stations 4 --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --url \"dl http://10.40.0.1 /dev/null\" --test_duration 2m" "./test_ipv4_l4.py --radio wiphy3 --num_stations 4 --security $SECURITY --ssid $SSID_USED --passwd $PASSWD_USED --url \"dl http://10.40.0.1 /dev/null\" --test_duration 2m"
"./test_ipv4_variable_time.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY --test_duration 30s --output_format excel" "./test_ipv4_variable_time.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY --test_duration 30s --output_format excel"
"./test_ipv4_variable_time.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY --test_duration 30s --output_format csv" "./test_ipv4_variable_time.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY --test_duration 30s --output_format csv"
"./create_bridge.py --radio wiphy1 --upstream_port eth1 --target_device sta0000" #"./create_bridge.py --radio wiphy1 --upstream_port eth1 --target_device sta0000"
#"./create_l3.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY" #"./create_l3.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY"
#"./create_l4.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY" #"./create_l4.py --radio wiphy1 --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY"
#"./create_macvlan.py --radio wiphy1" #"./create_macvlan.py --radio wiphy1"
@@ -63,6 +66,11 @@ function echo_print() {
echo "Beginning $CURR_TEST_NAME test..." >>~/test_all_output_file.txt echo "Beginning $CURR_TEST_NAME test..." >>~/test_all_output_file.txt
} }
results=() results=()
detailedresults=()
NOW=$(date +"%Y-%m-%d-%H-%M")
NOW="${NOW/:/-}"
TEST_DIR="/home/lanforge/report-data/${NOW}"
mkdir "$TEST_DIR"
function run_test() { function run_test() {
for i in "${testCommands[@]}"; do for i in "${testCommands[@]}"; do
CURR_TEST_NAME=${i%%.py*} CURR_TEST_NAME=${i%%.py*}
@@ -78,10 +86,14 @@ function run_test() {
if (( $CURR_TEST_NUM > $START_NUM )) || (( $CURR_TEST_NUM == $START_NUM )); then if (( $CURR_TEST_NUM > $START_NUM )) || (( $CURR_TEST_NUM == $START_NUM )); then
echo_print echo_print
echo "$i" echo "$i"
if $i; then $i > "${TEST_DIR}/${i}.txt" 2> "${TEST_DIR}/${i}_stderr.txt"
results+=("<tr><td>${CURR_TEST_NAME}</td><td>Success</td></tr>") retval=$?
grep -i fail "${TEST_DIR}/${i}.txt" && retval=1
chmod 664 "${TEST_DIR}/${i}.txt"
if (( $retval == 0 )); then
results+=("<tr><td>${CURR_TEST_NAME}</td><td class='scriptdetails'>${i}</td><td class='success'>Success</td><td><button onclick=\"toggle_visibility('${i}');\">Show/Hide</button></td></tr>")
else else
results+=("<tr><td>${CURR_TEST_NAME}</td><td>Failure</td></tr>") results+=("<tr><td>${CURR_TEST_NAME}</td><td class='scriptdetails'>${i}</td><td class='failure'>Failure</td><td><button onclick=\"toggle_visibility('${i}');\">Show/Hide</button></td></tr>")
fi fi
fi fi
done done
@@ -118,26 +130,44 @@ td {
h1, h2, h3, h4 { h1, h2, h3, h4 {
font-family: 'Century Gothic',Arial,sans,sans-serif; font-family: 'Century Gothic',Arial,sans,sans-serif;
} }
.scriptdetails {
font-size: 10px;
}
</style> </style>
<script type='text/javascript'>
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
</script>
</head> </head>
<body> <body>
<h1>Test All Scripts Results</h1> <h1>Test All Scripts Results</h1>
<h4>$NOW</h4> <h4>$NOW</h4>
<table border ='1'> <table border ='1'>
" "
tail="</table> tail="</body>
</body>
</html>" </html>"
fname="/home/lanforge/html-reports/test_all_output_file-${NOW}.html" fname="/home/lanforge/html-reports/test_all_output_file-${NOW}.html"
echo $fname >> $fname echo $fname >> $fname
echo "$header" >> $fname echo "$header" >> $fname
echo "${results[@]}" >> $fname echo "${results[@]}" >> $fname
echo "</table>" >> $fname
for item in "${testCommands[@]}"; do
CURR_TEST_NAME=${item%%.py*}
CURR_TEST_NAME=${CURR_TEST_NAME#./*}
echo "<div id=${item} style=\"display:none;\"><iframe src=\"${TEST_DIR}/${item}.txt\"></iframe></div>" >> $fname
done;
echo "$tail" >> $fname echo "$tail" >> $fname
} }
#true >~/test_all_output_file.txt #true >~/test_all_output_file.txt
check_args $1 $2 check_args $1 $2
run_test run_test
echo "${detailedresults}"
html_generator html_generator
#test generic and fileio are for macvlans #test generic and fileio are for macvlans