annotate tests/test-utils.sh @ 167:100b7ba08df3 audiodb-debian

Merge trunk changes -r156:196 to audiodb-debian branch. (+ new debian/changelog version)
author mas01cr
date Tue, 06 Nov 2007 17:16:32 +0000
parents 1521d46bc1ac
children 6da72f0e086b
rev   line source
mas01cr@78 1 # no shebang line: this file should be sourced by run-test.sh files
mas01cr@78 2
mas01cr@107 3 set -E
mas01cr@107 4
mas01cr@78 5 trap "exit 1" ERR
mas01cr@78 6
mas01cr@78 7 if [ -z ${AUDIODB} ]; then
mas01cr@78 8 AUDIODB=../../audioDB
mas01cr@78 9 fi
mas01cr@78 10
mas01cr@78 11 # FIXME: maybe generalize to multiple arguments? Also, implement it
mas01cr@78 12 # properly, rather than just for a few floats that we know how to
mas01cr@78 13 # encode. This might involve writing some C code, as Bash doesn't do
mas01cr@78 14 # Floating Point. (scanf() is probably enough).
mas01cr@78 15
mas01cr@78 16 expect_clean_error_exit() {
mas01cr@78 17 trap - ERR
mas01cr@78 18 "$@"
mas01cr@78 19 exit_code=$?
mas01cr@78 20 trap "exit 1" ERR
mas01cr@78 21 if [ $exit_code -eq 0 ]; then
mas01cr@78 22 exit 1
mas01cr@78 23 elif [ $exit_code -ge 126 ]; then
mas01cr@78 24 exit 1
mas01cr@78 25 fi
mas01cr@78 26 }
mas01cr@78 27
mas01cr@78 28 floatstring() {
mas01cr@78 29 for arg in "$@"; do
mas01cr@78 30 case ${arg} in
mas01cr@78 31 0)
mas01cr@78 32 printf "\x00\x00\x00\x00\x00\x00\x00\x00";;
mas01cr@78 33 0.5)
mas01cr@78 34 printf "\x00\x00\x00\x00\x00\x00\xe0\x3f";;
mas01cr@78 35 1)
mas01cr@78 36 printf "\x00\x00\x00\x00\x00\x00\xf0\x3f";;
mas01cr@78 37 *)
mas01cr@78 38 echo "bad arg to floatstring(): ${arg}"
mas01cr@78 39 exit 1;;
mas01cr@78 40 esac
mas01cr@78 41 done
mas01cr@78 42 }
mas01cr@78 43
mas01cr@78 44 # FIXME: likewise. And endianness issues (which are a reflection of
mas01cr@78 45 # the endianness of audioDB as of 2007-09-18, unfortunately).
mas01cr@78 46
mas01cr@78 47 intstring() {
mas01cr@78 48 # works up to 9 for now
mas01cr@78 49 if [ $1 -ge 10 ]; then echo "intstring() arg too large: ${1}"; exit 1; fi
mas01cr@78 50 printf "%b\x00\x00\x00" "\\x${1}"
mas01cr@78 51 }
mas01cr@107 52
mas01cr@107 53 # Web services utilities
mas01cr@107 54 start_server() {
mas01cr@107 55 $1 -s $2 &
mas01cr@107 56 # HACK: deal with race on process creation
mas01cr@107 57 sleep 1
mas01cr@107 58 trap 'kill $!; exit 1' ERR
mas01cr@107 59 }
mas01cr@107 60
mas01cr@107 61 stop_server() {
mas01cr@107 62 grep ${AUDIODB} /proc/$1/cmdline > /dev/null
mas01cr@107 63 kill $1
mas01cr@107 64 # HACK: deal with race on process exit
mas01cr@107 65 sleep 1
mas01cr@107 66 expect_clean_error_exit grep ${AUDIODB} /proc/$1/cmdline
mas01cr@107 67 }
mas01cr@107 68
mas01cr@107 69 check_server() {
mas01cr@107 70 grep ${AUDIODB} /proc/$1/cmdline > /dev/null
mas01cr@107 71 }
mas01cr@107 72
mas01cr@107 73 expect_client_failure() {
mas01cr@107 74 # FIXME: work out whether and how the client should report server
mas01cr@107 75 # errors. At present, the client exits with a zero exit code.
mas01cr@107 76 "$@"
mas01cr@107 77 }