Mercurial > hg > audiodb
view tests/test-utils.sh @ 199:72a037f2b1e4
Alter timesTable handling.
Instead of inserting N boundary points per track, insert N (start,end)
pairs. Since N boundaries define only N-1 intervals, we were losing
information on insert -- this means that dump/restore cycles of existing
times-enabled databases WILL NOT WORK.
The input format for times files is still the same, albeit a little
tighter: there must be exactly N+1 floats in the file.
- make times table default length twice as big (done!)
- ensure exactly n+1 times read in from timesFile (done!)
- store (beginning, end) in times table (done!)
- update file format version (done!)
- ensure dump exactly n+1 times (done!)
- adjust uses of timesTable to read at 2k and 2k+1 (done!)
- timesdata[x] in sequence query is duration of sequence of
appropriate length from point [x] (done!)
- dbdurs calculation (done!)
- don't decrement j when using times in sequence query (done!)
- tests! (NOT DONE)
author | mas01cr |
---|---|
date | Fri, 23 Nov 2007 15:43:51 +0000 |
parents | e21cc48ddf4d |
children | d5ada9532a40 |
line wrap: on
line source
# no shebang line: this file should be sourced by run-test.sh files set -E trap "exit 1" ERR if [ -z "${AUDIODB}" ]; then AUDIODB=../../audioDB fi # FIXME: maybe generalize to multiple arguments? Also, implement it # properly, rather than just for a few floats that we know how to # encode. This might involve writing some C code, as Bash doesn't do # Floating Point. (scanf() is probably enough). expect_clean_error_exit() { trap - ERR "$@" exit_code=$? trap "exit 1" ERR if [ $exit_code -eq 0 ]; then exit 1 elif [ $exit_code -ge 126 ]; then exit 1 fi } floatstring() { for arg in "$@"; do case ${arg} in 0) printf "\x00\x00\x00\x00\x00\x00\x00\x00";; -0.5) printf "\x00\x00\x00\x00\x00\x00\xe0\xbf";; 0.5) printf "\x00\x00\x00\x00\x00\x00\xe0\x3f";; -1) printf "\x00\x00\x00\x00\x00\x00\xf0\xbf";; 1) printf "\x00\x00\x00\x00\x00\x00\xf0\x3f";; *) echo "bad arg to floatstring(): ${arg}" exit 1;; esac done } # FIXME: likewise. And endianness issues (which are a reflection of # the endianness of audioDB as of 2007-09-18, unfortunately). intstring() { # works up to 9 for now if [ $1 -ge 10 ]; then echo "intstring() arg too large: ${1}"; exit 1; fi printf "%b\x00\x00\x00" "\\x${1}" } # Web services utilities start_server() { $1 -s $2 & # HACK: deal with race on process creation sleep 1 trap 'kill $!; exit 1' ERR } stop_server() { grep "${AUDIODB}" /proc/$1/cmdline > /dev/null kill $1 # HACK: deal with race on process exit sleep 1 expect_clean_error_exit grep ${AUDIODB} /proc/$1/cmdline } check_server() { grep "${AUDIODB}" /proc/$1/cmdline > /dev/null } expect_client_failure() { # FIXME: work out whether and how the client should report server # errors. At present, the client exits with a zero exit code. "$@" }