Mercurial > hg > audiodb
annotate tests/0017/run-test.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 | 8f7d0ae0ede4 |
children | fe4dc39b2dd7 |
rev | line source |
---|---|
mas01cr@96 | 1 #! /bin/sh |
mas01cr@96 | 2 |
mas01cr@96 | 3 . ../test-utils.sh |
mas01cr@96 | 4 |
mas01cr@96 | 5 if [ -f testdb ]; then rm -f testdb; fi |
mas01cr@96 | 6 |
mas01cr@96 | 7 ${AUDIODB} -d testdb -N |
mas01cr@96 | 8 |
mas01cr@96 | 9 # tests that the lack of -l when the query sequence is shorter doesn't |
mas01cr@96 | 10 # segfault. |
mas01cr@96 | 11 |
mas01cr@96 | 12 intstring 2 > testfeature |
mas01cr@96 | 13 floatstring 0 1 >> testfeature |
mas01cr@96 | 14 floatstring 1 0 >> testfeature |
mas01cr@96 | 15 |
mas01cr@96 | 16 ${AUDIODB} -d testdb -I -f testfeature |
mas01cr@96 | 17 |
mas01cr@96 | 18 # sequence queries require L2NORM |
mas01cr@96 | 19 ${AUDIODB} -d testdb -L |
mas01cr@96 | 20 |
mas01cr@96 | 21 start_server ${AUDIODB} 10017 |
mas01cr@96 | 22 |
mas01cr@96 | 23 echo "query point (0.0,0.5)" |
mas01cr@96 | 24 intstring 2 > testquery |
mas01cr@96 | 25 floatstring 0 0.5 >> testquery |
mas01cr@96 | 26 |
mas01cr@96 | 27 # FIXME: this actually revealed a horrible failure mode of the server: |
mas01cr@96 | 28 # since we were throwing exceptions from the constructor, the |
mas01cr@96 | 29 # destructor wasn't getting called and so we were retaining 2Gb of |
mas01cr@96 | 30 # address space, leading to immediate out of memory errors for the |
mas01cr@96 | 31 # /second/ call. We fix that by being a bit more careful about our |
mas01cr@96 | 32 # exception handling and cleanup discipline, but how to test...? |
mas01cr@96 | 33 |
mas01cr@96 | 34 expect_client_failure ${AUDIODB} -c localhost:10017 -d testdb -Q sequence -f testquery |
mas01cr@96 | 35 expect_client_failure ${AUDIODB} -c localhost:10017 -d testdb -Q sequence -f testquery -n 1 |
mas01cr@96 | 36 |
mas01cr@96 | 37 check_server $! |
mas01cr@96 | 38 |
mas01cr@96 | 39 echo "query point (0.5,0.0)" |
mas01cr@96 | 40 intstring 2 > testquery |
mas01cr@96 | 41 floatstring 0.5 0 >> testquery |
mas01cr@96 | 42 |
mas01cr@96 | 43 expect_client_failure ${AUDIODB} -c localhost:10017 -d testdb -Q sequence -f testquery |
mas01cr@96 | 44 expect_client_failure ${AUDIODB} -c localhost:10017 -d testdb -Q sequence -f testquery -n 1 |
mas01cr@96 | 45 |
mas01cr@96 | 46 check_server $! |
mas01cr@96 | 47 |
mas01cr@96 | 48 # see if the server can actually produce any output at this point |
mas01cr@96 | 49 ${AUDIODB} -c localhost:10017 -d testdb -Q sequence -l 1 -f testquery -n 1 > testoutput |
mas01cr@96 | 50 echo testfeature 0 0 1 > test-expected-output |
mas01cr@96 | 51 cmp testoutput test-expected-output |
mas01cr@96 | 52 |
mas01cr@96 | 53 stop_server $! |
mas01cr@96 | 54 |
mas01cr@96 | 55 exit 104 |