testing-script/app_ft-script.sh
2025-04-07 17:28:13 +08:00

271 lines
5.5 KiB
Bash

#/bin/bash
### This tool is for BPI-R4 function test in manufacturer ###
RET=0
PREFIX=`pwd`/
DEUBGFILE=/var/run/r4-ft-script.log
AUTOMATIC_CASE_NUM=0
MANUAL_CASE_NUM=0
CASE_NUM=0
QUIT=0
echo " "
echo " "
echo " "
echo "######################################################################################"
echo "######################## BPI-R4 Function Testing Start ########################"
### Sets QUIT variable so script will finish. ###
quit()
{
QUIT=$1
}
### Sets ALL variable so script will run all test cases. ###
run_all_cases()
{
ALL="1"
}
### Run Function Test Case Script ###
run_script()
{
eval script_name=$1
eval script_file="${script_name}.sh"
eval args=$2
if [ ${script_name} == "run_all_cases" ]; then
${script_name} ${args}
return 0
fi
if [ ${script_name} == "quit" ]; then
${script_name} ${args}
return 0;
fi
cd ${script_name} > /dev/null
if [ -x ${script_file} ]; then
if [ "$ALL" == 1 ]; then
#./${script_file} >> ${DEUBGFILE} 2>&1
set -o pipefail
./${script_file} | tee -a ${DEUBGFILE}
SRET=$?
else
./${script_file}
SRET=$?
fi
if [ ${SRET} == 0 ] ; then
cd - > /dev/null
return 0
else
cd - > /dev/null
return 1
fi
else
cd - > /dev/null
echo "${script_file} is not available, please install ${script_file} scripts"
exit 1
fi
cd - > /dev/null
return 1
}
### Options for automaic test cases ###
step_automatic_func()
{
TITLE="Automatic Test Cases"
AUTOMATIC_CASE_NUM=9
CASE_NUM=9
TEXT_1="Memory_Test_Case"
FUNC_1="memory-script"
TEXT_2="WIFI_Test_Case"
FUNC_2="wifi-script"
TEXT_3="miniPCIeX2_Test_Case"
FUNC_3="minipciex2-script"
TEXT_4="miniPCIeUSB_Test_Case"
FUNC_4="minipcieusb-script"
TEXT_5="NVME_Test_Case"
FUNC_5="nvme-script"
TEXT_6="NAND_Test_sase"
FUNC_6="nand-script"
TEXT_7="EMMC_Test_sase"
FUNC_7="emmc-script"
TEXT_8="RTC_Test_sase"
FUNC_8="rtc-script"
TEXT_9="EEPROM_Test_sase"
FUNC_9="eeprom-script"
}
### Options for manual test cases ###
step_manual_func()
{
TITLE="Manual Test Cases"
MANUAL_CASE_NUM=10
CASE_NUM=10
TEXT_1="FAN_Test_Case"
FUNC_1="fan-script"
TEXT_2="LED_Test_Case"
FUNC_2="led-script"
TEXT_3="KEY_Test_Case"
FUNC_3="key-script"
TEXT_4="USB30_Test_Case"
FUNC_4="usb30-script"
TEXT_5="USB20_Test_Case"
FUNC_5="usb20-script"
TEXT_6="Ethernet_Test_Case"
FUNC_6="ethernet-script"
TEXT_7="26PINGPIO_Test_Case"
FUNC_7="26pingpio-script"
TEXT_8="M2KeyB_PCIE_Test_Case"
FUNC_8="m2keybpcie-script"
TEXT_9="M2KeyB_USB2_Test_Case"
FUNC_9="m2keybusb2-script"
TEXT_10="M2KeyB_USB3_Test_Case"
FUNC_10="m2keybusb3-script"
}
STEPS_1="step_automatic_func"
STEPS_2="step_manual_func"
rm -rf ${DEUBGFILE}
touch ${DEUBGFILE}
echo 0 > /proc/sys/kernel/printk
while [ "$QUIT" == "0" ]; do
OPTION_NUM=1
ALL="0"
echo "[$OPTION_NUM] run all cases"
eval OPTIONS_${OPTION_NUM}="run_all_cases"
eval OPTIONS_TXT_${OPTION_NUM}="All_Test_Cases"
let OPTION_NUM+=1
for s in `seq 2`
do
STEPS_VAR="STEPS_${s}"
eval STEPS_VAR=\$${STEPS_VAR}
${STEPS_VAR}
for i in `seq ${CASE_NUM}`
do
TEXT_VAR="TEXT_${i}"
FUNC_VAR="FUNC_${i}"
eval TEXT_VAR=\$${TEXT_VAR}
eval FUNC_VAR=\$${FUNC_VAR}
echo "[$OPTION_NUM] ${TEXT_VAR}"
eval OPTIONS_${OPTION_NUM}=${FUNC_VAR}
eval OPTIONS_TXT_${OPTION_NUM}=${TEXT_VAR}
let OPTION_NUM+=1
done
#echo ""
done
echo "[$OPTION_NUM] Exit Script"
eval OPTIONS_${OPTION_NUM}="quit"
eval OPTIONS_TXT_${OPTION_NUM}="Quit"
echo ""
echo -n "Option: "
read our_entry
echo ""
if [ ${our_entry} -lt 1 ]; then
echo "Wrong Selecttion Number"
continue
else
if [ ${our_entry} -gt ${OPTION_NUM} ]; then
echo "Wrong Selecttion Number"
continue
fi
fi
OPTIONS_VAR="OPTIONS_${our_entry}"
eval OPTIONS_VAR=\$${OPTIONS_VAR}
run_script ${OPTIONS_VAR} ${our_entry}
index=1
if [ "$ALL" == "1" ] ; then
for case_n in `seq ${OPTION_NUM}`
do
echo "---------------------------------------"
OPTIONS_VAR="OPTIONS_${case_n}"
OPTIONS_TXT_VAR="OPTIONS_TXT_${case_n}"
eval OPTIONS_VAR=\$${OPTIONS_VAR}
eval OPTIONS_TXT_VAR=\$${OPTIONS_TXT_VAR}
if [ ${OPTIONS_VAR} == "quit" ]; then
quit
break
fi
if [ ${OPTIONS_VAR} == "run_all_cases" ]; then
continue
fi
eval TEST_ITEM_${index}=${OPTIONS_TXT_VAR}
run_script ${OPTIONS_VAR} ${case_n}
eval TEST_RESULT_${index}=$?
let index+=1
done
let index-=1
echo "============================================"
echo "Test Result"
echo "--------------------------------------------"
echo " Item Result "
echo "--------------------------------------------"
for i in `seq ${index}`
do
TEST_ITEM_VAR="TEST_ITEM_${i}"
TEST_RESULT_VAR="TEST_RESULT_${i}"
eval TEST_ITEM_VAR=\$${TEST_ITEM_VAR}
eval TEST_RESULT_VAR=\$${TEST_RESULT_VAR}
echo -n "${TEST_ITEM_VAR} " | awk -F ',' '{printf("%-36s", $1)}'
if [ ${TEST_RESULT_VAR} == 0 ]; then
echo "Pass"
else
echo "Fail"
fi
done
fi
if [ "$QUIT" == "0" ] ; then
echo
fi
done
echo "######################################################################################"
echo " "
echo " "
echo " "
return ${RET}