Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / infra / scripts / tizen_xu4_test.sh
1 #!/bin/bash
2
3 SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4 HOST_HOME=$SCRIPT_ROOT/../..
5 if [ -z "$TEST_ROOT" ]; then
6     TEST_ROOT=/opt/usr/nnfw-test
7 fi
8
9 function Usage()
10 {
11     echo "Usage: ./tizen_xu4_test.sh"
12     echo "Usage: ./tizen_xu4_test.sh --rpm-dir=path/to/rpm-dir"
13     echo "Usage: ./tizen_xu4_test.sh --test-suite-path=path/to/test-suite.tar.gz"
14     echo "Usage: ./tizen_xu4_test.sh --skip-install-model"
15     echo ""
16     echo "--rpm-dir <dir>           : directory containing nnfw.rpm and nnfw-test.rpm"
17     echo "--test-suite-path <dir>   : filepath to test-suite.tar.gz"
18     echo "--skip-install-model      : skip install downloaded model"
19     echo "--gcov-dir <dir>          : directory to save gcov files"
20 }
21
22 function install_model()
23 {
24     # download tflite model files
25     pushd $HOST_HOME
26     tests/scripts/framework/run_test.sh --download=on
27     # TODO Since this command removes model file(.zip),
28     # We must always download the file unlike model file(.tflite).
29     # Because caching applies only to tflite file.
30     find tests -name "*.zip" -exec rm {} \;
31     tar -zcf cache.tar.gz tests/scripts/framework/cache
32     $SDB_CMD push cache.tar.gz $TEST_ROOT/.
33     rm -rf cache.tar.gz
34     $SDB_CMD shell tar -zxf $TEST_ROOT/cache.tar.gz -C $TEST_ROOT
35
36     # download api test model file for nnfw_api_gtest
37     MODEL_CACHE_DIR=$(mktemp -d)
38     tests/scripts/nnfw_api_gtest/install_nnfw_api_gtest_nnpackages.sh --install-dir $MODEL_CACHE_DIR
39     tar -zcf $MODEL_CACHE_DIR/api_model_test.tar.gz -C $MODEL_CACHE_DIR .
40     $SDB_CMD push $MODEL_CACHE_DIR/api_model_test.tar.gz $TEST_ROOT/Product/out/unittest_standalone/nnfw_api_gtest_models/
41     $SDB_CMD shell tar -zxf $TEST_ROOT/Product/out/unittest_standalone/nnfw_api_gtest_models/api_model_test.tar.gz \
42     -C $TEST_ROOT/Product/out/unittest_standalone/nnfw_api_gtest_models/
43     rm -rf $MODEL_CACHE_DIR
44     popd
45 }
46
47
48 function prepare_rpm_test()
49 {
50     echo "======= Test with rpm packages(gbs build) ======="
51     # clean up
52     $SDB_CMD shell rm -rf $TEST_ROOT
53     $SDB_CMD shell mkdir -p $TEST_ROOT
54     # install nnfw nnfw-test rpms
55     for file in $RPM_DIR/*.rpm
56     do
57         $SDB_CMD push $file $TEST_ROOT
58         $SDB_CMD shell rpm -Uvh $TEST_ROOT/$(basename $file) --force --nodeps
59     done
60 }
61
62 function prepare_suite_test()
63 {
64     echo "======= Test with test-suite(cross build) ======="
65     # clean up
66     $SDB_CMD shell rm -rf $TEST_ROOT
67     $SDB_CMD shell mkdir -p $TEST_ROOT
68
69     # install test-suite
70     $SDB_CMD push $TEST_SUITE_PATH $TEST_ROOT/$(basename $TEST_SUITE_PATH)
71     $SDB_CMD shell tar -zxf $TEST_ROOT/$(basename $TEST_SUITE_PATH) -C $TEST_ROOT
72 }
73
74 INSTALL_MODEL="1"
75 # Parse command argv
76 for i in "$@"
77 do
78     case $i in
79         -h|--help|help)
80             Usage
81             exit 1
82             ;;
83         --rpm-dir=*)
84             RPM_DIR=${i#*=}
85             ;;
86         --rpm-dir)
87             RPM_DIR="$2"
88             shift
89             ;;
90         --test-suite-path=*)
91             TEST_SUITE_PATH=${i#*=}
92             ;;
93         --test-suite-path)
94             RPM_DIR="$2"
95             shift
96             ;;
97         --skip-install-model)
98             INSTALL_MODEL="0"
99             ;;
100         --gcov-dir=*)
101             GCOV_DIR=${i#*=}
102             ;;
103     esac
104     shift
105 done
106
107
108 N=`sdb devices 2>/dev/null | wc -l`
109
110 # exit if no device found
111 if [[ $N -le 1 ]]; then
112     echo "No device found."
113     exit 1;
114 fi
115
116 NUM_DEV=$(($N-1))
117 echo "device list"
118 DEVICE_LIST=`sdb devices 2>/dev/null`
119 echo "$DEVICE_LIST" | tail -n"$NUM_DEV"
120
121 if [ -z "$SERIAL" ]; then
122     SERIAL=`echo "$DEVICE_LIST" | tail -n1 | awk '{print $1}'`
123 fi
124 SDB_CMD="sdb -s $SERIAL "
125
126 # root on, remount as rw
127 $SDB_CMD root on
128 $SDB_CMD shell mount -o rw,remount /
129
130 SCRIPT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
131 ROOT=$SCRIPT_ROOT/../
132
133 if [ -z "$RPM_DIR" ] && [ -z "$TEST_SUITE_PATH" ]; then
134     echo "======= Skip install runtime ======="
135 fi
136
137 if [ ! -z "$RPM_DIR" ]; then
138     prepare_rpm_test
139 elif [ ! -z "$TEST_SUITE_PATH" ]; then
140     prepare_suite_test
141 fi
142
143 if [ $INSTALL_MODEL = "1" ]; then
144     install_model
145 else
146     echo "======= Skip install model ======="
147 fi
148
149 if [ -z "${GCOV_DIR}" ]; then
150   ${SDB_CMD} shell /bin/bash -c "IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --backend acl_cl --tflite-loader"
151   ${SDB_CMD} shell /bin/bash -c "IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --backend acl_neon"
152   ${SDB_CMD} shell /bin/bash -c "IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --backend cpu"
153   ${SDB_CMD} shell /bin/bash -c "IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime_mixed.sh"
154   ${SDB_CMD} shell /bin/bash -c "IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --interp"
155 else
156   mkdir -p ${GCOV_DIR}
157   rm -rf ${GCOV_DIR}/*
158   pushd ${GCOV_DIR}
159
160   sdb pull ${TEST_ROOT}/tests/scripts/build_path.txt
161   SRC_PREFIX=`cat build_path.txt`
162   GCOV_PREFIX_STRIP=`echo "${SRC_PREFIX}" | grep -o '/' | wc -l`
163   GCOV_DATA_PATH="/opt/usr/nnfw-gcov"
164
165   # TODO For coverage check, we run acl_cl and mixed test
166   ${SDB_CMD} shell /bin/bash -c "GCOV_PREFIX_STRIP=${GCOV_PREFIX_STRIP} IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --backend acl_cl --tflite-loader"
167   ${SDB_CMD} shell /bin/bash -c "GCOV_PREFIX_STRIP=${GCOV_PREFIX_STRIP} IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --backend acl_neon"
168   ${SDB_CMD} shell /bin/bash -c "GCOV_PREFIX_STRIP=${GCOV_PREFIX_STRIP} IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --backend cpu"
169   ${SDB_CMD} shell /bin/bash -c "GCOV_PREFIX_STRIP=${GCOV_PREFIX_STRIP} IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime_mixed.sh"
170   ${SDB_CMD} shell /bin/bash -c "GCOV_PREFIX_STRIP=${GCOV_PREFIX_STRIP} IGNORE_MD5=1 ${TEST_ROOT}/infra/scripts/test_ubuntu_runtime.sh --interp"
171
172   # More test to check coverage
173   ${SDB_CMD} shell "rm -rf ${GCOV_DATA_PATH} && mkdir -p ${GCOV_DATA_PATH}"
174   ${SDB_CMD} shell "find ${TEST_ROOT} -type f \( -iname '*.gcda' -or -iname '*.gcno' \) -exec cp {} ${GCOV_DATA_PATH}/. \;"
175   ${SDB_CMD} shell "cd ${TEST_ROOT} && tar -zcvf coverage-data.tar.gz -C ${GCOV_DATA_PATH} ."
176
177   # pull gcov files
178   sdb pull ${TEST_ROOT}/coverage-data.tar.gz
179   tar -zxvf coverage-data.tar.gz
180   popd
181 fi