Mercurial > hg > audiodb
annotate tests/test-utils.sh @ 95:6066d75a6d39
Rename expect_server_failure() to expect_client_failure().
Not that it's that much of a better name but at least no longer implies
that we expect the server to fall over. What we expect is a server
error code, and maybe eventually a client detection of that with
friendly reporting to the user. Ha ha.
author | mas01cr |
---|---|
date | Wed, 03 Oct 2007 15:12:05 +0000 |
parents | 03564e8988a2 |
children | e6cdee24d6c3 |
rev | line source |
---|---|
mas01cr@48 | 1 # no shebang line: this file should be sourced by run-test.sh files |
mas01cr@48 | 2 |
mas01cr@48 | 3 trap "exit 1" ERR |
mas01cr@48 | 4 |
mas01cr@48 | 5 if [ -z ${AUDIODB} ]; then |
mas01cr@48 | 6 AUDIODB=../../audioDB |
mas01cr@48 | 7 fi |
mas01cr@48 | 8 |
mas01cr@48 | 9 # FIXME: maybe generalize to multiple arguments? Also, implement it |
mas01cr@48 | 10 # properly, rather than just for a few floats that we know how to |
mas01cr@48 | 11 # encode. This might involve writing some C code, as Bash doesn't do |
mas01cr@48 | 12 # Floating Point. (scanf() is probably enough). |
mas01cr@48 | 13 |
mas01cr@54 | 14 expect_clean_error_exit() { |
mas01cr@54 | 15 trap - ERR |
mas01cr@54 | 16 "$@" |
mas01cr@54 | 17 exit_code=$? |
mas01cr@54 | 18 trap "exit 1" ERR |
mas01cr@54 | 19 if [ $exit_code -eq 0 ]; then |
mas01cr@54 | 20 exit 1 |
mas01cr@54 | 21 elif [ $exit_code -ge 126 ]; then |
mas01cr@54 | 22 exit 1 |
mas01cr@54 | 23 fi |
mas01cr@54 | 24 } |
mas01cr@54 | 25 |
mas01cr@48 | 26 floatstring() { |
mas01cr@48 | 27 for arg in "$@"; do |
mas01cr@48 | 28 case ${arg} in |
mas01cr@48 | 29 0) |
mas01cr@48 | 30 printf "\x00\x00\x00\x00\x00\x00\x00\x00";; |
mas01cr@48 | 31 0.5) |
mas01cr@48 | 32 printf "\x00\x00\x00\x00\x00\x00\xe0\x3f";; |
mas01cr@48 | 33 1) |
mas01cr@48 | 34 printf "\x00\x00\x00\x00\x00\x00\xf0\x3f";; |
mas01cr@48 | 35 *) |
mas01cr@48 | 36 echo "bad arg to floatstring(): ${arg}" |
mas01cr@48 | 37 exit 1;; |
mas01cr@48 | 38 esac |
mas01cr@48 | 39 done |
mas01cr@48 | 40 } |
mas01cr@48 | 41 |
mas01cr@48 | 42 # FIXME: likewise. And endianness issues (which are a reflection of |
mas01cr@48 | 43 # the endianness of audioDB as of 2007-09-18, unfortunately). |
mas01cr@48 | 44 |
mas01cr@48 | 45 intstring() { |
mas01cr@48 | 46 # works up to 9 for now |
mas01cr@48 | 47 if [ $1 -ge 10 ]; then echo "intstring() arg too large: ${1}"; exit 1; fi |
mas01cr@48 | 48 printf "%b\x00\x00\x00" "\\x${1}" |
mas01cr@48 | 49 } |
mas01cr@87 | 50 |
mas01cr@87 | 51 # Web services utilities |
mas01cr@87 | 52 start_server() { |
mas01cr@87 | 53 $1 -s $2 & |
mas01cr@87 | 54 # HACK: deal with race on process creation |
mas01cr@87 | 55 sleep 1 |
mas01cr@87 | 56 } |
mas01cr@87 | 57 |
mas01cr@87 | 58 stop_server() { |
mas01cr@87 | 59 grep ${AUDIODB} /proc/$1/cmdline > /dev/null |
mas01cr@87 | 60 kill $1 |
mas01cr@87 | 61 # HACK: deal with race on process exit |
mas01cr@87 | 62 sleep 1 |
mas01cr@87 | 63 expect_clean_error_exit grep ${AUDIODB} /proc/$1/cmdline |
mas01cr@87 | 64 } |
mas01cr@87 | 65 |
mas01cr@87 | 66 check_server() { |
mas01cr@87 | 67 grep ${AUDIODB} /proc/$1/cmdline > /dev/null |
mas01cr@87 | 68 } |
mas01cr@94 | 69 |
mas01cr@95 | 70 expect_client_failure() { |
mas01cr@94 | 71 # FIXME: work out whether and how the client should report server |
mas01cr@94 | 72 # errors. At present, the client exits with a zero exit code. |
mas01cr@94 | 73 "$@" |
mas01cr@94 | 74 } |