X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Frmr_nng_api_static_test.c;h=6588907ba8fb8e1bc166631de032b38e1bc107d7;hb=f1d10cd2456afcd0782c27887f7ba0c801efa6c2;hp=0cb49a5cb94deca6512150e9c05f588254cde3a7;hpb=412d53dfa2f9b5b56a448797d0dfec3b0f11f666;p=ric-plt%2Flib%2Frmr.git diff --git a/test/rmr_nng_api_static_test.c b/test/rmr_nng_api_static_test.c index 0cb49a5..6588907 100644 --- a/test/rmr_nng_api_static_test.c +++ b/test/rmr_nng_api_static_test.c @@ -116,29 +116,46 @@ static int rmr_api_test( ) { v = rmr_ready( NULL ); errors += fail_if( v != 0, "rmr_ready returned true before initialisation " ); + em_set_long_hostname( 1 ); if( (rmc = rmr_init( "4560", 1024, FL_NOTHREAD )) == NULL ) { fail_if_nil( rmc, "rmr_init returned a nil pointer " ); return 1; } + setenv( "RMR_SRC_ID", "somehost", 1 ); // context should have this as source if( (rmc2 = rmr_init( ":6789", 1024, FL_NOTHREAD )) == NULL ) { // init without starting a thread errors += fail_if_nil( rmc, "rmr_init returned a nil pointer for non-threaded init " ); } + fprintf( stderr, " with RMR_SRC_ID env set, source name in context: (%s)\n", ((uta_ctx_t *) rmc2)->my_name ); + v = strcmp( ((uta_ctx_t *) rmc2)->my_name, "somehost:6789" ); + errors += fail_not_equal( v, 0, "source name not set from environment variable (see previous info)" ); free_ctx( rmc2 ); // coverage - + + unsetenv( "RMR_SRC_ID" ); // context should NOT have our artificial name if( (rmc2 = rmr_init( NULL, 1024, FL_NOTHREAD )) == NULL ) { // drive default port selector code errors += fail_if_nil( rmc, "rmr_init returned a nil pointer when driving for default port " ); } + fprintf( stderr, " after unset of RMR_SRC_ID, source name in context: (%s)\n", ((uta_ctx_t *) rmc2)->my_name ); + v = strcmp( ((uta_ctx_t *) rmc2)->my_name, "somehost:6789" ); + errors += fail_if_equal( v, 0, "source name smells when removed from environment (see previous info)" ); + free_ctx( rmc2 ); // attempt to reduce leak check errors v = rmr_ready( rmc ); // unknown return; not checking at the moment msg = rmr_alloc_msg( NULL, 1024 ); // should return nil pointer errors += fail_not_nil( msg, "rmr_alloc_msg didn't return nil when given nil context " ); + msg = rmr_alloc_msg( rmc, 2048 ); // allocate larger than default size given on init errors += fail_if_nil( msg, "rmr_alloc_msg returned nil msg pointer " ); + if( msg ) { + rmr_get_srcip( msg, wbuf ); + errors += fail_if_equal( 0, strlen( wbuf ), "rmr_get_srcip did not did not return string with length (b) after alloc_msg" ); + fprintf( stderr, " ip: %s\n", wbuf ); + } + v = rmr_payload_size( NULL ); errors += fail_if( v >= 0, "rmr_payload_size returned valid size for nil message " ); @@ -176,12 +193,14 @@ static int rmr_api_test( ) { msg->len = 100; msg->mtype = 1; msg->state = 999; + msg->tp_state = 999; errno = 999; msg = rmr_send_msg( rmc, msg ); errors += fail_if_nil( msg, "send_msg_ did not return a message on send " ); if( msg ) { errors += fail_not_equal( msg->state, RMR_ERR_NOENDPT, "send_msg did not return no endpoints before rtable added " ); errors += fail_if( errno == 0, "send_msg did not set errno " ); + errors += fail_if( msg->tp_state == 999, "send_msg did not set tp_state (1)" ); } gen_rt( rmc ); // --- after this point there is a dummy route table so send and rts calls should be ok @@ -189,6 +208,7 @@ static int rmr_api_test( ) { msg->len = 100; msg->mtype = 1; msg->state = 999; + msg->tp_state = 999; errno = 999; msg = rmr_send_msg( rmc, msg ); errors += fail_if_nil( msg, "send_msg_ did not return a message on send " ); @@ -197,6 +217,7 @@ static int rmr_api_test( ) { errors += fail_if( errno != 0, "send_msg set errno for send that should work " ); v = rmr_payload_size( msg ); errors += fail_if( v != 2048, "send_msg did not allocate new buffer with correct size " ); + errors += fail_if( msg->tp_state == 999, "send_msg did not set tp_state (2)" ); } rmr_set_stimeout( NULL, 0 ); @@ -215,7 +236,6 @@ static int rmr_api_test( ) { if( msg2->state != RMR_ERR_EMPTY ) { errors += fail_not_equal( msg2->state, RMR_OK, "receive given nil message did not return msg with good state (not empty) " ); } - //errors += fail_not_equal( msg2->state, RMR_OK, "receive given nil message did not return msg with good state " ); } @@ -233,12 +253,17 @@ static int rmr_api_test( ) { msg->state = 0; msg = rmr_rts_msg( NULL, msg ); // should set state in msg - errors += fail_if_equal( msg->state, 0, "rmr_rts_msg did not set state when given valid message but no context " ); + if( msg ) { + errors += fail_if_equal( msg->state, 0, "rmr_rts_msg did not set state when given valid message but no context " ); + } else { + errors += fail_if_nil( msg, "rmr_rts_msg returned a nil msg when given a good one" ); + } msg = rmr_rts_msg( rmc, msg ); // return the buffer to the sender errors += fail_if_nil( msg, "rmr_rts_msg did not return a message pointer " ); - errors += fail_if( errno != 0, "rmr_rts_msg did not reset errno " ); + errors += fail_not_equal( msg->state, 0, "rts_msg did not return a good state (a) when expected" ); + errors += fail_not_equal( errno, 0, "rmr_rts_msg did not reset errno (a) expected (b)" ); @@ -249,6 +274,8 @@ static int rmr_api_test( ) { snprintf( msg->xaction, 17, "%015d", 16 ); // dummy transaction id (emulation generates, this should arrive after a few calls to recv) msg->mtype = 0; msg->sub_id = -1; + em_set_rcvcount( 0 ); // reset message counter + em_set_rcvdelay( 1 ); // force slow msg rate during mt testing msg = rmr_call( rmc, msg ); // dummy nng/nano function will sequentually add xactions and should match or '16' errors += fail_if_nil( msg, "rmr_call returned a nil message on call expected to succeed " ); if( msg ) { @@ -419,10 +446,14 @@ static int rmr_api_test( ) { errors += fail_if_nil( msg, "mt_call with known xaction id returned nil message" ); } fprintf( stderr, " time check: %ld\n", time( NULL ) ); - em_set_mtc_msgs( 0 ); // turn off - em_set_rcvdelay( 0 ); // full speed receive rate + em_set_rcvdelay( 0 ); // full speed receive rate to overflow the ring + + fprintf( stderr, " pausing 5s to allow mt-call receive ring to fill %ld\n", time( NULL ) ); + sleep( 2 ); + fprintf( stderr, " tests continuing %ld\n", time( NULL ) ); + em_set_rcvdelay( 1 ); // restore slow receive pace for any later tests ((uta_ctx_t *)rmc)->shutdown = 1; // force the mt-reciver attached to the context to stop #endif