#!/bin/bash #******************************************************************************* #Encoder Binary comparison test model # -- Compared with benchmark version using SHA-1 string # -- Test bit stream under folder openh264/res # -- SHA-1 string of benchmark version for all cases of all bit streams # under folder openh264/test/encoder_binary_comparion/SHA1Table # -- For more detail,please refer to file AboutTest. # #brief: # -- This file is for local test under Linux/Unix OS # -- Start point of the test model, # -- For local test, please run below command: # ./run_Main.sh LocalTest # And wait minutes for the test result. # Final test result, you can refer to test output files under folder # openh264/test/encoder_binary_comparison/FinalResult. # -- If there is something change in encoder design,and found that the bit stream # also change,you need to update the SHA1 table files in ./SHA1Table. # For update the SHA1 tables, please run below command: # ./run_Main.sh UpdateSHA1Table # There will be some mismatched warning info, please ignore it. # Wait for minutes,the up-to-date will be copied to ./SHA1Table. # date: 10/06/2014 Created #******************************************************************************* #usage: runTestTypeCheck ${TestType} runTestTypeCheck() { if [ ! $# -eq 1 ] then echo "usage: runTestTypeCheck \${TestType}" exit 1 fi local TestType=$1 echo "TestType is ${TestType}" if [ "${TestType}" = "LocalTest" ] then return 0 elif [ "${TestType}" = "UpdateSHA1Table" ] then return 0 else echo "usage: --./run_Main.sh LocalTest" echo " or --./run_Main.sh UpdateSHA1Table" exit 1 fi } #delete temp files/folders runLocalTestPostAction() { ./Scripts/run_SafeDelete.sh ${AllTestDataFolder} >>${DeletedLog} ./Scripts/run_SafeDelete.sh ./Codec >>${DeletedLog} echo -e "\n\n\n" echo -e "\033[32m *************************************************************** \033[0m" echo -e "\033[32m Local test completed, \033[0m" if [ ${Flag} -eq 0 ] then echo -e "\033[32m --all cases pass!! ----bit stream: ${StreamName} \033[0m" else echo -e "\033[31m --not all cases passed .....\033[0m" fi echo "" echo -e "\033[32m for more detail, please refer to xxx.log files and xxx.csv files in ./FinalResult \033[0m" echo -e "\033[32m *************************************************************** \033[0m" echo "" } #copy up-to-date SHA1 table files to ./SHA1Table #and delete temp files/folders runUpdateSHA1TablePostAction() { local BitStreamName="" local SHA1TableName="" local FileName="" for file in ${FinalResultFolder}/* do FileName=`echo $file | awk 'BEGIN {FS="/"} {print $NF}'` if [[ "$FileName" =~ UpdateSHA1Table.csv$ ]] then BitStreamName=`echo $FileName | awk 'BEGIN {FS=".264"} {print $1}'` SHA1TableName=${BitStreamName}.264_AllCases_SHA1_Table.csv ./Scripts/run_SafeDelete.sh ${SHA1TableFolder}/${SHA1TableName} >>${DeletedLog} cp $file ${SHA1TableFolder}/${SHA1TableName} fi done ./Scripts/run_SafeDelete.sh ${AllTestDataFolder}>>${DeletedLog} ./Scripts/run_SafeDelete.sh ${FinalResultFolder}>>${DeletedLog} ./Scripts/run_SafeDelete.sh ./Codec>>${DeletedLog} echo -e "\n\n\n" echo -e "\033[32m *************************************************************** \033[0m" echo -e "\033[32m all SHA1 tables in ./${SHA1TableFolder} have been updated \033[0m" echo -e "\n" echo -e "\033[32m *************************************************************** \033[0m" echo -e "\n\n" } #usage: --./run_Main.sh LocalTest # or --./run_Main.sh UpdateSHA1Table runMain() { if [ ! $# -eq 1 ] then echo "usage: --./run_Main.sh LocalTest" echo " or --./run_Main.sh UpdateSHA1Table" exit 1 fi local TestType=$1 local BitStreamName="" Flag="" SHA1TableFolder="SHA1Table" FinalResultFolder="FinalResult" AllTestDataFolder="AllTestData" DeletedLog="Delete.log" runTestTypeCheck ${TestType} # 32 -->32 bits release version;64 -->64 bits release version ./run_PrepareAllTestData.sh 32 if [ ! $? -eq 0 ] then echo "failed to prepare test space for all test data!" exit 1 fi #test all cases let "Flag=0" for Bitsream in ./SHA1Table/*.csv do BitStreamName=`echo ${Bitsream} | awk 'BEGIN {FS="/"} {print $NF} ' ` BitStreamName=`echo ${BitStreamName} | awk 'BEGIN {FS="_AllCase"} {print $1} ' ` echo -e "\n\n\n" ./run_OneBitStream.sh ${BitStreamName} ${TestType} if [ ! $? -eq 0 ] then let "Flag=1" fi done #post action if [ ${TestType} = "LocalTest" ] then runLocalTestPostAction elif [ ${TestType} = "UpdateSHA1Table" ] then runUpdateSHA1TablePostAction fi } TestType=$1 runMain ${TestType}