X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fsr_nng_static_test.c;h=294207c32100fb06f49c59a5804a73d8c07c27ce;hb=f89eec503272760b0a323c342c76eb013fcf795a;hp=d477391bec951452b6430c8983dc7190e4fab298;hpb=8790bf0c4f4f08fd05853afa67e211112b344a42;p=ric-plt%2Flib%2Frmr.git diff --git a/test/sr_nng_static_test.c b/test/sr_nng_static_test.c index d477391..294207c 100644 --- a/test/sr_nng_static_test.c +++ b/test/sr_nng_static_test.c @@ -34,26 +34,39 @@ #include #include #include +#include +#include -#include "../src/common/include/rmr.h" -#include "../src/common/include/rmr_agnostic.h" +#include "rmr.h" +#include "rmr_agnostic.h" /* Generate a simple route table (for all but direct route table testing). + This gets tricky inasmuch as we generate two in one; first a whole table + and then two update tables. The first is a table with a bad counter in the + last record to test that we don't load that table and error. The second + is a good update. */ static void gen_rt( uta_ctx_t* ctx ) { int fd; char* rt_stuff; // strings for the route table rt_stuff = + "newrt|end\n" // end of table check before start of table found + "# comment to drive full comment test\n" + "\n" // handle blank lines + " \n" // handle blank lines + "mse|4|10|localhost:4561\n" // entry before start message + "rte|4|localhost:4561\n" // entry before start message "newrt|start\n" // false start to drive detection "xxx|badentry to drive default case" "newrt|start\n" - "rte|0|localhost:4560,localhost:4562\n" + "rte|0|localhost:4560,localhost:4562\n" // these are legitimate entries for our testing "rte|1|localhost:4562;localhost:4561,localhost:4569\n" - "rte|2|localhost:4562\n" - "rte|4|localhost:4561\n" - "rte|5|localhost:4563\n" + "rte|2|localhost:4562| 10\n" // new subid at end + "mse|4|10|localhost:4561\n" // new msg/subid specifier rec + "mse|4|localhost:4561\n" // new mse entry with less than needed fields + " rte| 5 |localhost:4563 #garbage comment\n" // tests white space cleanup "rte|6|localhost:4562\n" "newrt|end\n"; @@ -64,9 +77,24 @@ static void gen_rt( uta_ctx_t* ctx ) { } setenv( "RMR_SEED_RT", "utesting.rt", 1 ); + write( fd, rt_stuff, strlen( rt_stuff ) ); // write in the whole table + + rt_stuff = + "updatert|start\n" // this is an update to the table + "mse|4|99|fooapp:9999,barapp:9999;logger:9999\n" // update just one entry + "updatert|end | 3\n"; // bad count; this update should be rejected + write( fd, rt_stuff, strlen( rt_stuff ) ); + + rt_stuff = + "updatert|start\n" // this is an update to the table + "mse|4|10|fooapp:4561,barapp:4561;logger:9999\n" // update just one entry + "del|2|-1\n" // delete an entry; not there so no action + "del|2|10\n" // delete an entry + "updatert|end | 3\n"; // end table; updates have a count as last field write( fd, rt_stuff, strlen( rt_stuff ) ); + close( fd ); - read_static_rt( ctx, 0 ); + read_static_rt( ctx, 1 ); // force in verbose mode to see stats on tty if failure unlink( "utesting.rt" ); } @@ -92,6 +120,7 @@ static int sr_nng_test() { nng_socket nn_dummy_sock; // dummy needed to drive send int size; int i; + void* p; //ctx = rmr_init( "tcp:4360", 2048, 0 ); // do NOT call init -- that starts the rtc thread which isn't good here ctx = (uta_ctx_t *) malloc( sizeof( uta_ctx_t ) ); // alloc the context manually @@ -101,9 +130,14 @@ static int sr_nng_test() { ctx->max_plen = RMR_MAX_RCV_BYTES + sizeof( uta_mhdr_t ); ctx->max_mlen = ctx->max_plen + sizeof( uta_mhdr_t ); ctx->my_name = strdup( "dummy-test" ); + ctx->my_ip = strdup( "30.4.19.86:1111" ); uta_lookup_rtg( ctx ); gen_rt( ctx ); // forces a static load with some known info since we don't start the rtc() + gen_rt( ctx ); // force a second load to test cloning + + p = rt_ensure_ep( NULL, "foo" ); // drive for coverage + errors += fail_not_nil( p, "rt_ensure_ep did not return nil when given nil route table" ); state = rmr_ready( NULL ); errors += fail_if_true( state, "reported ready when given a nil context" ); @@ -131,7 +165,7 @@ static int sr_nng_test() { mbuf = rmr_rcv_msg( ctx, NULL ); } - size = 2048 - sizeof( uta_mhdr_t ); // emulated nng receive allocates 2K payloads + size = 2048 - em_hdr_size(); // emulated nng receive allocates 2K buffers -- subtract off header size state = rmr_payload_size( mbuf ); errors += fail_not_equal( state, size, "payload size didn't return expected value" ); // receive should always give 4k buffer