X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fwormhole_static_test.c;h=9d5fd5894aac0ddbec99e260f4f0b6b10554795d;hb=cc314e0c526a0ed0ce9295e490b3f2bb29c3332c;hp=06cb36c952b0dd241074d863559bebb1b1ec4379;hpb=412d53dfa2f9b5b56a448797d0dfec3b0f11f666;p=ric-plt%2Flib%2Frmr.git diff --git a/test/wormhole_static_test.c b/test/wormhole_static_test.c index 06cb36c..9d5fd58 100644 --- a/test/wormhole_static_test.c +++ b/test/wormhole_static_test.c @@ -49,23 +49,35 @@ static int worm_test( ) { uta_ctx_t* ctx; // context needed to test load static rt char wbuf[1024]; int errors = 0; // number errors found + int state = 0; int i; void* p; rmr_mbuf_t* mbuf; // mbuf to send to peer + rmr_mbuf_t* resp; // response message from a wormhole call int whid = -1; int last_whid; - ctx = (uta_ctx_t *) malloc( sizeof( uta_ctx_t ) ); - if( ctx == NULL ) { - fail_if_nil( ctx, "could not allocate dummy context" ); - return 1; - } - memset( ctx, 0, sizeof( *ctx ) ); + ctx = mk_dummy_ctx(); ctx->my_name = strdup( "tester" ); + ctx->my_ip = strdup( "30.4.19.86:1111" ); gen_rt( ctx ); + // ---- must run these checks before wormhole(s) are opened -------------------------- + mbuf = rmr_alloc_msg( ctx, 2048 ); // get an muf to pass round, no need to init for first test + resp = rmr_wh_call( ctx, 0, mbuf, 1, 10 ); + errors += fail_if_nil( resp, "wormhole call given valid context and msg, before wormholes open didn't return message pointer" ); + if( resp ) { + errors += fail_if_equal( resp->state, RMR_OK, "wormhole call given valid context and msg, before wormholes open returned ok state" ); + } + + rmr_wh_close( NULL, 0 ); // drive for coverage; nothing to vet + rmr_wh_close( ctx, 0 ); + wh_init( NULL ); + + // ----- end must run before opening wormholes --------------------------------------- + whid = rmr_wh_open( NULL, NULL ); errors += fail_not_equal( whid, -1, "call to wh_open with invalid values did not return bad whid" ); @@ -79,6 +91,9 @@ static int worm_test( ) { whid = rmr_wh_open( ctx, "localhost:89219" ); errors += fail_if_equal( whid, -1, "call to wh_open with valid target failed" ); + i = wh_init( ctx ); // already initialised, ensure no harm + errors += fail_not_equal( i, 1, "second call to wh_init() didn't return true" ); + rmr_wh_close( ctx, 4 ); // test for coverage only; [5] should have nil pointer rmr_wh_close( ctx, 50 ); // test for coverage only; more than allocated reference @@ -119,6 +134,7 @@ static int worm_test( ) { } fail_if_nil( mbuf, "wh_send_msg returned a nil message buffer when given a nil context" ); + while( mbuf ) { if( !(mbuf = rmr_wh_send_msg( ctx, 50, mbuf )) ) { // test for coverage errors += fail_if_nil( mbuf, "send didn't return an mbuf (skip rest of send tests)" ); @@ -137,7 +153,47 @@ static int worm_test( ) { break; } + // ---- wormhole state ----------- + state = rmr_wh_state( NULL, 0 ); + errors += fail_if_equal( state, RMR_OK, "wh_state with bad context did not return error" ); + + state = rmr_wh_state( ctx, -1 ); + errors += fail_if_equal( state, RMR_OK, "wh_state with bad whid did not return error" ); + + whid = rmr_wh_open( ctx, "localhost:9219" ); + if( ! fail_if_equal( whid, -1, "skipping some wh_state tests: no whid returned" ) ) { + state = rmr_wh_state( ctx, whid ); + errors += fail_not_equal( state, RMR_OK, "wh_state on an open wh did not return OK" ); + + rmr_wh_close( ctx, whid ); + state = rmr_wh_state( ctx, whid ); + errors += fail_if_equal( state, RMR_OK, "wh_state on a closed wh returned OK" ); + whid = -1; + } + + // ----- wormhole call -------------------------------------------------- + mbuf = rmr_alloc_msg( ctx, 2048 ); // ensure we have a buffer to pass + resp = rmr_wh_call( NULL, 0, NULL, 1, 10 ); // ensure no msg when msg is nil + errors += fail_not_nil( resp, "wormhole call given nil context and msg didn't return nil message" ); + + resp = rmr_wh_call( NULL, 0, mbuf, 1, 10 ); // ensure invalid state when context is bad + errors += fail_if_nil( resp, "wormhole call given nil context and valid msg didn't return message pointer" ); + if( resp != NULL ) { + errors += fail_if_equal( resp->state, RMR_OK, "wormhole call given nil context and valid message returned OK state" ); + } + + resp = rmr_wh_call( ctx, 2000, mbuf, 1, 10 ); // invalid wormhole id + errors += fail_if_nil( resp, "wormhole call given bad whid returned no msg" ); + if( resp ) { + errors += fail_if_equal( resp->state, RMR_OK, "wormhole call given bad whid returned good state" ); + } + + whid = rmr_wh_open( ctx, "localhost:9219" ); // ensure one is open + resp = rmr_wh_call( ctx, whid, mbuf, 1, 1 ); + errors += fail_if_nil( resp, "wormhole call given valid info returned nil response" ); + + // ----------------------------------------------------------------------- // WARNING: these tests destroy the context, so they MUST be last if( mbuf ) { // only if we got an mbuf errno = 0; @@ -147,6 +203,7 @@ static int worm_test( ) { errors += fail_not_equal( mbuf->state, RMR_ERR_NOHDR, "send with bad header did now set msg state correctly" ); errno = 0; + wh_nuke( NULL ); // coverage only wh_nuke( ctx ); ctx->wormholes = NULL; mbuf = rmr_wh_send_msg( ctx, 4, mbuf ); // coverage test on mbuf header check