X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fring_static_test.c;h=b194928d0b3b90e21fba02037e4e70ed9ba7ff63;hb=f1d10cd2456afcd0782c27887f7ba0c801efa6c2;hp=482244cc1a4cfcae2595a4261bbc1ab9cc426fdd;hpb=8dd46415b94b33fa960bdd5732e909ffc4859520;p=ric-plt%2Flib%2Frmr.git diff --git a/test/ring_static_test.c b/test/ring_static_test.c index 482244c..b194928 100644 --- a/test/ring_static_test.c +++ b/test/ring_static_test.c @@ -1,14 +1,14 @@ // : vi ts=4 sw=4 noet : /* ================================================================================== - Copyright (c) 2019 Nokia - Copyright (c) 2018-2019 AT&T Intellectual Property. + Copyright (c) 2019 Nokia + Copyright (c) 2018-2019 AT&T Intellectual Property. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -21,7 +21,7 @@ /* Mmemonic: ring_static_test.c Abstract: Test the ring funcitons. These are meant to be included at compile - time by the test driver. + time by the test driver. Author: E. Scott Daniels Date: 3 April 2019 @@ -34,16 +34,17 @@ #include #include #include +#include +#include -#include "../src/common/include/rmr.h" -#include "../src/common/include/rmr_agnostic.h" -//#include "../src/common/src/ring_static.c" +#include "rmr.h" +#include "rmr_agnostic.h" /* - Conduct a series of interleaved tests inserting i-factor + Conduct a series of interleaved tests inserting i-factor values before beginning to pull values (i-factor must be - size - 2 smaller than the ring. + size - 2 smaller than the ring. Returns 0 on success, 1 on insert failure and 2 on pull failure. */ static int ie_test( void* r, int i_factor, long inserts ) { @@ -77,6 +78,8 @@ static int ring_test( ) { int data[20]; int* dp; int size = 18; + int pfd = -1; // pollable file descriptor for the ring + int errors = 0; r = uta_mk_ring( 0 ); // should return nil if( r != NULL ) { @@ -95,6 +98,19 @@ static int ring_test( ) { return 1; } + pfd = uta_ring_getpfd( r ); // get pollable file descriptor + if( pfd < 0 ) { + fprintf( stderr, " expected a pollable file descriptor >= 0, but got: %d\n", pfd ); + errors++; + } + + pfd = uta_ring_config( r, 0x03 ); // turn on locking for reads and writes + if( pfd != 1 ) { + fprintf( stderr, " config attempt to enable locking failed\n" ); + errors++; + } + + for( i = 0; i < 20; i++ ) { // test to ensure it reports full when head/tail start at 0 data[i] = i; if( ! uta_ring_insert( r, &data[i] ) ) { @@ -118,7 +134,7 @@ static int ring_test( ) { } else { break; } - } + } if( *dp != i ) { fprintf( stderr, " data at i=% isnt right; expected %d got %d\n", i, i, *dp ); @@ -129,7 +145,7 @@ static int ring_test( ) { return 1; } fprintf( stderr, " extracted values were sane, got: %d\n", i-1 ); - + uta_ring_free( NULL ); // ensure this doesn't blow up uta_ring_free( r ); for( i = 2; i < 15; i++ ) { @@ -151,7 +167,7 @@ static int ring_test( ) { fprintf( stderr, " ie test for 66K inserts didn't return 0\n" ); return 1; } - + uta_ring_free( r ); } fprintf( stderr, " all large insert/exctract tests pass ring size=%d\n", size ); @@ -160,5 +176,5 @@ static int ring_test( ) { } fprintf( stderr, " all ring tests pass\n" ); - return 0; + return errors; }