Changeset 767:c47c16436f71 in freeDiameter for tests/testfifo.c
- Timestamp:
- Oct 24, 2011, 6:43:32 AM (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/testfifo.c
r751 r767 111 111 } 112 112 113 /* The test function, to be threaded */ 114 static int iter = 0; 115 static void * test_fct2(void * data) 116 { 117 int i; 118 int * item; 119 struct test_data * td = (struct test_data *) data; 120 121 for (i=0; i< td->nbr; i++) { 122 item = malloc(sizeof(int)); 123 CHECK( 1, item ? 1 : 0 ); 124 *item = i; 125 CHECK( 0, fd_fifo_post(td->queue, &item) ); 126 iter++; 127 } 128 129 return NULL; 130 } 131 113 132 114 133 /* Main test routine */ … … 145 164 146 165 /* Create the queue */ 147 CHECK( 0, fd_fifo_new(&queue ) );166 CHECK( 0, fd_fifo_new(&queue, 0) ); 148 167 149 168 /* Check the count is 0 */ … … 233 252 234 253 /* Create the queue */ 235 CHECK( 0, fd_fifo_new(&queue ) );254 CHECK( 0, fd_fifo_new(&queue, 0) ); 236 255 237 256 /* Create the barrier */ … … 303 322 304 323 /* Create the queue */ 305 CHECK( 0, fd_fifo_new(&queue ) );324 CHECK( 0, fd_fifo_new(&queue, 0) ); 306 325 307 326 /* Create the barrier */ … … 370 389 371 390 /* Create the queue */ 372 CHECK( 0, fd_fifo_new(&queue ) );391 CHECK( 0, fd_fifo_new(&queue, 0) ); 373 392 374 393 /* Prepare the test data */ … … 442 461 } 443 462 463 /* Test max queue limit */ 464 { 465 struct fifo *queue = NULL; 466 struct test_data td; 467 pthread_t th; 468 int * item, i; 469 470 /* Create the queue */ 471 CHECK( 0, fd_fifo_new(&queue, 10) ); 472 473 /* Initialize the test data structures */ 474 td.queue = queue; 475 td.nbr = 15; 476 477 CHECK( 0, pthread_create( &th, NULL, test_fct2, &td ) ); 478 479 usleep(1000); /* 1 millisec */ 480 481 CHECK( 10, iter ); 482 483 CHECK( 0, fd_fifo_tryget(queue, &item) ); 484 CHECK( 0, *item); 485 free(item); 486 487 usleep(1000); /* 1 millisec */ 488 489 CHECK( 11, iter ); 490 491 for (i=1; i<4; i++) { 492 CHECK( 0, fd_fifo_get(queue, &item) ); 493 CHECK( i, *item); 494 free(item); 495 } 496 497 usleep(1000); /* 1 millisec */ 498 499 CHECK( 14, iter ); 500 501 /* fd_fifo_dump(0, "test", queue, NULL); */ 502 503 for (; i < td.nbr; i++) { 504 CHECK( 0, fd_fifo_tryget(queue, &item) ); 505 CHECK( i, *item); 506 free(item); 507 } 508 509 CHECK( 0, pthread_join( th, NULL ) ); 510 CHECK( 15, iter ); 511 512 } 513 444 514 /* Delete the messages */ 445 515 CHECK( 0, fd_msg_free( msg1 ) );
Note: See TracChangeset
for help on using the changeset viewer.