#/bin/bash ### This tool is for BPI-R4PRO 8X function test in manufacturer ### RET=0 PREFIX=`pwd`/ DEUBGFILE=/var/run/r4pro-8x-ft-script.log AUTOMATIC_CASE_NUM=0 MANUAL_CASE_NUM=0 CASE_NUM=0 QUIT=0 echo " " echo " " echo " " echo "######################################################################################" echo "####################### BPI-R4PRO-8X 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=10 CASE_NUM=10 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="NAND_Test_Case" FUNC_5="nand-script" TEXT_6="NVME_Test_Case" FUNC_6="nvme-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" TEXT_10="USIM_Test_sase" FUNC_10="usim-script" } ### Options for manual test cases ### step_manual_func() { TITLE="Manual Test Cases" MANUAL_CASE_NUM=9 CASE_NUM=9 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="USB20_Test_Case" FUNC_4="usb20-script" TEXT_5="USB30_Test_Case" FUNC_5="usb30-script" TEXT_6="Ethernet_Test_Case" FUNC_6="ethernet-script" TEXT_7="M2KeyB_USB2_Test_Case" FUNC_7="m2keybusb2-script" TEXT_8="M2KeyB_USB3_Test_Case" FUNC_8="m2keybusb3-script" TEXT_9="26PIN_Test_Case" FUNC_9="26pin-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}