OLD | NEW |
1 /* | 1 /* |
2 * rdbx_driver.c | 2 * rdbx_driver.c |
3 * | 3 * |
4 * driver for the rdbx implementation (replay database with extended range) | 4 * driver for the rdbx implementation (replay database with extended range) |
5 * | 5 * |
6 * David A. McGrew | 6 * David A. McGrew |
7 * Cisco Systems, Inc. | 7 * Cisco Systems, Inc. |
8 */ | 8 */ |
9 | 9 |
10 /* | 10 /* |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 status = rdbx_init(&rdbx, ws); | 235 status = rdbx_init(&rdbx, ws); |
236 if (status) { | 236 if (status) { |
237 printf("replay_init failed with error code %d\n", status); | 237 printf("replay_init failed with error code %d\n", status); |
238 exit(1); | 238 exit(1); |
239 } | 239 } |
240 | 240 |
241 /* | 241 /* |
242 * test sequential insertion | 242 * test sequential insertion |
243 */ | 243 */ |
244 printf("\ttesting sequential insertion..."); | 244 printf("\ttesting sequential insertion..."); |
245 for (idx=0; idx < num_trials; idx++) { | 245 for (idx=0; (int) idx < num_trials; idx++) { |
246 status = rdbx_check_add(&rdbx, idx); | 246 status = rdbx_check_add(&rdbx, idx); |
247 if (status) | 247 if (status) |
248 return status; | 248 return status; |
249 } | 249 } |
250 printf("passed\n"); | 250 printf("passed\n"); |
251 | 251 |
252 /* | 252 /* |
253 * test for false positives by checking all of the index | 253 * test for false positives by checking all of the index |
254 * values which we've just added | 254 * values which we've just added |
255 * | 255 * |
256 * note that we limit the number of trials here, since allowing the | 256 * note that we limit the number of trials here, since allowing the |
257 * rollover counter to roll over would defeat this test | 257 * rollover counter to roll over would defeat this test |
258 */ | 258 */ |
259 num_fp_trials = num_trials % 0x10000; | 259 num_fp_trials = num_trials % 0x10000; |
260 if (num_fp_trials == 0) { | 260 if (num_fp_trials == 0) { |
261 printf("warning: no false positive tests performed\n"); | 261 printf("warning: no false positive tests performed\n"); |
262 } | 262 } |
263 printf("\ttesting for false positives..."); | 263 printf("\ttesting for false positives..."); |
264 for (idx=0; idx < num_fp_trials; idx++) { | 264 for (idx=0; (int) idx < num_fp_trials; idx++) { |
265 status = rdbx_check_expect_failure(&rdbx, idx); | 265 status = rdbx_check_expect_failure(&rdbx, idx); |
266 if (status) | 266 if (status) |
267 return status; | 267 return status; |
268 } | 268 } |
269 printf("passed\n"); | 269 printf("passed\n"); |
270 | 270 |
271 /* re-initialize */ | 271 /* re-initialize */ |
272 rdbx_dealloc(&rdbx); | 272 rdbx_dealloc(&rdbx); |
273 | 273 |
274 if (rdbx_init(&rdbx, ws) != err_status_ok) { | 274 if (rdbx_init(&rdbx, ws) != err_status_ok) { |
275 printf("replay_init failed\n"); | 275 printf("replay_init failed\n"); |
276 return err_status_init_fail; | 276 return err_status_init_fail; |
277 } | 277 } |
278 | 278 |
279 /* | 279 /* |
280 * test non-sequential insertion | 280 * test non-sequential insertion |
281 * | 281 * |
282 * this test covers only fase negatives, since the values returned | 282 * this test covers only fase negatives, since the values returned |
283 * by ut_next_index(...) are distinct | 283 * by ut_next_index(...) are distinct |
284 */ | 284 */ |
285 ut_init(&utc); | 285 ut_init(&utc); |
286 | 286 |
287 printf("\ttesting non-sequential insertion..."); | 287 printf("\ttesting non-sequential insertion..."); |
288 for (idx=0; idx < num_trials; idx++) { | 288 for (idx=0; (int) idx < num_trials; idx++) { |
289 ircvd = ut_next_index(&utc); | 289 ircvd = ut_next_index(&utc); |
290 status = rdbx_check_add_unordered(&rdbx, ircvd); | 290 status = rdbx_check_add_unordered(&rdbx, ircvd); |
291 if (status) | 291 if (status) |
292 return status; | 292 return status; |
293 status = rdbx_check_expect_failure(&rdbx, ircvd); | 293 status = rdbx_check_expect_failure(&rdbx, ircvd); |
294 if (status) | 294 if (status) |
295 return status; | 295 return status; |
296 } | 296 } |
297 printf("passed\n"); | 297 printf("passed\n"); |
298 | 298 |
299 /* re-initialize */ | 299 /* re-initialize */ |
300 rdbx_dealloc(&rdbx); | 300 rdbx_dealloc(&rdbx); |
301 | 301 |
302 if (rdbx_init(&rdbx, ws) != err_status_ok) { | 302 if (rdbx_init(&rdbx, ws) != err_status_ok) { |
303 printf("replay_init failed\n"); | 303 printf("replay_init failed\n"); |
304 return err_status_init_fail; | 304 return err_status_init_fail; |
305 } | 305 } |
306 | 306 |
307 /* | 307 /* |
308 * test insertion with large gaps. | 308 * test insertion with large gaps. |
309 * check for false positives for each insertion. | 309 * check for false positives for each insertion. |
310 */ | 310 */ |
311 printf("\ttesting insertion with large gaps..."); | 311 printf("\ttesting insertion with large gaps..."); |
312 for (idx=0, ircvd=0; idx < num_trials; idx++, ircvd += (1 << (rand() % 12))) { | 312 for (idx=0, ircvd=0; (int) idx < num_trials; idx++, ircvd += (1 << (rand() % 1
2))) { |
313 status = rdbx_check_add(&rdbx, ircvd); | 313 status = rdbx_check_add(&rdbx, ircvd); |
314 if (status) | 314 if (status) |
315 return status; | 315 return status; |
316 status = rdbx_check_expect_failure(&rdbx, ircvd); | 316 status = rdbx_check_expect_failure(&rdbx, ircvd); |
317 if (status) | 317 if (status) |
318 return status; | 318 return status; |
319 } | 319 } |
320 printf("passed\n"); | 320 printf("passed\n"); |
321 | 321 |
322 rdbx_dealloc(&rdbx); | 322 rdbx_dealloc(&rdbx); |
(...skipping 15 matching lines...) Expand all Loading... |
338 clock_t timer; | 338 clock_t timer; |
339 int failures; /* count number of failures */ | 339 int failures; /* count number of failures */ |
340 | 340 |
341 if (rdbx_init(&rdbx, ws) != err_status_ok) { | 341 if (rdbx_init(&rdbx, ws) != err_status_ok) { |
342 printf("replay_init failed\n"); | 342 printf("replay_init failed\n"); |
343 exit(1); | 343 exit(1); |
344 } | 344 } |
345 | 345 |
346 failures = 0; | 346 failures = 0; |
347 timer = clock(); | 347 timer = clock(); |
348 for(i=0; i < num_trials; i++) { | 348 for(i=0; (int) i < num_trials; i++) { |
349 | 349 |
350 delta = index_guess(&rdbx.index, &est, i); | 350 delta = index_guess(&rdbx.index, &est, i); |
351 | 351 |
352 if (rdbx_check(&rdbx, delta) != err_status_ok) | 352 if (rdbx_check(&rdbx, delta) != err_status_ok) |
353 ++failures; | 353 ++failures; |
354 else | 354 else |
355 if (rdbx_add_index(&rdbx, delta) != err_status_ok) | 355 if (rdbx_add_index(&rdbx, delta) != err_status_ok) |
356 ++failures; | 356 ++failures; |
357 } | 357 } |
358 timer = clock() - timer; | 358 timer = clock() - timer; |
359 | 359 |
360 printf("number of failures: %d \n", failures); | 360 printf("number of failures: %d \n", failures); |
361 | 361 |
362 rdbx_dealloc(&rdbx); | 362 rdbx_dealloc(&rdbx); |
363 | 363 |
364 return (double) CLOCKS_PER_SEC * num_trials / timer; | 364 return (double) CLOCKS_PER_SEC * num_trials / timer; |
365 } | 365 } |
366 | 366 |
OLD | NEW |