1#!/bin/bash 2#******************************************************************************* 3#Encoder Binary comparison test model 4# -- Compared with benchmark version using SHA-1 string 5# -- Test bit stream under folder openh264/res 6# -- SHA-1 string of benchmark version for all cases of all bit streams 7# under folder openh264/test/encoder_binary_comparion/SHA1Table 8# -- For more detail,please refer to file AboutTest. 9# 10#brief: 11# -- This file is for local test under Linux/Unix OS 12# -- Start point of the test model, 13# -- For local test, please run below command: 14# ./run_Main.sh LocalTest 15# And wait minutes for the test result. 16# Final test result, you can refer to test output files under folder 17# openh264/test/encoder_binary_comparison/FinalResult. 18# -- If there is something change in encoder design,and found that the bit stream 19# also change,you need to update the SHA1 table files in ./SHA1Table. 20# For update the SHA1 tables, please run below command: 21# ./run_Main.sh UpdateSHA1Table 22# There will be some mismatched warning info, please ignore it. 23# Wait for minutes,the up-to-date will be copied to ./SHA1Table. 24# date: 10/06/2014 Created 25#******************************************************************************* 26 27#usage: runTestTypeCheck ${TestType} 28runTestTypeCheck() 29{ 30 31 echo "TestType is ${TestType}" 32 if [ "${TestType}" = "LocalTest" ] 33 then 34 return 0 35 elif [ "${TestType}" = "UpdateSHA1Table" ] 36 then 37 return 0 38 else 39 echo "usage: --./run_Main.sh LocalTest" 40 echo " or --./run_Main.sh UpdateSHA1Table" 41 exit 1 42 fi 43} 44 45#delete temp files/folders 46runLocalTestPostAction() 47{ 48 ./Scripts/run_SafeDelete.sh ${AllTestDataFolder} >>${DeletedLog} 49 ./Scripts/run_SafeDelete.sh ./Codec >>${DeletedLog} 50 echo -e "\n\n\n" 51 echo -e "\033[32m *************************************************************** \033[0m" 52 echo -e "\033[32m Local test completed! \033[0m" 53 if [ ${Flag} -eq 0 ] 54 then 55 echo -e "\033[32m --all cases pass!! ----bit stream: ${StreamName} \033[0m" 56 else 57 echo -e "\033[31m --not all cases passed ..... \033[0m" 58 fi 59 echo "" 60 echo -e "\033[32m for more detail, please refer to *.log files and *.csv files \033[0m" 61 echo -e "\033[32m in ./FinalResult \033[0m" 62 echo -e "\033[32m *************************************************************** \033[0m" 63 echo "" 64} 65 66#copy up-to-date SHA1 table files to ./SHA1Table 67#and delete temp files/folders 68runUpdateSHA1TablePostAction() 69{ 70 local BitStreamName="" 71 local SHA1TableName="" 72 local FileName="" 73 for file in ${FinalResultFolder}/* 74 do 75 FileName=`echo $file | awk 'BEGIN {FS="/"} {print $NF}'` 76 if [[ "$FileName" =~ UpdateSHA1Table.csv$ ]] 77 then 78 BitStreamName=`echo $FileName | awk 'BEGIN {FS=".264"} {print $1}'` 79 SHA1TableName=${BitStreamName}.264_AllCases_SHA1_Table.csv 80 ./Scripts/run_SafeDelete.sh ${SHA1TableFolder}/${SHA1TableName} >>${DeletedLog} 81 cp $file ${SHA1TableFolder}/${SHA1TableName} 82 fi 83 done 84 ./Scripts/run_SafeDelete.sh ${AllTestDataFolder}>>${DeletedLog} 85 ./Scripts/run_SafeDelete.sh ${FinalResultFolder}>>${DeletedLog} 86 ./Scripts/run_SafeDelete.sh ./Codec>>${DeletedLog} 87 echo -e "\n\n\n" 88 echo -e "\033[32m *************************************************************** \033[0m" 89 echo -e "\033[32m all SHA1 tables in ./${SHA1TableFolder} have been updated \033[0m" 90 echo -e "\n" 91 echo -e "\033[32m *************************************************************** \033[0m" 92 echo -e "\n\n" 93} 94#usage: --./run_Main.sh LocalTest 95# or --./run_Main.sh UpdateSHA1Table 96runMain() 97 { 98 if [ ! $# -eq 1 ] 99 then 100 echo "usage: --./run_Main.sh LocalTest" 101 echo " or --./run_Main.sh UpdateSHA1Table" 102 exit 1 103 fi 104 105 local TestType=$1 106 local BitStreamName="" 107 108 Flag="" 109 SHA1TableFolder="SHA1Table" 110 FinalResultFolder="FinalResult" 111 AllTestDataFolder="AllTestData" 112 DeletedLog="Delete.log" 113 runTestTypeCheck ${TestType} 114 115 # 32 -->32 bits release version;64 -->64 bits release version 116 ./run_PrepareAllTestData.sh 32 117 if [ ! $? -eq 0 ] 118 then 119 echo "failed to prepare test space for all test data!" 120 exit 1 121 fi 122 123 #test all cases 124 let "Flag=0" 125 for Bitsream in ./SHA1Table/*.csv 126 do 127 BitStreamName=`echo ${Bitsream} | awk 'BEGIN {FS="/"} {print $NF} ' ` 128 BitStreamName=`echo ${BitStreamName} | awk 'BEGIN {FS=".264"} {print $1} ' ` 129 BitStreamName="${BitStreamName}.264" 130 echo -e "\n\n\n" 131 132 ./run_OneBitStream.sh ${BitStreamName} ${TestType} 133 if [ ! $? -eq 0 ] 134 then 135 let "Flag=1" 136 fi 137 done 138 139 #post action 140 if [ ${TestType} = "LocalTest" ] 141 then 142 runLocalTestPostAction 143 elif [ ${TestType} = "UpdateSHA1Table" ] 144 then 145 runUpdateSHA1TablePostAction 146 fi 147 } 148TestType=$1 149runMain ${TestType} 150 151