3 # Need at least 4 arguments
4 if [[ $# -lt 4 ]]; then
8 echo " [test.config path]"
18 CONFIG_PATH="$1"; shift
21 REMOTE_USER="$1"; shift
23 CURRENT_DATETIME=$(date +'%Y%m%d_%H%M%S')
24 REMOTE_WORKDIR=${REMOTE_WORKDIR:-"CVT_${CURRENT_DATETIME}"}
25 RESULT_CSV="${WORKDIR}/Result_${CURRENT_DATETIME}.csv"
27 source "${CONFIG_PATH}"
29 echo "-- Found nnkit-run: ${NNKIT_RUN_PATH}"
30 echo "-- Found TF backend: ${TF_BACKEND_PATH}"
31 echo "-- Found TF2CIRCLE: ${TF2CIRCLE_PATH}"
32 echo "-- Found MODEL2NNPKG: ${MODEL2NNPKG_PATH}"
33 echo "-- Found Runtime library: ${RUNTIME_LIBRARY_PATH}"
34 echo "-- Found randomize action: ${RANDOMIZE_ACTION_PATH}"
35 echo "-- Found HDF5 export action: ${HDF5_EXPORT_ACTION_PATH}"
36 echo "-- Found HDF5 import action: ${HDF5_IMPORT_ACTION_PATH}"
37 echo "-- Found workdir: ${WORKDIR}"
39 if [ -z ${MODEL2NNPKG_PATH} ] || [ ! -f ${MODEL2NNPKG_PATH} ]; then
40 echo "MODEL2NNPKG is not found"
44 # Register remote machine ssh information
45 cat /dev/zero | ssh-keygen -q -N ""
46 ssh-copy-id -o ConnectTimeout=5 "${REMOTE_USER}@${REMOTE_IP}"
48 # Odroid IP address validation
49 if [[ $? -ne 0 ]]; then
50 echo "Cannot reach to given remote machine. Check IP address or username."
54 # Send runtime library files
55 ssh "${REMOTE_USER}@${REMOTE_IP}" "mkdir -p ${REMOTE_WORKDIR}/Product/"
56 scp -r "${RUNTIME_LIBRARY_PATH}" "${REMOTE_USER}@${REMOTE_IP}:${REMOTE_WORKDIR}/Product/"
61 echo "TEST_NAME, TF2CIRCLE, CIRCLE_VALUE_TEST" >> ${RESULT_CSV}
64 while [[ $# -ne 0 ]]; do
69 PASSED_TAG="${PREFIX}.passed"
71 rm -f "${PASSED_TAG}" "${PREFIX}.circle"
73 # Information to be recorded
74 TF2CIRCLE_PASSED=FALSE
75 CIRCLE_VALUE_PASSED=FALSE
77 cat > "${PREFIX}.log" <(
80 echo "-- Found pb: ${PREFIX}.pb"
82 # Exit immediately if any command fails
89 "${WORKDIR}/${PREFIX}.info" \
90 "${WORKDIR}/${PREFIX}.pb" \
91 "${WORKDIR}/${PREFIX}.circle"
95 --backend "${TF_BACKEND_PATH}" \
96 --backend-arg "${WORKDIR}/${PREFIX}.pb" \
97 --backend-arg "${WORKDIR}/${PREFIX}.info" \
98 --pre "${RANDOMIZE_ACTION_PATH}" \
99 --pre "${HDF5_EXPORT_ACTION_PATH}" \
100 --pre-arg "${WORKDIR}/${PREFIX}.input.h5" \
101 --post "${HDF5_EXPORT_ACTION_PATH}" \
102 --post-arg "${WORKDIR}/${PREFIX}.expected.h5"
104 # Generate nnpackage model
105 "${MODEL2NNPKG_PATH}" -o "${WORKDIR}" "${WORKDIR}/${PREFIX}.circle"
107 # Copy h5 files into nnpackage
108 mkdir -p "${WORKDIR}/${PREFIX}/metadata/tc"
109 cp "${WORKDIR}/${PREFIX}.input.h5" "${WORKDIR}/${PREFIX}/metadata/tc/input.h5"
110 cp "${WORKDIR}/${PREFIX}.expected.h5" "${WORKDIR}/${PREFIX}/metadata/tc/expected.h5"
112 # Run test_arm_nnpkg in remote machine
113 scp -r "${WORKDIR}/${PREFIX}/" "${REMOTE_USER}@${REMOTE_IP}:${REMOTE_WORKDIR}/${PREFIX}/"
114 ssh "${REMOTE_USER}@${REMOTE_IP}" "cd ${REMOTE_WORKDIR}; ./Product/out/test/onert-test nnpkg-test -i . -o ${PREFIX}/metadata/tc ${PREFIX}"
116 if [[ $? -eq 0 ]]; then
117 touch "${PASSED_TAG}"
121 if [[ -f "${PREFIX}.circle" ]]; then
122 TF2CIRCLE_PASSED=TRUE
124 TF2CIRCLE_PASSED=FALSE
127 if [[ -f "${PASSED_TAG}" ]]; then
129 CIRCLE_VALUE_PASSED=TRUE
132 CIRCLE_VALUE_PASSED=FALSE
135 echo "${PREFIX}, ${TF2CIRCLE_PASSED}, ${CIRCLE_VALUE_PASSED}" >> ${RESULT_CSV}
140 ln -s ${RESULT_CSV} Result_latest
142 if [[ ${#TESTED[@]} -ne ${#PASSED[@]} ]]; then
144 for TEST in "${FAILED[@]}"