diff options
author | Chunseok Lee <chunseok.lee@samsung.com> | 2020-10-28 12:16:55 +0900 |
---|---|---|
committer | Chunseok Lee <chunseok.lee@samsung.com> | 2020-10-28 12:16:55 +0900 |
commit | c55f8a6db48cda9d3a78048338b7f18c4cca62b8 (patch) | |
tree | 761ee8e171e5203f5c598ad93b2e7e0bc2e31aa2 /compiler/one-cmds | |
parent | 74476a2d0296bdad70a2f7f90bc7419a8b05bffd (diff) | |
download | nnfw-c55f8a6db48cda9d3a78048338b7f18c4cca62b8.tar.gz nnfw-c55f8a6db48cda9d3a78048338b7f18c4cca62b8.tar.bz2 nnfw-c55f8a6db48cda9d3a78048338b7f18c4cca62b8.zip |
Imported Upstream version 1.10.0upstream/1.10.0submit/tizen/20201028.104702submit/tizen/20201028.031836accepted/tizen/unified/20201029.124827
Diffstat (limited to 'compiler/one-cmds')
56 files changed, 2711 insertions, 23 deletions
diff --git a/compiler/one-cmds/CMakeLists.txt b/compiler/one-cmds/CMakeLists.txt index 173b8b476..a7135d64b 100644 --- a/compiler/one-cmds/CMakeLists.txt +++ b/compiler/one-cmds/CMakeLists.txt @@ -43,3 +43,9 @@ foreach(ONE_DOCUMENT IN ITEMS ${ONE_DOCUMENT_FILES}) install(FILES ${ONE_DOCUMENT} DESTINATION doc) endforeach(ONE_DOCUMENT) + +if(NOT ENABLE_TEST) + return() +endif(NOT ENABLE_TEST) + +add_subdirectory(tests) diff --git a/compiler/one-cmds/how-to-prepare-virtualenv.txt b/compiler/one-cmds/how-to-prepare-virtualenv.txt index 62a94968b..f3dcf704b 100644 --- a/compiler/one-cmds/how-to-prepare-virtualenv.txt +++ b/compiler/one-cmds/how-to-prepare-virtualenv.txt @@ -1,7 +1,7 @@ About ----- -Last update: 2020-08-03 +Last update: 2020-09-15 This document explains about 'one-prepare-venv' command. @@ -20,8 +20,8 @@ $ sudo apt-get upgrade $ sudo apt-get install python3-pip python3-venv -How to run ----------- +How to run for Ubuntu +--------------------- Just run 'one-prepare-venv' command @@ -30,6 +30,23 @@ $ one-prepare-venv There will be venv folder as of result. +How to run for Windows +---------------------- + +1. First, please prepare Python 3.5-3.7 +2. Open the Command Prompt as an administrator +3. cd(change directory) to the directory where one-compiler is installed +4. run below command +``` +$ ONE\install\bin> python -m venv venv +$ ONE\install\bin> cd venv/Scripts +$ ONE\install\bin\venv/Scripts> pip.exe install -U pip +$ ONE\install\bin\venv/Scripts> pip.exe install -U tensorflow-cpu==2.3.0 +``` + +After running the above command, go back to MinGW and run one-compiler. + + Trouble shooting ---------------- diff --git a/compiler/one-cmds/how-to-use-one-commands.txt b/compiler/one-cmds/how-to-use-one-commands.txt index 0ee69e077..2b903c973 100644 --- a/compiler/one-cmds/how-to-use-one-commands.txt +++ b/compiler/one-cmds/how-to-use-one-commands.txt @@ -37,7 +37,7 @@ This will convert Tensorflow model file (.pb) to our circle model file with appl To execute this command, original Tensorflow model file must include BCQ information. This command invokes following scripts internally. -- preserve_bcq_info : Prevent BCQ information vanishing problem +- generate_bcq_metadata : Generate BCQ metadata in the model - generate_bcq_info : Designate BCQ information nodes as model output automatically - tf2tfliteV2 : Convert Tensorflow model to tflite model - tflite2circle : Convert Tensorflow Lite model to circle model @@ -81,6 +81,8 @@ one-optimize one-optimize provides network or operator transformation shown below. Current transformation options are +- fold_dequantize : This removes Dequantize operation which can be folded +- fuse_add_with_tconv: This fuses Add operator with the preceding TConv operator if possible - fuse_bcq: This enables Binary-Coded-bases Quantized DNNs - read https://arxiv.org/abs/2005.09904 for detailed information - fuse_instnorm: This will convert instance normalization related operators to diff --git a/compiler/one-cmds/one-import-bcq b/compiler/one-cmds/one-import-bcq index 98dd1efed..7c583071f 100644 --- a/compiler/one-cmds/one-import-bcq +++ b/compiler/one-cmds/one-import-bcq @@ -38,6 +38,41 @@ version() exit 255 } +input_not_set() +{ + echo "Error: input_path not set" + echo "" + usage +} + +output_not_set() +{ + echo "Error: output_path not set" + echo "" + usage +} + +input_arrays_not_set() +{ + echo "Error: input_arrays not set" + echo "" + usage +} + +input_shapes_not_set() +{ + echo "Error: input_shapes not set" + echo "" + usage +} + +output_arrays_not_set() +{ + echo "Error: output_arrays not set" + echo "" + usage +} + TF_INTERFACE="--v1" # Parse command-line arguments @@ -54,22 +89,37 @@ while [ "$#" -ne 0 ]; do ;; '--input_path') export INPUT_PATH="$2" + if [ $# -lt 2 ]; then + input_not_set + fi shift 2 ;; '--output_path') export OUTPUT_PATH="$2" + if [ $# -lt 2 ]; then + output_not_set + fi shift 2 ;; '--input_arrays') export INPUT_ARRAYS="$2" + if [ $# -lt 2 ]; then + input_arrays_not_set + fi shift 2 ;; '--input_shapes') export INPUT_SHAPES="$2" + if [ $# -lt 2 ]; then + input_shapes_not_set + fi shift 2 ;; '--output_arrays') export OUTPUT_ARRAYS="$2" + if [ $# -lt 2 ]; then + output_arrays_not_set + fi shift 2 ;; '--v2') @@ -90,6 +140,20 @@ if [ -z ${INPUT_PATH} ] || [ ! -e ${INPUT_PATH} ]; then exit 2 fi +if [ -z ${INPUT_ARRAYS} ]; then + input_arrays_not_set +fi + +# INPUT_SHAPES is optional + +if [ -z ${OUTPUT_PATH} ]; then + output_not_set +fi + +if [ -z ${OUTPUT_ARRAYS} ]; then + output_arrays_not_set +fi + FILE_BASE=$(basename ${OUTPUT_PATH}) MODEL_NAME="${FILE_BASE%.*}" @@ -104,40 +168,58 @@ if [ -e ${VIRTUALENV_LINUX} ]; then source ${VIRTUALENV_LINUX} elif [ -e ${VIRTUALENV_WINDOWS} ]; then source ${VIRTUALENV_WINDOWS} +else + echo "Error: Virtual environment not found. Please run 'one-prepare-venv' command." + echo "If encounter any problems, please follow provided document in 'doc' folder." + exit 255 fi # remove previous log rm -rf "${OUTPUT_PATH}.log" -# generate temporary preserved pb file -echo "${DRIVER_PATH}/preserve_bcq_info" --input_path ${INPUT_PATH} \ ---output_path "${TMPDIR}/${MODEL_NAME}_preserved.pb" > "${OUTPUT_PATH}.log" -echo " " >> "${OUTPUT_PATH}.log" +show_err_onexit() +{ + cat "${OUTPUT_PATH}.log" +} -"${DRIVER_PATH}/preserve_bcq_info" --input_path ${INPUT_PATH} \ ---output_path "${TMPDIR}/${MODEL_NAME}_preserved.pb" >> "${OUTPUT_PATH}.log" 2>&1 +trap show_err_onexit ERR -# generate output_arrays automatically -echo "${DRIVER_PATH}/generate_bcq_output_arrays" \ ---input_path "${TMPDIR}/${MODEL_NAME}_preserved.pb" \ ---output_path "${TMPDIR}/${MODEL_NAME}_output_arrays.txt" > "${OUTPUT_PATH}.log" -echo " " >> "${OUTPUT_PATH}.log" +# Generate BCQ information metadata +# If model has no BCQ information or invalid information, pb file is not changed. +METAGEN_SCRIPT="${DRIVER_PATH}/generate_bcq_metadata " +METAGEN_SCRIPT+="--input_path ${INPUT_PATH} " +METAGEN_SCRIPT+="--output_path ${TMPDIR}/${MODEL_NAME}_withmeta.pb " +METAGEN_SCRIPT+="--output_arrays ${OUTPUT_ARRAYS} " + +echo ${METAGEN_SCRIPT} > "${OUTPUT_PATH}.log" +echo "" >> "${OUTPUT_PATH}.log" +$METAGEN_SCRIPT >> "${OUTPUT_PATH}.log" 2>&1 + +# Generate BCQ information nodes as output_arrays +# If model has no BCQ information, output_arrays would be empty. +OUTARR_GEN_SCRIPT="${DRIVER_PATH}/generate_bcq_output_arrays " +OUTARR_GEN_SCRIPT+="--input_path ${TMPDIR}/${MODEL_NAME}_withmeta.pb " +OUTARR_GEN_SCRIPT+="--metadata_path ${TMPDIR}/${MODEL_NAME}_metadata_arrays.txt " +OUTARR_GEN_SCRIPT+="--output_arrays_path ${TMPDIR}/${MODEL_NAME}_output_arrays.txt " -"${DRIVER_PATH}/generate_bcq_output_arrays" \ ---input_path "${TMPDIR}/${MODEL_NAME}_preserved.pb" \ ---output_path "${TMPDIR}/${MODEL_NAME}_output_arrays.txt" >> "${OUTPUT_PATH}.log" 2>&1 +echo ${OUTARR_GEN_SCRIPT} >> "${OUTPUT_PATH}.log" +echo "" >> "${OUTPUT_PATH}.log" +$OUTARR_GEN_SCRIPT >> "${OUTPUT_PATH}.log" 2>&1 -# generate temporary tflite file +# generate tflite file CONVERT_SCRIPT="python ${DRIVER_PATH}/tf2tfliteV2.py ${TF_INTERFACE} " -CONVERT_SCRIPT+="--input_path ${TMPDIR}/${MODEL_NAME}_preserved.pb " +CONVERT_SCRIPT+="--input_path ${TMPDIR}/${MODEL_NAME}_withmeta.pb " CONVERT_SCRIPT+="--input_arrays ${INPUT_ARRAYS} " CONVERT_SCRIPT+="--output_path ${TMPDIR}/${MODEL_NAME}.tflite " -CONVERT_SCRIPT+="--output_arrays ${OUTPUT_ARRAYS}$(cat ${TMPDIR}/${MODEL_NAME}_output_arrays.txt) " +CONVERT_SCRIPT+="--output_arrays " +CONVERT_SCRIPT+="$(cat ${TMPDIR}/${MODEL_NAME}_metadata_arrays.txt)" +CONVERT_SCRIPT+="${OUTPUT_ARRAYS}" +CONVERT_SCRIPT+="$(cat ${TMPDIR}/${MODEL_NAME}_output_arrays.txt) " if [ ! -z ${INPUT_SHAPES} ]; then CONVERT_SCRIPT+="--input_shapes ${INPUT_SHAPES} " fi -echo ${CONVERT_SCRIPT} > "${OUTPUT_PATH}.log" +echo ${CONVERT_SCRIPT} >> "${OUTPUT_PATH}.log" $CONVERT_SCRIPT >> "${OUTPUT_PATH}.log" 2>&1 # convert .tflite to .circle diff --git a/compiler/one-cmds/one-import-tf b/compiler/one-cmds/one-import-tf index 58c686882..3b2b976e1 100644 --- a/compiler/one-cmds/one-import-tf +++ b/compiler/one-cmds/one-import-tf @@ -38,6 +38,41 @@ version() exit 255 } +input_not_set() +{ + echo "Error: input_path not set" + echo "" + usage +} + +output_not_set() +{ + echo "Error: output_path not set" + echo "" + usage +} + +input_arrays_not_set() +{ + echo "Error: input_arrays not set" + echo "" + usage +} + +input_shapes_not_set() +{ + echo "Error: input_shapes not set" + echo "" + usage +} + +output_arrays_not_set() +{ + echo "Error: output_arrays not set" + echo "" + usage +} + TF_INTERFACE="--v1" # Parse command-line arguments @@ -54,22 +89,37 @@ while [ "$#" -ne 0 ]; do ;; '--input_path') export INPUT_PATH="$2" + if [ $# -lt 2 ]; then + input_not_set + fi shift 2 ;; '--output_path') export OUTPUT_PATH="$2" + if [ $# -lt 2 ]; then + output_not_set + fi shift 2 ;; '--input_arrays') export INPUT_ARRAYS="$2" + if [ $# -lt 2 ]; then + input_arrays_not_set + fi shift 2 ;; '--input_shapes') export INPUT_SHAPES="$2" + if [ $# -lt 2 ]; then + input_shapes_not_set + fi shift 2 ;; '--output_arrays') export OUTPUT_ARRAYS="$2" + if [ $# -lt 2 ]; then + output_arrays_not_set + fi shift 2 ;; '--v2') @@ -94,6 +144,20 @@ if [ -z ${INPUT_PATH} ] || [ ! -e ${INPUT_PATH} ]; then exit 2 fi +if [ -z ${INPUT_ARRAYS} ]; then + input_arrays_not_set +fi + +# INPUT_SHAPES is optional + +if [ -z ${OUTPUT_PATH} ]; then + output_not_set +fi + +if [ -z ${OUTPUT_ARRAYS} ]; then + output_arrays_not_set +fi + FILE_BASE=$(basename ${OUTPUT_PATH}) MODEL_NAME="${FILE_BASE%.*}" @@ -108,6 +172,10 @@ if [ -e ${VIRTUALENV_LINUX} ]; then source ${VIRTUALENV_LINUX} elif [ -e ${VIRTUALENV_WINDOWS} ]; then source ${VIRTUALENV_WINDOWS} +else + echo "Error: Virtual environment not found. Please run 'one-prepare-venv' command." + echo "If encounter any problems, please follow provided document in 'doc' folder." + exit 255 fi # remove previous log diff --git a/compiler/one-cmds/one-import-tflite b/compiler/one-cmds/one-import-tflite index 053489c92..0d5cef101 100644 --- a/compiler/one-cmds/one-import-tflite +++ b/compiler/one-cmds/one-import-tflite @@ -34,6 +34,20 @@ version() exit 255 } +input_not_set() +{ + echo "Error: input_path not set" + echo "" + usage +} + +output_not_set() +{ + echo "Error: output_path not set" + echo "" + usage +} + # Parse command-line arguments # while [ "$#" -ne 0 ]; do @@ -48,10 +62,16 @@ while [ "$#" -ne 0 ]; do ;; '--input_path') export INPUT_PATH="$2" + if [ $# -lt 2 ]; then + input_not_set + fi shift 2 ;; '--output_path') export OUTPUT_PATH="$2" + if [ $# -lt 2 ]; then + output_not_set + fi shift 2 ;; *) @@ -67,6 +87,10 @@ if [ -z ${INPUT_PATH} ] || [ ! -e ${INPUT_PATH} ]; then usage fi +if [ -z ${OUTPUT_PATH} ]; then + output_not_set +fi + # remove previous log rm -rf "${OUTPUT_PATH}.log" diff --git a/compiler/one-cmds/one-optimize b/compiler/one-cmds/one-optimize index 17b6b980e..e2427a9ef 100644 --- a/compiler/one-cmds/one-optimize +++ b/compiler/one-cmds/one-optimize @@ -24,6 +24,10 @@ usage() echo "Usage: one-optimize" echo " --version Show version information and exit" echo " --all Enable all optimization algorithms" + echo " --fold_dequantize" + echo " Enable FoldDequantize Pass" + echo " --fuse_add_with_tconv" + echo " Enable FuseAddWithTConv Pass" echo " --fuse_bcq Enable FuseBCQ Pass" echo " --fuse_instnorm Enable FuseInstanceNormalization Pass" echo " --resolve_customop_add" @@ -44,6 +48,8 @@ version() } OPTIMIZE_all=0 +OPTIMIZE_fold_dequantize=0 +OPTIMIZE_fuse_add_with_tconv=0 OPTIMIZE_fuse_bcq=0 OPTIMIZE_fuse_instnorm=0 OPTIMIZE_resolve_customop_add=0 @@ -66,6 +72,14 @@ while [ "$#" -ne 0 ]; do OPTIMIZE_all=1 shift ;; + '--fold_dequantize') + OPTIMIZE_fold_dequantize=1 + shift + ;; + '--fuse_add_with_tconv') + OPTIMIZE_fuse_add_with_tconv=1 + shift + ;; '--fuse_bcq') OPTIMIZE_fuse_bcq=1 shift @@ -113,6 +127,12 @@ OPTIMIZE_OPTIONS="" if [ $OPTIMIZE_all == 1 ]; then OPTIMIZE_OPTIONS+="--all " fi +if [ $OPTIMIZE_fold_dequantize == 1 ]; then + OPTIMIZE_OPTIONS+="--fold_dequantize " +fi +if [ $OPTIMIZE_fuse_add_with_tconv == 1 ]; then + OPTIMIZE_OPTIONS+="--fuse_add_with_tconv " +fi if [ $OPTIMIZE_fuse_bcq == 1 ]; then OPTIMIZE_OPTIONS+="--fuse_bcq " fi diff --git a/compiler/one-cmds/one-pack b/compiler/one-cmds/one-pack index 023b0a85f..fe9f1bc37 100644 --- a/compiler/one-cmds/one-pack +++ b/compiler/one-cmds/one-pack @@ -34,6 +34,20 @@ version() exit 255 } +input_not_set() +{ + echo "Error: input path not set" + echo "" + usage +} + +output_not_set() +{ + echo "Error: output path not set" + echo "" + usage +} + # Parse command-line arguments # while [ "$#" -ne 0 ]; do @@ -51,10 +65,16 @@ while [ "$#" -ne 0 ]; do ;; '-i') export INPUT_PATH="$2" + if [ $# -lt 2 ]; then + input_not_set + fi shift 2 ;; '-o') export OUTPUT_PATH="$2" + if [ $# -lt 2 ]; then + output_not_set + fi shift 2 ;; *) @@ -70,6 +90,10 @@ if [ -z ${INPUT_PATH} ] || [ ! -e ${INPUT_PATH} ]; then usage fi +if [ -z ${OUTPUT_PATH} ]; then + output_not_set +fi + INPUT_FILE=$(basename "${INPUT_PATH}") LOG_FILE="${INPUT_FILE%.*}.pack.log" diff --git a/compiler/one-cmds/one-prepare-venv b/compiler/one-cmds/one-prepare-venv index 0b11e7f0b..4fa6f519e 100644 --- a/compiler/one-cmds/one-prepare-venv +++ b/compiler/one-cmds/one-prepare-venv @@ -52,3 +52,7 @@ python -m pip --default-timeout=1000 --trusted-host pypi.org --trusted-host file install -U pip==20.2.1 setuptools==49.3.0 python -m pip --default-timeout=1000 --trusted-host pypi.org --trusted-host files.pythonhost.org \ install tensorflow-cpu==2.3.0 + +# Create python symoblic link +rm -f ${DRIVER_PATH}/python +ln -s venv/bin/python ${DRIVER_PATH}/python diff --git a/compiler/one-cmds/one-quantize b/compiler/one-cmds/one-quantize index c74b2c2d2..112bff337 100644 --- a/compiler/one-cmds/one-quantize +++ b/compiler/one-cmds/one-quantize @@ -24,7 +24,7 @@ usage() echo "Usage: one-quantize" echo " --version Show version information and exit" echo " --input_dtype Input data type (supported: float32, default=float32)" - echo " --quantized_dtype Output quantized data type (supported: uint8, default=uint8)" + echo " --quantized_dtype Output quantized data type (supported: uint8, int16, default=uint8)" echo " --granularity Quantize granularity (supported: layer, channel, default=layer)" echo " --min_percentile Minimum percentile (0.0~100.0, default=1.0)" echo " --max_percentile Maximum percentile (0.0~100.0, default=99.0)" @@ -41,6 +41,69 @@ version() exit 255 } +input_not_set() +{ + echo "Error: input_path not set" + echo "" + usage +} + +output_not_set() +{ + echo "Error: output_path not set" + echo "" + usage +} + +input_data_not_set() +{ + echo "Error: input_data not set" + echo "" + usage +} + +input_dtype_not_set() +{ + echo "Error: input_dtype not set" + echo "" + usage +} + +quantized_dtype_not_set() +{ + echo "Error: quantized_dtype not set" + echo "" + usage +} + +granularity_not_set() +{ + echo "Error: granularity not set" + echo "" + usage +} + +min_percentile_not_set() +{ + echo "Error: min_percentile not set" + echo "" + usage +} + +max_percentile_not_set() +{ + echo "Error: max_percentile not set" + echo "" + usage +} + +mode_not_set() +{ + echo "Error: mode not set" + echo "" + usage +} + INPUT_DTYPE=float32 QUANTIZED_DTYPE=uint8 GRANULARITY=layer @@ -63,39 +126,66 @@ while [ "$#" -ne 0 ]; do '--input_dtype') INPUT_DTYPE="$2" + if [ $# -lt 2 ]; then + input_dtype_not_set + fi shift 2 ;; '--quantized_dtype') QUANTIZED_DTYPE="$2" + if [ $# -lt 2 ]; then + quantized_dtype_not_set + fi shift 2 ;; '--granularity') GRANULARITY="$2" + if [ $# -lt 2 ]; then + granularity_not_set + fi shift 2 ;; '--min_percentile') MIN_PERCENTILE="$2" + if [ $# -lt 2 ]; then + min_percentile_not_set + fi shift 2 ;; '--max_percentile') MAX_PERCENTILE="$2" + if [ $# -lt 2 ]; then + max_percentile_not_set + fi shift 2 ;; '--mode') MODE="$2" + if [ $# -lt 2 ]; then + mode_not_set + fi shift 2 ;; '--input_path') INPUT_PATH="$2" + if [ $# -lt 2 ]; then + input_not_set + fi shift 2 ;; '--input_data') INPUT_DATA="$2" + if [ $# -lt 2 ]; then + input_data_not_set + fi shift 2 ;; '--output_path') OUTPUT_PATH="$2" + if [ $# -lt 2 ]; then + output_not_set + fi shift 2 ;; @@ -116,6 +206,9 @@ if [ -z ${INPUT_DATA} ] || [ ! -e ${INPUT_DATA} ]; then echo "" usage fi +if [ -z ${OUTPUT_PATH} ]; then + output_not_set +fi FILE_BASE=$(basename ${OUTPUT_PATH}) MODEL_NAME="${FILE_BASE%.*}" diff --git a/compiler/one-cmds/tests/CMakeLists.txt b/compiler/one-cmds/tests/CMakeLists.txt new file mode 100644 index 000000000..cb1081d28 --- /dev/null +++ b/compiler/one-cmds/tests/CMakeLists.txt @@ -0,0 +1,49 @@ +# Install one-cmds test scripts + +# Gather test scripts +file(GLOB TESTITEMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "./*.test") + +# Create a script to run the tests at installation folder +set(DRIVER_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/runtestall.sh") + +file(WRITE "${DRIVER_SCRIPT}" "#!/bin/bash\n\n") +file(APPEND "${DRIVER_SCRIPT}" "SCRIPT_PATH=$(cd $(dirname $\{BASH_SOURCE\[0\]\}) && pwd)\n") +file(APPEND "${DRIVER_SCRIPT}" "pushd $SCRIPT_PATH > /dev/null\n") +file(APPEND "${DRIVER_SCRIPT}" "rm -rf runtestall.log\n") +file(APPEND "${DRIVER_SCRIPT}" "export PATH=$SCRIPT_PATH/../bin:$PATH\n") +file(APPEND "${DRIVER_SCRIPT}" "if [[ $# -ge 1 ]]; then\n") +file(APPEND "${DRIVER_SCRIPT}" " USER_PATH=$1\n") +file(APPEND "${DRIVER_SCRIPT}" " export PATH=$USER_PATH:$PATH\n") +file(APPEND "${DRIVER_SCRIPT}" "fi\n") +file(APPEND "${DRIVER_SCRIPT}" "\n") + +foreach(TESTITEM IN ITEMS ${TESTITEMS}) + get_filename_component(ITEM_PREFIX ${TESTITEM} NAME_WE) + + set(TESTITEM_SCRIPT_FILE "${ITEM_PREFIX}.test") + set(TESTITEM_SCRIPT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/${TESTITEM_SCRIPT_FILE}") + + file(APPEND "${DRIVER_SCRIPT}" "/bin/bash ${TESTITEM_SCRIPT_FILE} | tee -a runtestall.log\n") + + install(FILES ${TESTITEM} DESTINATION test) + +endforeach(TESTITEM) + +file(APPEND "${DRIVER_SCRIPT}" "popd> /dev/null") + +set(PREPARE_TEST_MATERIALS_SH "${CMAKE_CURRENT_SOURCE_DIR}/prepare_test_materials.sh") + +install(FILES ${DRIVER_SCRIPT} + PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + DESTINATION test) + +install(FILES ${PREPARE_TEST_MATERIALS_SH} + PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + DESTINATION test) + +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.txt + DESTINATION test) diff --git a/compiler/one-cmds/tests/README.txt b/compiler/one-cmds/tests/README.txt new file mode 100644 index 000000000..0d4d0ecbe --- /dev/null +++ b/compiler/one-cmds/tests/README.txt @@ -0,0 +1,27 @@ +one-cmds testing +================ + +Run 'runtestall.sh' program to test ONE command line programs, all at once. + +Steps: +1) run 'one-prepare-venv' in bin folder to prepare python virtual-env with TensorFlow + - you need to run this only once + - read 'doc/how-to-prepare-virtualenv.txt' for more information +---------------------------------------------- +bin/one-prepare-venv +---------------------------------------------- + +2) run 'test/prepare_test_materials.sh' to download test material models + - you need to run this only once + - you need internet connection to download files + - you may need to install 'wget' and 'unzip' packages +---------------------------------------------- +test/prepare_test_materials.sh +---------------------------------------------- + +3) run 'test/runtestall.sh' to run the test +---------------------------------------------- +test/runtestall.sh +---------------------------------------------- + +End. diff --git a/compiler/one-cmds/tests/one-import-bcq_001.test b/compiler/one-cmds/tests/one-import-bcq_001.test new file mode 100644 index 000000000..74b8bab32 --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_001.test @@ -0,0 +1,45 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="./bcq.circle" + +rm -rf $outputfile +rm -rf $outputfile.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder \ +--output_arrays MatMul >> /dev/null + +if [[ ! -s "${outputfile}" ]]; then + trap_err_onexit +fi + +echo "${filename_ext} SUCCESS" diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_001.test b/compiler/one-cmds/tests/one-import-bcq_neg_001.test new file mode 100644 index 000000000..9a2b455ef --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_001.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input array + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: Invalid tensors" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="./bcq.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder_null \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_002.test b/compiler/one-cmds/tests/one-import-bcq_neg_002.test new file mode 100644 index 000000000..5779aa03e --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_002.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid output array + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: Invalid tensors" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="./bcq.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder \ +--output_arrays MatMul_null > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_003.test b/compiler/one-cmds/tests/one-import-bcq_neg_003.test new file mode 100644 index 000000000..3a8e6368b --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_003.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "input model not found" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq_null.pb" +outputfile="./bcq.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_004.test b/compiler/one-cmds/tests/one-import-bcq_neg_004.test new file mode 100644 index 000000000..dc83b98c8 --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_004.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Error parsing message" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./while_3.pbtxt" +outputfile="./bcq.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_005.test b/compiler/one-cmds/tests/one-import-bcq_neg_005.test new file mode 100644 index 000000000..ad1196a67 --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_005.test @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid output path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Failed to write circle" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="." + +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_006.test b/compiler/one-cmds/tests/one-import-bcq_neg_006.test new file mode 100644 index 000000000..f761aa7c0 --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_006.test @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shapes + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: The shape of tensor" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="./bcq.circle" + +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder --input_shapes "1,32,32" \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_007.test b/compiler/one-cmds/tests/one-import-bcq_neg_007.test new file mode 100644 index 000000000..5013254f5 --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_007.test @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shapes + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: The shape of tensor" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="./bcq.circle" + +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder --input_shapes "30,30" \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_008.test b/compiler/one-cmds/tests/one-import-bcq_neg_008.test new file mode 100644 index 000000000..e7d5d2e03 --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_008.test @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shapes + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: invalid literal for" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="./bcq.circle" + +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder --input_shapes "32,O" \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import-bcq_neg_009.test b/compiler/one-cmds/tests/one-import-bcq_neg_009.test new file mode 100644 index 000000000..ef990438a --- /dev/null +++ b/compiler/one-cmds/tests/one-import-bcq_neg_009.test @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shapes + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "must have the same number of items" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./bcq.pb" +outputfile="./bcq.circle" + +rm -rf ${outputfile}.log + +# run test +one-import-bcq \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Placeholder --input_shapes "32,32:1" \ +--output_arrays MatMul > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_001.test b/compiler/one-cmds/tests/one-import_001.test new file mode 100644 index 000000000..165f49193 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_001.test @@ -0,0 +1,44 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +# Note: Do not remove output circle file as it's used for quantize tests + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "1,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_1 >> /dev/null + +if [[ ! -s "${outputfile}" ]]; then + trap_err_onexit +fi + +echo "${filename_ext} SUCCESS" diff --git a/compiler/one-cmds/tests/one-import_neg_001.test b/compiler/one-cmds/tests/one-import_neg_001.test new file mode 100644 index 000000000..5a233d2f3 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_001.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage improper input model + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: Invalid tensors 'input' were found" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.tflite" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "1,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_002.test b/compiler/one-cmds/tests/one-import_neg_002.test new file mode 100644 index 000000000..78b77511a --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_002.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with unsupported dynamic tensor + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "is incompatible with result type" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./while_3.pbtxt" +outputfile="./while_3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays Hole,Hole_2 --input_shapes "1,1:1,1" \ +--output_arrays Output > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_003.test b/compiler/one-cmds/tests/one-import_neg_003.test new file mode 100644 index 000000000..b0e95b6d1 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_003.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid output array + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: Invalid tensors" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "1,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_2 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_004.test b/compiler/one-cmds/tests/one-import_neg_004.test new file mode 100644 index 000000000..afb206ad9 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_004.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shape + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: The shape of tensor" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "1,299,299,1" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_005.test b/compiler/one-cmds/tests/one-import_neg_005.test new file mode 100644 index 000000000..045fb89b7 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_005.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shape + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: The shape of tensor" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "1,299,299" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_006.test b/compiler/one-cmds/tests/one-import_neg_006.test new file mode 100644 index 000000000..bb3e2344c --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_006.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shape + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ConverterError: <unknown>:0: error:" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "0,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_007.test b/compiler/one-cmds/tests/one-import_neg_007.test new file mode 100644 index 000000000..bcfc4bcc9 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_007.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shape + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: invalid literal" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "None,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_008.test b/compiler/one-cmds/tests/one-import_neg_008.test new file mode 100644 index 000000000..2f48fd708 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_008.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input shape + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "must have the same number of items" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input,InceptionV3/Predictions/Shape --input_shapes "1,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_009.test b/compiler/one-cmds/tests/one-import_neg_009.test new file mode 100644 index 000000000..79e463d64 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_009.test @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid output path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Failed to write circle" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="." + +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input --input_shapes "1,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-import_neg_010.test b/compiler/one-cmds/tests/one-import_neg_010.test new file mode 100644 index 000000000..05677a6d4 --- /dev/null +++ b/compiler/one-cmds/tests/one-import_neg_010.test @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input_arrays + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "ValueError: Invalid tensors" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-import tf \ +--input_path ${inputfile} \ +--output_path ${outputfile} \ +--input_arrays input2 --input_shapes "1,299,299,3" \ +--output_arrays InceptionV3/Predictions/Reshape_1 > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-optimize_001.test b/compiler/one-cmds/tests/one-optimize_001.test new file mode 100644 index 000000000..240a62506 --- /dev/null +++ b/compiler/one-cmds/tests/one-optimize_001.test @@ -0,0 +1,51 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +outputfile="./inception_v3-opt.circle" + +rm -rf ${outputfile} + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-optimize --all \ +--input_path ${inputfile} \ +--output_path ${outputfile} >> /dev/null + +if [[ ! -s "${outputfile}" ]]; then + trap_err_onexit +fi + +echo "${filename_ext} SUCCESS" diff --git a/compiler/one-cmds/tests/one-optimize_neg_001.test b/compiler/one-cmds/tests/one-optimize_neg_001.test new file mode 100644 index 000000000..4ee509697 --- /dev/null +++ b/compiler/one-cmds/tests/one-optimize_neg_001.test @@ -0,0 +1,47 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# this test should fail + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Invalid input file" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.pb" +outputfile="./inception_v3-opt.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-optimize --all \ +--input_path ${inputfile} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-optimize_neg_002.test b/compiler/one-cmds/tests/one-optimize_neg_002.test new file mode 100644 index 000000000..811b4d814 --- /dev/null +++ b/compiler/one-cmds/tests/one-optimize_neg_002.test @@ -0,0 +1,47 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "input model not found" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circletxt" +outputfile="./inception_v3-opt.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# run test +one-optimize --all \ +--input_path ${inputfile} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-optimize_neg_003.test b/compiler/one-cmds/tests/one-optimize_neg_003.test new file mode 100644 index 000000000..17f53b9a4 --- /dev/null +++ b/compiler/one-cmds/tests/one-optimize_neg_003.test @@ -0,0 +1,51 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage without output folder path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Failed to export" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-optimize --all \ +--input_path ${inputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-pack_001.test b/compiler/one-cmds/tests/one-pack_001.test new file mode 100644 index 000000000..3d746dffd --- /dev/null +++ b/compiler/one-cmds/tests/one-pack_001.test @@ -0,0 +1,51 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +outputfolder="nnpack" + +rm -rf ${outputfolder} + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-pack \ +-i ${inputfile} \ +-o ${outputfolder} >> /dev/null + +if [[ ! -d "${outputfolder}" ]]; then + trap_err_onexit +fi + +echo "${filename_ext} SUCCESS" diff --git a/compiler/one-cmds/tests/one-pack_neg_001.test b/compiler/one-cmds/tests/one-pack_neg_001.test new file mode 100644 index 000000000..de1eab9c7 --- /dev/null +++ b/compiler/one-cmds/tests/one-pack_neg_001.test @@ -0,0 +1,43 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "input model not found" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +rm -rf ${filename}.log + +# run test +one-pack \ +-i ./inception_v2.circle \ +-o nnpack > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-pack_neg_002.test b/compiler/one-cmds/tests/one-pack_neg_002.test new file mode 100644 index 000000000..6427c260e --- /dev/null +++ b/compiler/one-cmds/tests/one-pack_neg_002.test @@ -0,0 +1,47 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with filename without extension + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "modelfile does not have extension" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +rm -rf ${filename}.log +rm -rf nnpack + +# prepare dummy file +touch ./sample + +# run test +one-pack \ +-i ./sample \ +-o nnpack > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-pack_neg_003.test b/compiler/one-cmds/tests/one-pack_neg_003.test new file mode 100644 index 000000000..bf91a5226 --- /dev/null +++ b/compiler/one-cmds/tests/one-pack_neg_003.test @@ -0,0 +1,45 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage without output folder path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "output path not set" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +rm -rf ${filename}.log + +# prepare dummy file +touch ./sample.circle + +# run test +one-pack \ +-i ./sample.circle > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_001.test b/compiler/one-cmds/tests/one-quantize_001.test new file mode 100644 index 000000000..ef25ac800 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_001.test @@ -0,0 +1,54 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile} + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ./inception_v3.circle \ +--input_data ./inception_v3_test_data.h5 \ +--output_path ./inception_v3.quantized.circle >> /dev/null + +if [[ ! -s "${outputfile}" ]]; then + trap_err_onexit +fi + +echo "${filename_ext} SUCCESS" diff --git a/compiler/one-cmds/tests/one-quantize_neg_001.test b/compiler/one-cmds/tests/one-quantize_neg_001.test new file mode 100644 index 000000000..ccf16fbf8 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_001.test @@ -0,0 +1,61 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with unsupported input dtype + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Unsupported input type" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# test begin + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +one-quantize \ +--input_dtype float64 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_002.test b/compiler/one-cmds/tests/one-quantize_neg_002.test new file mode 100644 index 000000000..387e53637 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_002.test @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with unsupported input dtype + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Unsupported output type" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint16 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_003.test b/compiler/one-cmds/tests/one-quantize_neg_003.test new file mode 100644 index 000000000..47cf0691f --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_003.test @@ -0,0 +1,59 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with wrong representative dataset + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Input shape mismatch" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile} +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ./mobilenet_test_data.h5 \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_004.test b/compiler/one-cmds/tests/one-quantize_neg_004.test new file mode 100644 index 000000000..8d53ca1d1 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_004.test @@ -0,0 +1,59 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid output path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Failed to export" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="." + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_005.test b/compiler/one-cmds/tests/one-quantize_neg_005.test new file mode 100644 index 000000000..4504730d0 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_005.test @@ -0,0 +1,50 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Invalid input file" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./while_3.pbtxt" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_006.test b/compiler/one-cmds/tests/one-quantize_neg_006.test new file mode 100644 index 000000000..2ecbc0413 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_006.test @@ -0,0 +1,50 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input path + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "input model not found" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v2.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_007.test b/compiler/one-cmds/tests/one-quantize_neg_007.test new file mode 100644 index 000000000..4796f9e89 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_007.test @@ -0,0 +1,59 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid input_data + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Given data file is not HDF5" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3.circle" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_008.test b/compiler/one-cmds/tests/one-quantize_neg_008.test new file mode 100644 index 000000000..1656c6ba2 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_008.test @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid mode + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Unsupported mode" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--mode average \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_009.test b/compiler/one-cmds/tests/one-quantize_neg_009.test new file mode 100644 index 000000000..6ecc5c32f --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_009.test @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid max_percentile + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Percentile must be ranged from" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--max_percentile 101 \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_010.test b/compiler/one-cmds/tests/one-quantize_neg_010.test new file mode 100644 index 000000000..209645990 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_010.test @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid max_percentile + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Percentile must be ranged from" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--max_percentile -1 \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_011.test b/compiler/one-cmds/tests/one-quantize_neg_011.test new file mode 100644 index 000000000..ea44c2ffe --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_011.test @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid min_percentile + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Percentile must be ranged from" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--min_percentile 101 \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_012.test b/compiler/one-cmds/tests/one-quantize_neg_012.test new file mode 100644 index 000000000..b744051ae --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_012.test @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid min_percentile + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Percentile must be ranged from" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--min_percentile -1 \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/one-quantize_neg_013.test b/compiler/one-cmds/tests/one-quantize_neg_013.test new file mode 100644 index 000000000..dec1cbd06 --- /dev/null +++ b/compiler/one-cmds/tests/one-quantize_neg_013.test @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# negative usage with invalid min_percentile + +filename_ext="$(basename -- $0)" +filename="${filename_ext%.*}" + +trap_err_onexit() +{ + if grep -q "Unsupported granularity" "${filename}.log"; then + echo "${filename_ext} SUCCESS" + exit 0 + fi + + echo "${filename_ext} FAILED" + exit 255 +} + +trap trap_err_onexit ERR + +inputfile="./inception_v3.circle" +inputdata="./inception_v3_test_data.h5" +outputfile="./inception_v3.quantized.circle" + +rm -rf ${outputfile}.log + +# to create inception_v3.circle +if [[ ! -s ${inputfile} ]]; then + /bin/bash one-import_001.test >> /dev/null + return_code=$? + if [[ ${return_code} != 0 ]]; then + trap_err_onexit + fi +fi + +# run test +one-quantize \ +--input_dtype float32 \ +--quantized_dtype uint8 \ +--input_path ${inputfile} \ +--input_data ${inputdata} \ +--granularity layered \ +--output_path ${outputfile} > ${filename}.log + +echo "${filename_ext} FAILED" +exit 255 diff --git a/compiler/one-cmds/tests/prepare_test_materials.sh b/compiler/one-cmds/tests/prepare_test_materials.sh new file mode 100644 index 000000000..e241f44b5 --- /dev/null +++ b/compiler/one-cmds/tests/prepare_test_materials.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# See https://github.com/Samsung/ONE/issues/4155 for information + +SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +pushd $SCRIPT_PATH > /dev/null + +if [[ ! -s "inception_v3.pb" ]]; then + rm -rf inception_v3_2018_04_27.tgz + wget https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/inception_v3_2018_04_27.tgz + tar zxvf inception_v3_2018_04_27.tgz +fi + +if [[ ! -s "while_3.pbtxt" ]]; then + rm -rf while_3.zip + wget https://github.com/Samsung/ONE/files/5095630/while_3.zip + unzip while_3.zip +fi + +if [[ ! -s "inception_v3_test_data.h5" ]]; then + rm -rf inception_v3_test_data.zip + wget https://github.com/Samsung/ONE/files/5139370/inception_v3_test_data.zip + unzip inception_v3_test_data.zip +fi + +if [[ ! -s "mobilenet_test_data.h5" ]]; then + rm -rf mobilenet_test_data.zip + wget https://github.com/Samsung/ONE/files/5139460/mobilenet_test_data.zip + unzip mobilenet_test_data.zip +fi + +if [[ ! -s "bcq.pb" ]]; then + rm -rf bcq.pb.zip + wget https://github.com/Samsung/ONE/files/5153842/bcq.pb.zip + unzip bcq.pb.zip +fi + +# prepare 'inception_v3.circle' file used for quantizatio test +inputfile="./inception_v3.pb" +outputfile="./inception_v3.circle" + +if [[ ! -s ${outputfile} ]]; then + ../bin/one-import-tf \ + --input_path ${inputfile} \ + --output_path ${outputfile} \ + --input_arrays input --input_shapes "1,299,299,3" \ + --output_arrays InceptionV3/Predictions/Reshape_1 +fi + +popd > /dev/null |