ca282c84a0513bc74d9cab1a2e446d5abf6b375f
[platform/core/ml/nnfw.git] / tests / scripts / nnfw_api_gtest / install_nnfw_api_gtest_nnpackages.sh
1 #!/usr/bin/env bash
2
3 # TODO Reuse the fuction in run_test.sh. This is its duplication.
4 function need_download()
5 {
6     LOCAL_PATH=$1
7     REMOTE_URL=$2
8     if [ ! -e $LOCAL_PATH ]; then
9         return 0;
10     fi
11     # Ignore checking md5 in cache
12     if [ ! -z $IGNORE_MD5 ] && [ "$IGNORE_MD5" == "1" ]; then
13         return 1
14     fi
15
16     LOCAL_HASH=$(md5sum $LOCAL_PATH | awk '{ print $1 }')
17     REMOTE_HASH=$(curl -ss $REMOTE_URL | md5sum  | awk '{ print $1 }')
18     # TODO Emit an error when Content-MD5 field was not found. (Server configuration issue)
19     if [ "$LOCAL_HASH" != "$REMOTE_HASH" ]; then
20         echo "Downloaded file is outdated or incomplete."
21         return 0
22     fi
23     return 1
24 }
25
26 # TODO Reuse the fuction in run_test.sh. This is its duplication.
27 download_tests()
28 {
29     SELECTED_TESTS=$@
30
31     echo ""
32     echo "Downloading tests:"
33     echo "======================"
34     for TEST_NAME in $SELECTED_TESTS; do
35         echo $TEST_NAME
36     done
37     echo "======================"
38
39     for TEST_NAME in $SELECTED_TESTS; do
40         # Test configure initialization
41         MODELFILE_SERVER_PATH=""
42         MODELFILE_NAME=""
43         source $TEST_ROOT_PATH/$TEST_NAME/config.sh
44
45         TEST_CACHE_PATH=$CACHE_ROOT_PATH/$TEST_NAME
46         MODELFILE=$TEST_CACHE_PATH/$MODELFILE_NAME
47         MODELFILE_URL="$MODELFILE_SERVER/$MODELFILE_NAME"
48         if [ -n  "$FIXED_MODELFILE_SERVER" ]; then
49             MODELFILE_URL="$FIXED_MODELFILE_SERVER/$MODELFILE_NAME"
50         fi
51
52         # Download model file
53         if [ ! -e $TEST_CACHE_PATH ]; then
54             mkdir -p $TEST_CACHE_PATH
55         fi
56
57         # Download unless we have it in cache (Also check md5sum)
58         if need_download "$MODELFILE" "$MODELFILE_URL"; then
59             echo ""
60             echo "Download test file for $TEST_NAME"
61             echo "======================"
62
63             rm -f $MODELFILE # Remove invalid file if exists
64             pushd $TEST_CACHE_PATH
65             wget -nv $MODELFILE_URL
66             if [ "${MODELFILE_NAME##*.}" == "zip" ]; then
67                 unzip -o $MODELFILE_NAME
68                 rm *.zip
69             fi
70             popd
71         fi
72
73     done
74 }
75
76 realpath()
77 {
78   readlink -e -- "$@"
79 }
80
81 usage()
82 {
83     echo "Usage: $0 --modelfile-server=MODELFILE_SERVER --install-path=INSTALL_DIR"
84     echo "  MODELFILE_SERVER : Base URL of the model file server"
85     echo "  INSTALL_DIR      : Path to be installed"
86     exit 1
87 }
88
89 while [[ $# -gt 0 ]]
90 do
91     key="$(echo $1 | awk '{print tolower($0)}')"
92     case "$key" in
93         -?|-h|--help)
94             usage
95             exit 1
96             ;;
97         --modelfile-server)
98             MODELFILE_SERVER="$2"
99             shift
100             ;;
101         --modelfile-server=*)
102             MODELFILE_SERVER="${1#*=}"
103             ;;
104         --install-dir)
105             INSTALL_DIR="$2"
106             shift
107             ;;
108         --install-dir=*)
109             INSTALL_DIR="${1#*=}"
110             ;;
111         *)
112             echo "Invalid option '$1'"
113             usage
114             exit 1
115             ;;
116     esac
117     shift
118 done
119
120 if [ -z "$MODELFILE_SERVER" ]; then
121     echo "Please specify a value for --modelfile-server or MODELFILE_SERVER(env)."
122     usage
123     exit 1
124 fi
125
126 if [ -z "$INSTALL_DIR" ]; then
127     echo "Please specify a value for --install-dir or INSTALL_DIR(env)."
128     usage
129     exit 1
130 fi
131
132 set -e
133
134 THIS_SCRIPT_DIR=$(realpath $(dirname ${BASH_SOURCE}))
135 source ${THIS_SCRIPT_DIR}/../common.sh
136
137 CACHE_ROOT_PATH=$INSTALL_DIR
138 FIXED_MODELFILE_SERVER="${MODELFILE_SERVER:-}"
139 TEST_ROOT_PATH=${THIS_SCRIPT_DIR}/models
140
141 # All models in the directory are the target models
142 pushd ${TEST_ROOT_PATH}
143 MODELS=$(ls -d */)
144 popd
145
146 download_tests $MODELS
147
148 set +e