this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add testsuite

Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>

+275
+275
test/kissfft-testsuite.sh
··· 1 + #!/bin/sh 2 + 3 + # 4 + # Test suite for kissfft 5 + # 6 + # Copyright (c) 2021, Vasyl Gello. 7 + # This file is part of KISS FFT - https://github.com/mborgerding/kissfft 8 + # 9 + # SPDX-License-Identifier: BSD-3-Clause 10 + # See COPYING file for more information. 11 + # 12 + 13 + if [ ! -f CHANGELOG ] && [ ! -f kiss_fft.h ]; then 14 + echo "ERROR: Please run this testsuite from top level of kissfft source tree!" >&2 15 + return 1 16 + fi 17 + 18 + TESTSUITEOUTDIR="$2" 19 + 20 + if [ -z "$TESTSUITEOUTDIR" ]; then 21 + TESTSUITEOUTDIR="/tmp/kissfft-testsuite" 22 + fi 23 + 24 + if ! mkdir -p "$TESTSUITEOUTDIR"; then 25 + echo "ERROR: Can not create directory '$TESTSUITEOUTDIR'!" >&2 26 + return 1 27 + fi 28 + 29 + # 30 + # Test runner function 31 + # 32 + # Parameters: 33 + # 34 + # $1 - Action: "test" or "install" 35 + # $2 - Build type: "make" or "cmake" 36 + # $3 - Data type: "float" "double" "int16_t" "int32_t" "simd" 37 + # $4 - library type: "shared" or "static" 38 + # $5 - Include tools: "yes" or "no" 39 + # $6 - Install root dir: "existing writable directory" 40 + # 41 + 42 + test_runner() { 43 + _ACTION="$1" 44 + _BUILD_TYPE="$2" 45 + _DATA_TYPE="$3" 46 + _LIB_TYPE="$4" 47 + _OPENMP="$5" 48 + _INCLUDE_TOOLS="$6" 49 + _INSTALL_ROOT_DIR="$7" 50 + 51 + _CMAKE_OPTS="" 52 + _MAKE_OPTS="" 53 + 54 + # Prepare install directory name without "$_OPENMP" and "$_INCLUDE_TOOLS" 55 + 56 + _INSTALL_DIR="$_INSTALL_ROOT_DIR/$_BUILD_TYPE/$_DATA_TYPE/$_LIB_TYPE" 57 + 58 + # Prepare log file without "$_OPENMP" and "$_INCLUDE_TOOLS" 59 + 60 + _LOG_FILE="$_INSTALL_ROOT_DIR/$_ACTION-$_BUILD_TYPE-$_DATA_TYPE-$_LIB_TYPE" 61 + 62 + # Validate parameters 63 + 64 + # Create install root directory 65 + 66 + if [ -z "$_INSTALL_ROOT_DIR" ]; then 67 + echo "" >&2 68 + echo "ERROR: Empty path to writeable directory" >&2 69 + echo "" >&2 70 + return 1 71 + fi 72 + 73 + if [ ! -d "$_INSTALL_ROOT_DIR" ]; then 74 + if ! mkdir -p "$_INSTALL_ROOT_DIR"; then 75 + echo "" >&2 76 + echo "ERROR: Can not create directory '$_INSTALL_ROOT_DIR'" >&2 77 + echo "" >&2 78 + return 1 79 + fi 80 + fi 81 + 82 + if [ "$_BUILD_TYPE" != "make" ] && [ "$_BUILD_TYPE" != "cmake" ]; then 83 + echo "ERROR: Build type must be one of: cmake make" >&2 84 + echo "" >&2 85 + return 1 86 + fi 87 + 88 + if [ "$_DATA_TYPE" != "double" ] && 89 + [ "$_DATA_TYPE" != "float" ] && 90 + [ "$_DATA_TYPE" != "int16_t" ] && 91 + [ "$_DATA_TYPE" != "int32_t" ] && 92 + [ "$_DATA_TYPE" != "simd" ]; 93 + then 94 + echo "ERROR: Data type must be one of: double float int16_t int32_t simd" >&2 95 + echo "" >&2 96 + return 1 97 + else 98 + _MAKE_OPTS="$_MAKE_OPTS KISSFFT_DATATYPE=$_DATA_TYPE" 99 + _CMAKE_OPTS="$_CMAKE_OPTS -DKISSFFT_DATATYPE=$_DATA_TYPE" 100 + fi 101 + 102 + if [ "$_LIB_TYPE" != "shared" ] && [ "$_LIB_TYPE" != "static" ]; then 103 + echo "ERROR: Library type must be one of: shared static" >&2 104 + echo "" >&2 105 + return 1 106 + fi 107 + 108 + case "$_LIB_TYPE" in 109 + "shared") 110 + ;; 111 + "static") 112 + _MAKE_OPTS="$_MAKE_OPTS KISSFFT_STATIC=1" 113 + _CMAKE_OPTS="$_CMAKE_OPTS -DKISSFFT_STATIC=ON" 114 + ;; 115 + "*") 116 + echo "ERROR: OpenMP inclusion must be one of: no yes" >&2 117 + echo "" >&2 118 + return 1 119 + ;; 120 + esac 121 + 122 + case "$_OPENMP" in 123 + "yes") 124 + _INSTALL_DIR="$_INSTALL_DIR/openmp" 125 + _LOG_FILE="$_LOG_FILE-openmp" 126 + _MAKE_OPTS="$_MAKE_OPTS KISSFFT_OPENMP=1" 127 + _CMAKE_OPTS="$_CMAKE_OPTS -DKISSFFT_OPENMP=ON" 128 + ;; 129 + "no") 130 + _INSTALL_DIR="$_INSTALL_DIR/noopenmp" 131 + _LOG_FILE="$_LOG_FILE-noopenmp" 132 + ;; 133 + "*") 134 + echo "ERROR: OpenMP inclusion must be one of: no yes" >&2 135 + echo "" >&2 136 + return 1 137 + ;; 138 + esac 139 + 140 + case "$_INCLUDE_TOOLS" in 141 + "yes") 142 + _INSTALL_DIR="$_INSTALL_DIR/tools" 143 + _LOG_FILE="$_LOG_FILE-tools" 144 + ;; 145 + "no") 146 + _INSTALL_DIR="$_INSTALL_DIR/notools" 147 + _LOG_FILE="$_LOG_FILE-notools" 148 + _MAKE_OPTS="$_MAKE_OPTS KISSFFT_TOOLS=0" 149 + _CMAKE_OPTS="$_CMAKE_OPTS -DKISSFFT_TOOLS=OFF" 150 + ;; 151 + "*") 152 + echo "ERROR: Tools inclusion must be one of: no yes" >&2 153 + echo "" >&2 154 + return 1 155 + ;; 156 + esac 157 + 158 + # Clean kissfft 159 + 160 + rm -rf build 1>/dev/null 2>/dev/null 161 + make clean 1>/dev/null 2>&1 162 + 163 + # Prepare status line 164 + 165 + _STATUS_LINE="Running: $(printf "% 10s" "$_ACTION") |" 166 + _STATUS_LINE="$_STATUS_LINE Build Type: $(printf "% 7s" "$_BUILD_TYPE") |" 167 + _STATUS_LINE="$_STATUS_LINE Data Type: $(printf "% 7s" "$_DATA_TYPE") |" 168 + _STATUS_LINE="$_STATUS_LINE Lib Type: $(printf "% 7s" "$_LIB_TYPE") |" 169 + _STATUS_LINE="$_STATUS_LINE OpenMP: $(printf "% 3s" "$_OPENMP") |" 170 + _STATUS_LINE="$_STATUS_LINE Tools: $(printf "% 3s" "$_INCLUDE_TOOLS") |" 171 + 172 + # Skip tests with tools not installed as they are same as with tools 173 + 174 + if [ "$_ACTION" = "test" ] && [ "$_INCLUDE_TOOLS" = "no" ]; then 175 + return 2 176 + fi 177 + 178 + # Run selected action 179 + 180 + echo "$_STATUS_LINE" 181 + 182 + case "$_ACTION" in 183 + "test") 184 + _MAKE_OPTS="$_MAKE_OPTS PREFIX=$_INSTALL_DIR" 185 + _CMAKE_OPTS="$_CMAKE_OPTS -DCMAKE_INSTALL_PREFIX=$_INSTALL_DIR" 186 + 187 + case "$_BUILD_TYPE" in 188 + "make") 189 + make $_MAKE_OPTS all 1>>"$_LOG_FILE" 2>&1 && 190 + make $_MAKE_OPTS testsingle 1>>"$_LOG_FILE" 2>&1 && 191 + _RET=$? 192 + ;; 193 + "cmake") 194 + mkdir build 1>/dev/null 2>&1 && 195 + cd build && 196 + cmake $_CMAKE_OPTS .. 1>"$_LOG_FILE" 2>&1 && 197 + make all 1>>"$_LOG_FILE" 2>&1 && 198 + make test 1>>"$_LOG_FILE" 2>&1 199 + _RET=$? 200 + cd .. 201 + ;; 202 + esac 203 + ;; 204 + "install") 205 + _MAKE_OPTS="$_MAKE_OPTS PREFIX=$_INSTALL_DIR" 206 + _CMAKE_OPTS="$_CMAKE_OPTS -DCMAKE_INSTALL_PREFIX=$_INSTALL_DIR" 207 + 208 + case "$_BUILD_TYPE" in 209 + "make") 210 + make $_MAKE_OPTS install 1>>"$_LOG_FILE" 2>&1 211 + _RET=$? 212 + ;; 213 + "cmake") 214 + mkdir build 1>/dev/null 2>&1 && 215 + cd build && 216 + cmake $_CMAKE_OPTS .. 1>"$_LOG_FILE" 2>&1 && 217 + make all 1>>"$_LOG_FILE" 2>&1 && 218 + make install 1>>"$_LOG_FILE" 2>&1 219 + _RET=$? 220 + cd .. 221 + ;; 222 + esac 223 + ;; 224 + *) 225 + echo "ERROR: Action must be one of: test install" >&2 226 + echo "" >&2 227 + return 1 228 + ;; 229 + esac 230 + 231 + # Clean kissfft 232 + 233 + rm -rf build 1>/dev/null 2>/dev/null 234 + make clean 1>/dev/null 2>&1 235 + 236 + # Return result 237 + 238 + [ $_RET -eq 0 ] && return 0 || return 1 239 + } 240 + 241 + # Main script 242 + 243 + for ACTION in test install; do 244 + for BUILD_TYPE in make cmake; do 245 + for DATA_TYPE in float double int16_t int32_t simd; do 246 + for LIB_TYPE in shared static; do 247 + for OPENMP in no yes; do 248 + for INCLUDE_TOOLS in no yes; do 249 + test_runner \ 250 + "$ACTION" \ 251 + "$BUILD_TYPE" \ 252 + "$DATA_TYPE" \ 253 + "$LIB_TYPE" \ 254 + "$OPENMP" \ 255 + "$INCLUDE_TOOLS" \ 256 + "$TESTSUITEOUTDIR" 257 + 258 + case $? in 259 + 0) 260 + echo "Result: OK" 261 + ;; 262 + 1) 263 + echo "Result: FAIL" 264 + ;; 265 + 2) 266 + # Ignore it 267 + echo "Result: IGNORE" 1>/dev/null 268 + ;; 269 + esac 270 + done 271 + done 272 + done 273 + done 274 + done 275 + done 2>&1 | tee "$TESTSUITEOUTDIR/all-tests.log"