annotate libtests/test-utils.sh @ 369:6564be3109c5 gcc-4.3-cleanups

gcc-4.3 warning cleanups for lshlib.cpp (I do not believe that any of these changes contain significant copyrightable "intellectual property". However, to the extent that they do, the changes are hereby released into the Public Domain, and may be therefore be used by anyone for any purpose without need for consideration of any kind.)
author mas01cr
date Wed, 12 Nov 2008 15:23:32 +0000
parents 94c18f128ce8
children
rev   line source
mas01ik@355 1 # no shebang line: this file should be sourced by run-test.sh files
mas01ik@355 2
mas01ik@355 3 set -E
mas01ik@355 4
mas01ik@355 5 trap "exit 1" ERR
mas01ik@355 6
mas01ik@355 7 if [ -z "${AUDIODB}" ]; then
mas01ik@355 8 AUDIODB=../../audioDB
mas01ik@355 9 #AUDIODB=/Datastore/group/omras2/releases/bin_x86-64_linux/audioDB
mas01ik@355 10 fi
mas01ik@355 11
mas01ik@355 12 echo "AUDIODB:"
mas01ik@355 13
mas01ik@355 14 echo ${AUDIODB}
mas01ik@355 15
mas01ik@355 16
mas01ik@355 17
mas01ik@355 18
mas01ik@355 19 # FIXME: maybe generalize to multiple arguments? Also, implement it
mas01ik@355 20 # properly, rather than just for a few floats that we know how to
mas01ik@355 21 # encode. This might involve writing some C code, as Bash doesn't do
mas01ik@355 22 # Floating Point. (scanf() is probably enough).
mas01ik@355 23
mas01ik@355 24 expect_clean_error_exit() {
mas01ik@355 25 trap - ERR
mas01ik@355 26 "$@"
mas01ik@355 27 exit_code=$?
mas01ik@355 28
mas01ik@355 29 trap "exit 1" ERR
mas01ik@355 30 if [ $exit_code -eq 0 ]; then
mas01ik@355 31 exit 1
mas01ik@355 32 elif [ $exit_code -ge 126 ]; then
mas01ik@355 33 exit 1
mas01ik@355 34 fi
mas01ik@355 35 }
mas01ik@355 36
mas01ik@355 37 floatstring() {
mas01ik@355 38 for arg in "$@"; do
mas01ik@355 39 case ${arg} in
mas01ik@355 40 0)
mas01ik@355 41 printf "\x00\x00\x00\x00\x00\x00\x00\x00";;
mas01ik@355 42 -0.5)
mas01ik@355 43 printf "\x00\x00\x00\x00\x00\x00\xe0\xbf";;
mas01ik@355 44 0.5)
mas01ik@355 45 printf "\x00\x00\x00\x00\x00\x00\xe0\x3f";;
mas01ik@355 46 -1)
mas01ik@355 47 printf "\x00\x00\x00\x00\x00\x00\xf0\xbf";;
mas01ik@355 48 1)
mas01ik@355 49 printf "\x00\x00\x00\x00\x00\x00\xf0\x3f";;
mas01ik@355 50 *)
mas01ik@355 51 echo "bad arg to floatstring(): ${arg}"
mas01ik@355 52 exit 1;;
mas01ik@355 53 esac
mas01ik@355 54 done
mas01ik@355 55 }
mas01ik@355 56
mas01ik@355 57 # FIXME: likewise. And endianness issues (which are a reflection of
mas01ik@355 58 # the endianness of audioDB as of 2007-09-18, unfortunately).
mas01ik@355 59
mas01ik@355 60 intstring() {
mas01ik@355 61 # works up to 9 for now
mas01ik@355 62 if [ $1 -ge 10 ]; then echo "intstring() arg too large: ${1}"; exit 1; fi
mas01ik@355 63 printf "%b\x00\x00\x00" "\\x${1}"
mas01ik@355 64 }
mas01ik@355 65
mas01ik@355 66 # Web services utilities
mas01ik@355 67 start_server() {
mas01ik@355 68 $1 -s $2 &
mas01ik@355 69 # HACK: deal with race on process creation
mas01ik@355 70 sleep 1
mas01ik@355 71 trap 'kill $!; exit 1' ERR
mas01ik@355 72 }
mas01ik@355 73
mas01ik@355 74 stop_server() {
mas01ik@355 75 grep "${AUDIODB}" /proc/$1/cmdline > /dev/null
mas01ik@355 76 kill $1
mas01ik@355 77 # HACK: deal with race on process exit
mas01ik@355 78 sleep 1
mas01ik@355 79 expect_clean_error_exit grep ${AUDIODB} /proc/$1/cmdline
mas01ik@355 80 }
mas01ik@355 81
mas01ik@355 82 check_server() {
mas01ik@355 83 grep "${AUDIODB}" /proc/$1/cmdline > /dev/null
mas01ik@355 84 }
mas01ik@355 85
mas01ik@355 86 expect_client_failure() {
mas01ik@355 87 # FIXME: work out whether and how the client should report server
mas01ik@355 88 # errors. At present, the client exits with a zero exit code.
mas01ik@355 89 "$@"
mas01ik@355 90 }