Mercurial > hg > audiodb
annotate tests/test-utils.sh @ 171:bb934f91d85c powertable
Web services interface to the powertable functionality.
* Implemented as a completely new SOAP method, called sequenceQuery
* lightly tested with http://doc.gold.ac.uk/~mas01cr/poweradb.php
(lacuna: need to pass relative-threshold and absolute-threshold always,
even when they don't make sense.)
Several uglinesses in the code, some of which will be resolved once all
the various branches are merged into the trunk.
author | mas01cr |
---|---|
date | Wed, 14 Nov 2007 14:00:53 +0000 |
parents | 94502600a049 |
children | e21cc48ddf4d |
rev | line source |
---|---|
mas01cr@48 | 1 # no shebang line: this file should be sourced by run-test.sh files |
mas01cr@48 | 2 |
mas01cr@101 | 3 set -E |
mas01cr@101 | 4 |
mas01cr@48 | 5 trap "exit 1" ERR |
mas01cr@48 | 6 |
mas01cr@48 | 7 if [ -z ${AUDIODB} ]; then |
mas01cr@48 | 8 AUDIODB=../../audioDB |
mas01cr@48 | 9 fi |
mas01cr@48 | 10 |
mas01cr@48 | 11 # FIXME: maybe generalize to multiple arguments? Also, implement it |
mas01cr@48 | 12 # properly, rather than just for a few floats that we know how to |
mas01cr@48 | 13 # encode. This might involve writing some C code, as Bash doesn't do |
mas01cr@48 | 14 # Floating Point. (scanf() is probably enough). |
mas01cr@48 | 15 |
mas01cr@54 | 16 expect_clean_error_exit() { |
mas01cr@54 | 17 trap - ERR |
mas01cr@54 | 18 "$@" |
mas01cr@54 | 19 exit_code=$? |
mas01cr@54 | 20 trap "exit 1" ERR |
mas01cr@54 | 21 if [ $exit_code -eq 0 ]; then |
mas01cr@54 | 22 exit 1 |
mas01cr@54 | 23 elif [ $exit_code -ge 126 ]; then |
mas01cr@54 | 24 exit 1 |
mas01cr@54 | 25 fi |
mas01cr@54 | 26 } |
mas01cr@54 | 27 |
mas01cr@48 | 28 floatstring() { |
mas01cr@48 | 29 for arg in "$@"; do |
mas01cr@48 | 30 case ${arg} in |
mas01cr@48 | 31 0) |
mas01cr@48 | 32 printf "\x00\x00\x00\x00\x00\x00\x00\x00";; |
mas01cr@160 | 33 -0.5) |
mas01cr@160 | 34 printf "\x00\x00\x00\x00\x00\x00\xe0\xbf";; |
mas01cr@48 | 35 0.5) |
mas01cr@48 | 36 printf "\x00\x00\x00\x00\x00\x00\xe0\x3f";; |
mas01cr@160 | 37 -1) |
mas01cr@160 | 38 printf "\x00\x00\x00\x00\x00\x00\xf0\xbf";; |
mas01cr@48 | 39 1) |
mas01cr@48 | 40 printf "\x00\x00\x00\x00\x00\x00\xf0\x3f";; |
mas01cr@48 | 41 *) |
mas01cr@48 | 42 echo "bad arg to floatstring(): ${arg}" |
mas01cr@48 | 43 exit 1;; |
mas01cr@48 | 44 esac |
mas01cr@48 | 45 done |
mas01cr@48 | 46 } |
mas01cr@48 | 47 |
mas01cr@48 | 48 # FIXME: likewise. And endianness issues (which are a reflection of |
mas01cr@48 | 49 # the endianness of audioDB as of 2007-09-18, unfortunately). |
mas01cr@48 | 50 |
mas01cr@48 | 51 intstring() { |
mas01cr@48 | 52 # works up to 9 for now |
mas01cr@48 | 53 if [ $1 -ge 10 ]; then echo "intstring() arg too large: ${1}"; exit 1; fi |
mas01cr@48 | 54 printf "%b\x00\x00\x00" "\\x${1}" |
mas01cr@48 | 55 } |
mas01cr@87 | 56 |
mas01cr@87 | 57 # Web services utilities |
mas01cr@87 | 58 start_server() { |
mas01cr@87 | 59 $1 -s $2 & |
mas01cr@87 | 60 # HACK: deal with race on process creation |
mas01cr@87 | 61 sleep 1 |
mas01cr@101 | 62 trap 'kill $!; exit 1' ERR |
mas01cr@87 | 63 } |
mas01cr@87 | 64 |
mas01cr@87 | 65 stop_server() { |
mas01cr@87 | 66 grep ${AUDIODB} /proc/$1/cmdline > /dev/null |
mas01cr@87 | 67 kill $1 |
mas01cr@87 | 68 # HACK: deal with race on process exit |
mas01cr@87 | 69 sleep 1 |
mas01cr@87 | 70 expect_clean_error_exit grep ${AUDIODB} /proc/$1/cmdline |
mas01cr@87 | 71 } |
mas01cr@87 | 72 |
mas01cr@87 | 73 check_server() { |
mas01cr@87 | 74 grep ${AUDIODB} /proc/$1/cmdline > /dev/null |
mas01cr@87 | 75 } |
mas01cr@94 | 76 |
mas01cr@95 | 77 expect_client_failure() { |
mas01cr@94 | 78 # FIXME: work out whether and how the client should report server |
mas01cr@94 | 79 # errors. At present, the client exits with a zero exit code. |
mas01cr@94 | 80 "$@" |
mas01cr@94 | 81 } |