• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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