diff options
Diffstat (limited to 'tests/framework/run_test.sh')
-rwxr-xr-x | tests/framework/run_test.sh | 76 |
1 files changed, 66 insertions, 10 deletions
diff --git a/tests/framework/run_test.sh b/tests/framework/run_test.sh index ad624ef25..a9feaab55 100755 --- a/tests/framework/run_test.sh +++ b/tests/framework/run_test.sh @@ -16,6 +16,7 @@ MY_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +NNFW_HOME="$(dirname $(dirname ${MY_PATH}))" CACHE_ROOT_PATH=$MY_PATH/"cache" TEST_ROOT_PATH=$MY_PATH/"tests" REPORT_DIR="report" @@ -31,13 +32,39 @@ function Usage() echo "--driverbin - (default=../../Product/out/bin/tflite_run) runner for runnning framework tests" echo "--reportdir - (default=report) directory to place tap files" echo "--tapname - (default=framework_test.tap) file name to be written for tap" + echo "--ldlibrarypath - (default=${NNFW_HOME}/Product/out/lib) path to '*.so' files" echo "" } +function verify_downloaded_file() +{ + LOCAL_PATH=$1 + REMOTE_URL=$2 + + # Ignore checking md5 in cache + if [ ! -z $IGNORE_MD5 ] && [ "$IGNORE_MD5" == "1" ]; then + return 0 + fi + + LOCAL_HASH=$(md5sum $LOCAL_PATH | awk '{ print $1 }') + REMOTE_HASH=$(curl -I -ss $REMOTE_URL | grep '^Content-MD5' | tr -d '\r\n' | awk '{ print $2 }' | base64 -d | xxd -p) + # TODO Emit an error when Content-MD5 field was not found. (Server configuration issue) + + if [ "$LOCAL_HASH" != "$REMOTE_HASH" ]; then + echo "Downloaded file is outdated or incomplete." + return 1 + fi +} + DRIVER_BIN="" +NNFW_LD_LIBRARY_PATH="" TAP_NAME="framework_test.tap" TEST_LIST=() DOWNLOAD_MODE="off" + +# Support environment variable setting for mirror server +FIXED_MODELFILE_SERVER="${MODELFILE_SERVER:-}" + for i in "$@" do case $i in @@ -57,6 +84,9 @@ do --download=*) DOWNLOAD_MODE=${i#*=} ;; + --ldlibrarypath=*) + NNFW_LD_LIBRARY_PATH=${i#*=} + ;; *) TEST_LIST+=( $i ) ;; @@ -69,7 +99,7 @@ if [[ ${#TEST_LIST[@]} -eq 0 ]]; then fi if [ ! -n "$DRIVER_BIN" ]; then - DRIVER_BIN=$MY_PATH/"../../Product/out/bin/tflite_run" + DRIVER_BIN="$NNFW_HOME/Product/out/bin/tflite_run" fi # Check test driver setting @@ -91,10 +121,20 @@ run_tests() done echo "======================" + if [ -z "$NNFW_LD_LIBRARY_PATH" ]; then + NNFW_LD_LIBRARY_PATH="$NNFW_HOME/Product/out/lib/" + else + NNFW_LD_LIBRARY_PATH="$NNFW_LD_LIBRARY_PATH:$NNFW_HOME/Product/out/lib/" + fi + + TOTAL_RESULT=0 # 0(normal) or 1(abnormal) i=0 for TEST_NAME in $SELECTED_TESTS; do + # Test configure initialization ((i++)) STATUS="enabled" + MODELFILE_SERVER_PATH="" + MODELFILE_NAME="" source $TEST_ROOT_PATH/$TEST_NAME/config.sh LOWER_STATUS="$(echo $STATUS | awk '{print tolower($0)}')" @@ -108,6 +148,10 @@ run_tests() TEST_CACHE_PATH=$CACHE_ROOT_PATH/$TEST_NAME MODELFILE=$TEST_CACHE_PATH/$MODELFILE_NAME + MODELFILE_URL="$MODELFILE_SERVER_PATH/$MODELFILE_NAME" + if [ -n "$FIXED_MODELFILE_SERVER" ]; then + MODELFILE_URL="$FIXED_MODELFILE_SERVER/$MODELFILE_NAME" + fi # Download model file if [ ! -e $TEST_CACHE_PATH ]; then @@ -115,20 +159,21 @@ run_tests() fi # Download unless we have it in cache (Also check md5sum) - if [ ! -e $MODELFILE ] || [ $(md5sum $MODELFILE | awk '{ print $1 }') != "$MODELFILE_MD5SUM" ]; then + if [ ! -e $MODELFILE ] || ! verify_downloaded_file "$MODELFILE" "$MODELFILE_URL"; then echo "" echo "Download test file for $TEST_NAME" echo "======================" rm -f $MODELFILE # Remove invalid file if exists pushd $TEST_CACHE_PATH - wget -nv $MODELFILE_SERVER_URL/$MODELFILE_NAME + wget -nv $MODELFILE_URL if [ "${MODELFILE_NAME##*.}" == "zip" ]; then unzip -o $MODELFILE_NAME fi popd fi + # Find model file for downloaded by zip if [ "${MODELFILE_NAME##*.}" == "zip" ]; then pushd $TEST_CACHE_PATH MODELFILE=$TEST_CACHE_PATH/$(ls *.tflite) @@ -138,15 +183,19 @@ run_tests() echo "" echo "Run $TEST_NAME" echo "======================" + # Run driver to test framework - $DRIVER_BIN $MODELFILE - RESULT=$? - if [[ $RESULT -eq 0 ]]; then + LD_LIBRARY_PATH="${NNFW_LD_LIBRARY_PATH}:${LD_LIBRARY_PATH}" $DRIVER_BIN $MODELFILE + + #$DRIVER_BIN $MODELFILE + if [[ $? -eq 0 ]]; then echo "ok $i - $TEST_NAME" >> $REPORT_DIR/$TAP_NAME else echo "not ok $i - $TEST_NAME" >> $REPORT_DIR/$TAP_NAME + TOTAL_RESULT=1 fi done + return $TOTAL_RESULT } download_tests() @@ -163,11 +212,18 @@ download_tests() i=0 for TEST_NAME in $SELECTED_TESTS; do + # Test configure initialization ((i++)) + MODELFILE_SERVER_PATH="" + MODELFILE_NAME="" source $TEST_ROOT_PATH/$TEST_NAME/config.sh TEST_CACHE_PATH=$CACHE_ROOT_PATH/$TEST_NAME MODELFILE=$TEST_CACHE_PATH/$MODELFILE_NAME + MODELFILE_URL="$MODELFILE_SERVER/$MODELFILE_NAME" + if [ -n "$FIXED_MODELFILE_SERVER" ]; then + MODELFILE_URL="$FIXED_MODELFILE_SERVER/$MODELFILE_NAME" + fi # Download model file if [ ! -e $TEST_CACHE_PATH ]; then @@ -175,17 +231,16 @@ download_tests() fi # Download unless we have it in cache (Also check md5sum) - if [ ! -e $MODELFILE ] || [ $(md5sum $MODELFILE | awk '{ print $1 }') != "$MODELFILE_MD5SUM" ]; then + if [ ! -e $MODELFILE ] || ! verify_downloaded_file "$MODELFILE" "$MODELFILE_URL"; then echo "" echo "Download test file for $TEST_NAME" echo "======================" rm -f $MODELFILE # Remove invalid file if exists pushd $TEST_CACHE_PATH - wget -nv $MODELFILE_SERVER_URL/$MODELFILE_NAME - + wget -nv $MODELFILE_URL if [ "${MODELFILE_NAME##*.}" == "zip" ]; then - unzip $MODELFILE_NAME + unzip -o $MODELFILE_NAME fi popd fi @@ -226,3 +281,4 @@ if [[ "$DOWNLOAD_MODE" == "on" ]]; then fi run_tests $TESTS_TO_RUN +exit $? |