Mercurial > hg > audiodb
annotate tests/0018/run-test.sh @ 251:a6c9a1c68646
Detect when we've run out of per-file space on insert() and
batchinsert().
Exposed by Lute Music/frames1 dataset, we previously corrupted the
trackTable and then got a segfault. This happened because the fileTable
and trackTable were mmap()ed next to each other, by coincidence, and the
lack of overflow checking on the fileTable meant that continued
insertion scribbled over the trackTable, which was twice as big (because
it has to be at least one memory page in size).
The root cause of all this is the --size creation argument, which needs
to be split into --nfiles, --datasize and --dimensions, so that the size
of all the tables can be computed accurately.
No test case yet, because my /bin/sh is currently pointing to dash,
which gets about as far as line 6 of run-tests.sh before giving up.
(We need either to fix bashisms or to run /bin/bash explicitly.)
author | mas01cr |
---|---|
date | Mon, 31 Mar 2008 11:52:59 +0000 |
parents | 49327149516a |
children | fe4dc39b2dd7 |
rev | line source |
---|---|
mas01cr@99 | 1 #! /bin/sh |
mas01cr@99 | 2 |
mas01cr@99 | 3 . ../test-utils.sh |
mas01cr@99 | 4 |
mas01cr@99 | 5 if [ -f testdb ]; then rm -f testdb; fi |
mas01cr@99 | 6 |
mas01cr@99 | 7 ${AUDIODB} -d testdb -N |
mas01cr@99 | 8 |
mas01cr@99 | 9 intstring 2 > testfeature01 |
mas01cr@99 | 10 floatstring 0 1 >> testfeature01 |
mas01cr@99 | 11 intstring 2 > testfeature10 |
mas01cr@99 | 12 floatstring 1 0 >> testfeature10 |
mas01cr@99 | 13 |
mas01cr@99 | 14 ${AUDIODB} -d testdb -I -f testfeature01 |
mas01cr@99 | 15 ${AUDIODB} -d testdb -I -f testfeature10 |
mas01cr@99 | 16 |
mas01cr@99 | 17 # sequence queries require L2NORM |
mas01cr@99 | 18 ${AUDIODB} -d testdb -L |
mas01cr@99 | 19 |
mas01cr@99 | 20 start_server ${AUDIODB} 10018 |
mas01cr@99 | 21 |
mas01cr@99 | 22 echo "query point (0.0,0.5)" |
mas01cr@99 | 23 intstring 2 > testquery |
mas01cr@99 | 24 floatstring 0 0.5 >> testquery |
mas01cr@99 | 25 |
mas01cr@99 | 26 ${AUDIODB} -c localhost:10018 -d testdb -Q sequence -l 1 -f testquery > testoutput |
mas01cr@99 | 27 echo testfeature01 0 0 0 > test-expected-output |
mas01cr@99 | 28 echo testfeature10 2 0 0 >> test-expected-output |
mas01cr@99 | 29 cmp testoutput test-expected-output |
mas01cr@99 | 30 ${AUDIODB} -c localhost:10018 -d testdb -Q sequence -l 1 -f testquery -r 1 > testoutput |
mas01cr@99 | 31 echo testfeature01 0 0 0 > test-expected-output |
mas01cr@99 | 32 cmp testoutput test-expected-output |
mas01cr@99 | 33 |
mas01cr@99 | 34 check_server $! |
mas01cr@99 | 35 |
mas01cr@99 | 36 echo "query point (0.5,0.0)" |
mas01cr@99 | 37 intstring 2 > testquery |
mas01cr@99 | 38 floatstring 0.5 0 >> testquery |
mas01cr@99 | 39 |
mas01cr@99 | 40 ${AUDIODB} -c localhost:10018 -d testdb -Q sequence -l 1 -f testquery > testoutput |
mas01cr@99 | 41 echo testfeature10 0 0 0 > test-expected-output |
mas01cr@99 | 42 echo testfeature01 2 0 0 >> test-expected-output |
mas01cr@99 | 43 cmp testoutput test-expected-output |
mas01cr@99 | 44 ${AUDIODB} -c localhost:10018 -d testdb -Q sequence -l 1 -f testquery -r 1 > testoutput |
mas01cr@99 | 45 echo testfeature10 0 0 0 > test-expected-output |
mas01cr@99 | 46 cmp testoutput test-expected-output |
mas01cr@99 | 47 |
mas01cr@99 | 48 stop_server $! |
mas01cr@99 | 49 |
mas01cr@99 | 50 exit 104 |