summaryrefslogtreecommitdiff
path: root/tests/framework/run_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/framework/run_test.sh')
-rwxr-xr-xtests/framework/run_test.sh76
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 $?