From 29b8a543aff75c68792fb49efa5b832375241cb3 Mon Sep 17 00:00:00 2001 From: Rich Graham Date: Tue, 17 Aug 2004 21:49:29 +0000 Subject: [PATCH] add more tests - finish non-threaded testing. This commit was SVN r2189. --- test/class/ompi_circular_buffer_fifo.c | 134 ++++++++++++++++++++++++- 1 file changed, 132 insertions(+), 2 deletions(-) diff --git a/test/class/ompi_circular_buffer_fifo.c b/test/class/ompi_circular_buffer_fifo.c index 841c8a7edf..e9befeb3af 100644 --- a/test/class/ompi_circular_buffer_fifo.c +++ b/test/class/ompi_circular_buffer_fifo.c @@ -31,7 +31,8 @@ int main(int argc, char **argv) { /* local variables */ ompi_cb_fifo_t fifo; - int size_of_fifo,lazy_free,return_status; + int i,size_of_fifo,lazy_free,return_status,error_cnt; + void *ptr; /* get queue size */ size_of_fifo=atoi(argv[1]); @@ -43,7 +44,6 @@ int main(int argc, char **argv) { /* init fifo */ return_status=ompi_cb_fifo_init(size_of_fifo,lazy_free,0,0,0,&fifo, &pool); - /* check to see that retrun status is success */ if( OMPI_SUCCESS == return_status ) { test_success(); @@ -51,6 +51,136 @@ int main(int argc, char **argv) { test_failure(" ompi_cv_fifo_init \n"); } + /* populate fifo */ + error_cnt=0; + for( i=0 ; i < ompi_cb_fifo_size(&fifo); i++ ) { + return_status=ompi_cb_fifo_write_to_head((void *)(i+5),&fifo); + if( OMPI_CB_ERROR == return_status ) { + test_failure(" ompi_cb_fifo_write_to_head\n"); + error_cnt++; + } + } + if( 0 == error_cnt ) { + test_success(); + } + + /* try an over-fill the queue */ + error_cnt=0; + for( i=0 ; i < 3 ; i++ ) { + return_status=ompi_cb_fifo_write_to_head((void *)i,&fifo); + if( OMPI_CB_ERROR != return_status ) { + test_failure(" ompi_cb_fifo_write_to_head :: over-fill queue\n"); + error_cnt++; + } + } + if( 0 == error_cnt ) { + test_success(); + } + + /* pop items off the queue */ + error_cnt=0; + for( i=0 ; i < ompi_cb_fifo_size(&fifo); i++ ) { + ptr=ompi_cb_fifo_read_from_tail(&fifo); + if( (void *)(i+5) != ptr ) { + test_failure(" ompi_cb_fifo_read_from_tail\n"); + error_cnt++; + } + } + if( 0 == error_cnt ) { + test_success(); + } + + /* free fifo */ + return_status=ompi_cb_fifo_free(&fifo,&pool); + if( OMPI_SUCCESS == return_status ) { + test_success(); + } else { + test_failure(" ompi_cv_fifo_init \n"); + } + + /* init fifo - lazy_free greater than size ==> should return error*/ + return_status=ompi_cb_fifo_init(size_of_fifo,size_of_fifo*2,0,0,0,&fifo, + &pool); + /* check to see that retrun status is success */ + if( OMPI_SUCCESS != return_status ) { + test_success(); + } else { + test_failure(" ompi_cv_fifo_init with lazy_free too large \n"); + } + + /* split the writting of data to the slot to a reserve, and then a + * write */ + + /* init fifo */ + return_status=ompi_cb_fifo_init(size_of_fifo,lazy_free,0,0,0,&fifo, + &pool); + /* check to see that retrun status is success */ + if( OMPI_SUCCESS == return_status ) { + test_success(); + } else { + test_failure(" ompi_cv_fifo_init \n"); + } + + /* populate fifo */ + error_cnt=0; + for( i=0 ; i < ompi_cb_fifo_size(&fifo); i++ ) { + return_status=ompi_cb_fifo_get_slot(&fifo); + if( OMPI_CB_ERROR == return_status ) { + test_failure(" ompi_cb_fifo_get_slot \n"); + error_cnt++; + } + } + if( 0 == error_cnt ) { + test_success(); + } + + /* try an over-fill the queue */ + error_cnt=0; + for( i=0 ; i < 3 ; i++ ) { + return_status=ompi_cb_fifo_get_slot (&fifo); + if( OMPI_CB_ERROR != return_status ) { + test_failure(" ompi_cb_fifo_get_slot :: over-fill queue\n"); + error_cnt++; + } + } + if( 0 == error_cnt ) { + test_success(); + } + + /* write to slot - all slots previously reserved, so just use + * them now */ + error_cnt=0; + for( i=0 ; i < ompi_cb_fifo_size(&fifo); i++ ) { + return_status=ompi_cb_fifo_write_to_slot(i,(void *)(i+5),&fifo); + if( OMPI_CB_ERROR == return_status ) { + test_failure(" ompi_cb_fifo_write_to_slot \n"); + error_cnt++; + } + } + if( 0 == error_cnt ) { + test_success(); + } + + /* pop items off the queue */ + error_cnt=0; + for( i=0 ; i < ompi_cb_fifo_size(&fifo); i++ ) { + ptr=ompi_cb_fifo_read_from_tail(&fifo); + if( (void *)(i+5) != ptr ) { + test_failure(" ompi_cb_fifo_read_from_tail\n"); + error_cnt++; + } + } + if( 0 == error_cnt ) { + test_success(); + } + + /* free fifo */ + return_status=ompi_cb_fifo_free(&fifo,&pool); + if( OMPI_SUCCESS == return_status ) { + test_success(); + } else { + test_failure(" ompi_cv_fifo_init \n"); + } /* finalize result tracking */ return test_finalize();