Add summary data to unit test output
[ric-plt/lib/rmr.git] / test / ring_static_test.c
index b194928..5bf6795 100644 (file)
 #include <pthread.h>
 #include <semaphore.h>
 
-#include "rmr.h"
-#include "rmr_agnostic.h"
-
-
 /*
        Conduct a series of interleaved tests inserting i-factor
        values before beginning to pull values (i-factor must be
@@ -82,34 +78,19 @@ static int ring_test( ) {
        int     errors = 0;
 
        r = uta_mk_ring( 0 );                   // should return nil
-       if( r != NULL ) {
-               fprintf( stderr, "<FAIL> attempt to make a ring with size 0 returned a pointer\n" );
-               return 1;
-       }
+       errors += fail_not_nil( r, "attempt to make a ring with size 0 returned a pointer" );
+
        r = uta_mk_ring( -1 );                  // should also return nil
-       if( r != NULL ) {
-               fprintf( stderr, "<FAIL> attempt to make a ring with size <0 returned a pointer\n" );
-               return 1;
-       }
+       errors += fail_not_nil( r, "attempt to make a ring with negative size returned a pointer" );
 
        r = uta_mk_ring( 18 );
-       if( r == NULL ) {
-               fprintf( stderr, "<FAIL> unable to make ring with 17 entries\n" );
-               return 1;
-       }
+       errors += fail_if_nil( r, "attempt to make a ring with valid size returned a nil pointer" );
 
        pfd = uta_ring_getpfd( r );             // get pollable file descriptor
-       if( pfd < 0 ) {
-               fprintf( stderr, "<FAIL> expected a pollable file descriptor >= 0, but got: %d\n", pfd );
-               errors++;
-       }
+       errors += fail_if_true( pfd < 0, "pollable file descriptor returned was bad" );
 
        pfd = uta_ring_config( r, 0x03 );               // turn on locking for reads and writes
-       if( pfd != 1 ) {
-               fprintf( stderr, "<FAIL> config attempt to enable locking failed\n" );
-               errors++;
-       }
-       
+       errors += fail_if_true( pfd != 1, "attempt to enable locking failed" );
 
        for( i = 0; i < 20; i++ ) {             // test to ensure it reports full when head/tail start at 0
                data[i] = i;
@@ -118,63 +99,41 @@ static int ring_test( ) {
                }
        }
 
-       if( i > size ) {
-               fprintf( stderr, "<FAIL> didn not report table full: i=%d\n", i );
-               return 1;
-       }
-
-       fprintf( stderr, "<OK>   reported table full at i=%d as expected\n", i );
-
+       errors += fail_if_true( i > size, "ring insert did not report full table" );
 
        for( i = 0; i < size + 3; i++ ) {                                                               // ensure they all come back in order, and we don't get 'extras'
                if( (dp = uta_ring_extract( r )) == NULL ) {
-                       if( i < size-1 ) {
-                               fprintf( stderr, "<FAIL> nil pointer at i=%d\n", i );
-                               return 1;
-                       } else {
-                               break;
-                       }
+                       errors += fail_if_true( i < size-1, "nil pointer on extract from full table" );
+                       break;
                }
 
-               if( *dp != i ) {
+               if( fail_if_true( *dp != i, "extracted data is incorrect; see details below" )) {
                        fprintf( stderr, "<FAIL> data at i=% isnt right; expected %d got %d\n", i, i, *dp );
+                       errors++;
                }
        }
-       if( i > size ) {
-               fprintf( stderr, "<FAIL> got too many values on extract: %d\n", i );
-               return 1;
-       }
-       fprintf( stderr, "<OK>   extracted values were sane, got: %d\n", i-1 );
+       fail_if_true( i > size, "got too many values from extract loop" );
 
        uta_ring_free( NULL );                                                  // ensure this doesn't blow up
        uta_ring_free( r );
        for( i = 2; i < 15; i++ ) {
                r = uta_mk_ring( 16 );
-               if( ie_test( r, i, 101 ) != 0 ) {                       // modest number of inserts
-                       fprintf( stderr, "<FAIL> ie test for 101 inserts didn't return 0\n" );
-                       return 1;
-               }
+               errors += fail_not_equal( ie_test( r, i, 101 ), 0, "ie test for 101 inserts didn't return 0" );
 
                uta_ring_free( r );
        }
-       fprintf( stderr, "<OK>   all modest insert/exctract tests pass\n" );
 
        size = 5;
        for( j = 0; j < 20; j++ ) {
                for( i = 2; i < size - 2; i++ ) {
                        r = uta_mk_ring( size );
-                       if( ie_test( r, i, 66000 ) != 0 ) {                     // should force the 16bit head/tail indexes to roll over
-                               fprintf( stderr, "<FAIL> ie test for 66K inserts didn't return 0\n" );
-                               return 1;
-                       }
+                       errors += fail_not_equal( ie_test( r, i, 66000 ), 0, "ie test for 66K inserts didn't return 0" );
 
                        uta_ring_free( r );
                }
-               fprintf( stderr, "<OK>   all large insert/exctract tests pass ring size=%d\n", size );
 
                size++;
        }
 
-       fprintf( stderr, "<INFO> all ring tests pass\n" );
        return errors;
 }