Mercurial > hg > audiodb
comparison libtests/0029/prog1.c @ 498:342822c2d49a
Merge api-inversion branch (-r656:771, but I don't expect to return to
that branch) into the trunk.
I expect there to be minor performance regressions (e.g. in the SOAP
server index cacheing, which I have forcibly removed) and minor
unplugged memory leaks (e.g. in audioDB::query(), where I don't free up
the datum). I hope that these leaks and performance regressions can be
plugged in short order. I also expect that some (but maybe not all) of
the issues currently addressed in the memory-leaks branch are superseded
or fixed by this merge.
There remains much work to be done; go forth and do it.
author | mas01cr |
---|---|
date | Sat, 10 Jan 2009 16:47:57 +0000 |
parents | 94c18f128ce8 |
children | bcc7a6ddb2c8 |
comparison
equal
deleted
inserted
replaced
476:a7193678280b | 498:342822c2d49a |
---|---|
1 #include <stdio.h> | 1 #include "audioDB_API.h" |
2 #include <stdlib.h> | 2 #include "test_utils_lib.h" |
3 #include <string.h> | |
4 #include <sysexits.h> | |
5 #include <fcntl.h> | |
6 #include <dirent.h> | |
7 #include <unistd.h> | |
8 #include <sys/stat.h> | |
9 /* | |
10 * * #define NDEBUG | |
11 * * */ | |
12 #include <assert.h> | |
13 | 3 |
14 #include "../../audioDB_API.h" | 4 int main(int argc, char **argv) { |
15 #include "../test_utils_lib.h" | 5 adb_t *adb; |
16 | 6 |
7 clean_remove_db(TESTDB); | |
8 if(!(adb = audiodb_create(TESTDB, 0, 0, 0))) | |
9 return 1; | |
17 | 10 |
18 int main(int argc, char **argv){ | 11 adb_datum_t feature = {4, 2, "testfeature", |
12 (double [8]) {0, 1, 1, 0, 1, 0, 0, 1}, | |
13 (double [4]) {-0.5, -1, -1, -0.5}}; | |
14 if(!audiodb_insert_datum(adb, &feature)) | |
15 return 1; | |
16 audiodb_power(adb); | |
17 feature.power = NULL; | |
18 if(!audiodb_insert_datum(adb, &feature)) | |
19 return 1; | |
20 feature.power = (double [4]) {-0.5, -1, -1, -0.5}; | |
21 if(audiodb_insert_datum(adb, &feature)) | |
22 return 1; | |
19 | 23 |
20 int returnval=0; | 24 if(audiodb_l2norm(adb)) |
21 adb_ptr mydbp={0}; | 25 return 1; |
22 int ivals[10]; | |
23 double dvals[10]; | |
24 adb_insert_t myinsert={0}; | |
25 char * databasename="testdb"; | |
26 adb_query_t myadbquery={0}; | |
27 adb_queryresult_t myadbqueryresult={0}; | |
28 int size=0; | |
29 | 26 |
27 adb_datum_t query = {3, 2, "testquery", | |
28 (double [6]) {0, 0.5, 0, 0.5, 0.5, 0}, | |
29 (double [3]) {-0.5, -1, -1}}; | |
30 adb_query_id_t qid = {0}; | |
31 qid.datum = &query; | |
32 qid.sequence_length = 1; | |
33 qid.sequence_start = 0; | |
34 adb_query_parameters_t parms = | |
35 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_EUCLIDEAN_NORMED, 10, 10}; | |
36 adb_query_refine_t refine = {0}; | |
37 refine.hopsize = 1; | |
30 | 38 |
31 /* remove old directory */ | 39 adb_query_spec_t spec; |
32 //if [ -f testdb ]; then rm -f testdb; fi | 40 spec.qid = qid; |
33 clean_remove_db(databasename); | 41 spec.params = parms; |
42 spec.refine = refine; | |
34 | 43 |
35 /* create new db */ | 44 adb_query_results_t *results = audiodb_query_spec(adb, &spec); |
36 //${AUDIODB} -d testdb -N | 45 if(!results || results->nresults != 4) return 1; |
37 mydbp=audiodb_create(databasename,0,0,0); | 46 result_present_or_fail(results, "testfeature", 0, 0, 0); |
47 result_present_or_fail(results, "testfeature", 2, 0, 1); | |
48 result_present_or_fail(results, "testfeature", 2, 0, 2); | |
49 result_present_or_fail(results, "testfeature", 0, 0, 3); | |
50 audiodb_query_free_results(adb, &spec, results); | |
38 | 51 |
39 //intstring 2 > testfeature | 52 spec.qid.sequence_start = 1; |
40 //floatstring 0 1 >> testfeature | 53 results = audiodb_query_spec(adb, &spec); |
41 //floatstring 1 0 >> testfeature | 54 if(!results || results->nresults != 4) return 1; |
42 //floatstring 1 0 >> testfeature | 55 result_present_or_fail(results, "testfeature", 0, 1, 0); |
43 //floatstring 0 1 >> testfeature | 56 result_present_or_fail(results, "testfeature", 2, 1, 1); |
44 ivals[0]=2; | 57 result_present_or_fail(results, "testfeature", 2, 1, 2); |
45 dvals[0]=0; dvals[1]=1; dvals[2]=1; dvals[3]=0; | 58 result_present_or_fail(results, "testfeature", 0, 1, 3); |
46 dvals[4]=1; dvals[5]=0; dvals[6]=0; dvals[7]=1; | 59 audiodb_query_free_results(adb, &spec, results); |
47 maketestfile("testfeature",ivals,dvals,8); | |
48 | 60 |
49 //intstring 1 > testpower | 61 spec.qid.sequence_start = 2; |
50 //floatstring -0.5 >> testpower | 62 results = audiodb_query_spec(adb, &spec); |
51 //floatstring -1 >> testpower | 63 if(!results || results->nresults != 4) return 1; |
52 //floatstring -1 >> testpower | 64 result_present_or_fail(results, "testfeature", 2, 2, 0); |
53 //floatstring -0.5 >> testpower | 65 result_present_or_fail(results, "testfeature", 0, 2, 1); |
54 ivals[0]=1; | 66 result_present_or_fail(results, "testfeature", 0, 2, 2); |
55 dvals[0]=-0.5; dvals[1]=-1; dvals[2]=-1; dvals[3]=-0.5; | 67 result_present_or_fail(results, "testfeature", 2, 2, 3); |
56 maketestfile("testpower",ivals,dvals,4); | 68 audiodb_query_free_results(adb, &spec, results); |
57 | 69 |
58 //expect_clean_error_exit ${AUDIODB} -d testdb -I -f testfeature -w testpower | 70 spec.qid.sequence_length = 2; |
59 myinsert.features="testfeature"; | 71 spec.qid.sequence_start = 0; |
60 myinsert.power="testpower"; | 72 results = audiodb_query_spec(adb, &spec); |
61 if (!audiodb_insert(mydbp,&myinsert)){ returnval=-1; } | 73 if(!results || results->nresults != 3) return 1; |
74 result_present_or_fail(results, "testfeature", 1, 0, 0); | |
75 result_present_or_fail(results, "testfeature", 2, 0, 1); | |
76 result_present_or_fail(results, "testfeature", 1, 0, 2); | |
77 audiodb_query_free_results(adb, &spec, results); | |
62 | 78 |
63 //${AUDIODB} -d testdb -P | 79 spec.qid.sequence_start = 1; |
64 if(audiodb_power(mydbp)){ returnval=-1; }; | 80 results = audiodb_query_spec(adb, &spec); |
81 if(!results || results->nresults != 3) return 1; | |
82 result_present_or_fail(results, "testfeature", 0, 1, 0); | |
83 result_present_or_fail(results, "testfeature", 1, 1, 1); | |
84 result_present_or_fail(results, "testfeature", 2, 1, 2); | |
85 audiodb_query_free_results(adb, &spec, results); | |
65 | 86 |
66 //expect_clean_error_exit ${AUDIODB} -d testdb -I -f testfeature | 87 spec.refine.flags = ADB_REFINE_ABSOLUTE_THRESHOLD; |
67 myinsert.features="testfeature"; | 88 spec.refine.absolute_threshold = -1.4; |
68 myinsert.power=NULL; | |
69 if (!audiodb_insert(mydbp,&myinsert)){ returnval=-1; } | |
70 | 89 |
90 spec.qid.sequence_length = 2; | |
91 spec.qid.sequence_start = 0; | |
92 results = audiodb_query_spec(adb, &spec); | |
93 if(!results || results->nresults != 3) return 1; | |
94 result_present_or_fail(results, "testfeature", 1, 0, 0); | |
95 result_present_or_fail(results, "testfeature", 2, 0, 1); | |
96 result_present_or_fail(results, "testfeature", 1, 0, 2); | |
97 audiodb_query_free_results(adb, &spec, results); | |
71 | 98 |
72 //${AUDIODB} -d testdb -I -f testfeature -w testpower | 99 spec.qid.sequence_start = 1; |
73 myinsert.features="testfeature"; | 100 results = audiodb_query_spec(adb, &spec); |
74 myinsert.power="testpower"; | 101 if(!results || results->nresults != 3) return 1; |
75 if (audiodb_insert(mydbp,&myinsert)){ returnval=-1; } | 102 result_present_or_fail(results, "testfeature", 0, 1, 0); |
103 result_present_or_fail(results, "testfeature", 1, 1, 1); | |
104 result_present_or_fail(results, "testfeature", 2, 1, 2); | |
105 audiodb_query_free_results(adb, &spec, results); | |
76 | 106 |
107 spec.refine.absolute_threshold = -0.8; | |
108 spec.qid.sequence_start = 0; | |
109 results = audiodb_query_spec(adb, &spec); | |
110 if(!results || results->nresults != 2) return 1; | |
111 result_present_or_fail(results, "testfeature", 1, 0, 0); | |
112 result_present_or_fail(results, "testfeature", 1, 0, 2); | |
113 audiodb_query_free_results(adb, &spec, results); | |
77 | 114 |
78 //# sequence queries require L2NORM | 115 spec.qid.sequence_start = 1; |
79 //${AUDIODB} -d testdb -L | 116 results = audiodb_query_spec(adb, &spec); |
80 if(audiodb_l2norm(mydbp)){ returnval=-1; }; | 117 if(!results || results->nresults != 0) return 1; |
118 audiodb_query_free_results(adb, &spec, results); | |
81 | 119 |
82 //echo "query points (0.0,0.5),(0.0,0.5),(0.5,0.0)" | 120 spec.refine.absolute_threshold = 0; |
83 //intstring 2 > testquery | 121 spec.refine.flags = ADB_REFINE_RELATIVE_THRESHOLD; |
84 //floatstring 0 0.5 >> testquery | 122 spec.refine.relative_threshold = 0.1; |
85 //floatstring 0 0.5 >> testquery | 123 spec.qid.sequence_start = 0; |
86 //floatstring 0.5 0 >> testquery | 124 results = audiodb_query_spec(adb, &spec); |
87 ivals[0]=2; | 125 if(!results || results->nresults != 2) return 1; |
88 dvals[0]=0; dvals[1]=0.5; dvals[2]=0; dvals[3]=0.5; dvals[4]=0.5; dvals[5]=0; | 126 result_present_or_fail(results, "testfeature", 1, 0, 0); |
89 maketestfile("testquery",ivals,dvals,6); | 127 result_present_or_fail(results, "testfeature", 1, 0, 2); |
128 audiodb_query_free_results(adb, &spec, results); | |
90 | 129 |
91 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery > testoutput | 130 audiodb_close(adb); |
92 //audioDB -Q sequence -d testdb -f testquery -l 1 | |
93 //echo testfeature 1 0 0 > test-expected-output | |
94 //cmp testoutput test-expected-output | |
95 myadbquery.querytype="sequence"; | |
96 myadbquery.feature="testquery"; | |
97 myadbquery.sequencelength="1"; | |
98 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
99 size=myadbqueryresult.sizeRlist; | |
100 | 131 |
101 dump_query(&myadbquery,&myadbqueryresult); | 132 return 104; |
102 | |
103 /* check the test values */ | |
104 if (size != 1) {returnval = -1;}; | |
105 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;}; | |
106 | |
107 | |
108 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -p 0 > testoutput | |
109 //echo testfeature 1 0 0 > test-expected-output | |
110 //cmp testoutput test-expected-output | |
111 myadbquery.querytype="sequence"; | |
112 myadbquery.feature="testquery"; | |
113 myadbquery.sequencelength="1"; | |
114 myadbquery.qpoint="0"; | |
115 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
116 size=myadbqueryresult.sizeRlist; | |
117 | |
118 /* check the test values */ | |
119 if (size != 1) {returnval = -1;}; | |
120 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;}; | |
121 | |
122 printf("returnval:%d\n",returnval); | |
123 | |
124 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -p 1 > testoutput | |
125 //echo testfeature 1 1 0 > test-expected-output | |
126 //cmp testoutput test-expected-output | |
127 myadbquery.querytype="sequence"; | |
128 myadbquery.feature="testquery"; | |
129 myadbquery.sequencelength="1"; | |
130 myadbquery.qpoint="1"; | |
131 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
132 size=myadbqueryresult.sizeRlist; | |
133 | |
134 /* check the test values */ | |
135 if (size != 1) {returnval = -1;}; | |
136 if (testoneresult(&myadbqueryresult,0,"testfeature",1,1,0)) {returnval = -1;}; | |
137 | |
138 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -p 0 > testoutput | |
139 //echo testfeature 1.33333 0 0 > test-expected-output | |
140 //cmp testoutput test-expected-output | |
141 myadbquery.querytype="sequence"; | |
142 myadbquery.feature="testquery"; | |
143 myadbquery.sequencelength="2"; | |
144 myadbquery.qpoint="0"; | |
145 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
146 size=myadbqueryresult.sizeRlist; | |
147 | |
148 /* check the test values */ | |
149 if (size != 1) {returnval = -1;}; | |
150 if (testoneresult(&myadbqueryresult,0,"testfeature",1.33333,0,0)) {returnval = -1;}; | |
151 | |
152 | |
153 | |
154 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -p 1 > testoutput | |
155 //echo testfeature 1 1 0 > test-expected-output | |
156 //cmp testoutput test-expected-output | |
157 myadbquery.querytype="sequence"; | |
158 myadbquery.feature="testquery"; | |
159 myadbquery.sequencelength="2"; | |
160 myadbquery.qpoint="1"; | |
161 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
162 size=myadbqueryresult.sizeRlist; | |
163 | |
164 /* check the test values */ | |
165 if (size != 1) {returnval = -1;}; | |
166 if (testoneresult(&myadbqueryresult,0,"testfeature",1,1,0)) {returnval = -1;}; | |
167 | |
168 | |
169 //echo "query points (0.0,0.5)p=-0.5,(0.0,0.5)p=-1,(0.5,0.0)p=-1" | |
170 //intstring 1 > testquerypower | |
171 //floatstring -0.5 -1 -1 >> testquerypower | |
172 ivals[0]=1; | |
173 dvals[0]=-0.5; dvals[1]=-1; dvals[2]=-1; | |
174 maketestfile("testquerypower",ivals,dvals,3); | |
175 | |
176 | |
177 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-1.4 -p 0 > testoutput | |
178 //echo testfeature 1.33333 0 0 > test-expected-output | |
179 //cmp testoutput test-expected-output | |
180 myadbquery.querytype="sequence"; | |
181 myadbquery.feature="testquery"; | |
182 myadbquery.power="testquerypower"; | |
183 myadbquery.sequencelength="2"; | |
184 myadbquery.qpoint=NULL; | |
185 myadbquery.absolute_threshold=-1.4; | |
186 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
187 size=myadbqueryresult.sizeRlist; | |
188 | |
189 /* check the test values */ | |
190 if (size != 1) {returnval = -1;}; | |
191 if (testoneresult(&myadbqueryresult,0,"testfeature",1.33333,0,0)) {returnval = -1;}; | |
192 | |
193 | |
194 | |
195 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-1.4 -p 1 > testoutput | |
196 //echo testfeature 1 1 0 > test-expected-output | |
197 //cmp testoutput test-expected-output | |
198 myadbquery.querytype="sequence"; | |
199 myadbquery.feature="testquery"; | |
200 myadbquery.power="testquerypower"; | |
201 myadbquery.sequencelength="2"; | |
202 myadbquery.qpoint="1"; | |
203 myadbquery.absolute_threshold=-1.4; | |
204 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
205 size=myadbqueryresult.sizeRlist; | |
206 | |
207 /* check the test values */ | |
208 if (size != 1) {returnval = -1;}; | |
209 if (testoneresult(&myadbqueryresult,0,"testfeature",1,1,0)) {returnval = -1;}; | |
210 | |
211 | |
212 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-0.8 -p 0 > testoutput | |
213 //echo testfeature 1 0 0 > test-expected-output | |
214 //cmp testoutput test-expected-output | |
215 myadbquery.querytype="sequence"; | |
216 myadbquery.feature="testquery"; | |
217 myadbquery.power="testquerypower"; | |
218 myadbquery.sequencelength="2"; | |
219 myadbquery.qpoint="0"; | |
220 myadbquery.absolute_threshold=-0.8; | |
221 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
222 size=myadbqueryresult.sizeRlist; | |
223 | |
224 /* check the test values */ | |
225 if (size != 1) {returnval = -1;}; | |
226 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;}; | |
227 | |
228 | |
229 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-0.8 -p 1 > testoutput | |
230 //cat /dev/null > test-expected-output | |
231 //cmp testoutput test-expected-output | |
232 myadbquery.querytype="sequence"; | |
233 myadbquery.feature="testquery"; | |
234 myadbquery.power="testquerypower"; | |
235 myadbquery.sequencelength="2"; | |
236 myadbquery.qpoint="1"; | |
237 myadbquery.absolute_threshold=-0.8; | |
238 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
239 size=myadbqueryresult.sizeRlist; | |
240 | |
241 /* check the test values */ | |
242 if (size != 0) {returnval = -1;}; | |
243 | |
244 | |
245 | |
246 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --relative-threshold=0.1 -p 0 > testoutput | |
247 //echo testfeature 1 0 0 > test-expected-output | |
248 //cmp testoutput test-expected-output | |
249 myadbquery.querytype="sequence"; | |
250 myadbquery.feature="testquery"; | |
251 myadbquery.power="testquerypower"; | |
252 myadbquery.sequencelength="2"; | |
253 myadbquery.qpoint="0"; | |
254 myadbquery.absolute_threshold=0.0; | |
255 myadbquery.relative_threshold=0.1; | |
256 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
257 size=myadbqueryresult.sizeRlist; | |
258 | |
259 /* check the test values */ | |
260 if (size != 1) {returnval = -1;}; | |
261 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;}; | |
262 | |
263 | |
264 | |
265 //// returnval=-1; | |
266 printf("returnval:%d\n",returnval); | |
267 | |
268 return(returnval); | |
269 } | 133 } |
270 |