X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Ftest_msg_support.c;fp=test%2Ftest_msg_support.c;h=1e52c83f68a5794696b6585dd688aa9af6cd2df5;hb=e15b1382dc618f6832957e67dc638b5e8f3f414d;hp=0000000000000000000000000000000000000000;hpb=2d9d6784b306047e94ca9816813e5007b00fd17e;p=ric-plt%2Flib%2Frmr.git diff --git a/test/test_msg_support.c b/test/test_msg_support.c new file mode 100644 index 0000000..1e52c83 --- /dev/null +++ b/test/test_msg_support.c @@ -0,0 +1,94 @@ +// vi: ts=4 sw=4 noet : +/* +================================================================================== + Copyright (c) 2019-2020 Nokia + Copyright (c) 2018-2020 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 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +/* + Mnemonic: test_msg_support.c + Abstract: Support for testing with messages; requires RMR defs, so not + to be included for things like ring tests etc. + Author: E. Scott Daniels + Date: 14 April 2020 (AKD) +*/ + +#ifndef _test_msg_support_c +#define _test_msg_support_c + +#include +#include +#include +#include +#include +#include + +int test_support_xact_count = 0; +/* + Send a 'burst' of messages to drive some send retry failures to increase RMr coverage + by handling the retry caee. +*/ +static void send_n_msgs( void* ctx, int n ) { + rmr_mbuf_t* msg; // message buffers + int i; + + msg = rmr_alloc_msg( ctx, 1024 ); + if( ! msg ) { + fprintf( stderr, " mass send of %d messages couldn't allocate message!\n", n ); + return; + } + + fprintf( stderr, " mass send of %d messages\n", n ); + for( i = 0; i < n; i++ ) { + msg->len = 100; + msg->mtype = 1; + msg->state = 999; + + snprintf( msg->xaction, 32, "%015d", test_support_xact_count++ ); // simple transaction id so we can test receive specific and ring stuff + + errno = 999; + msg = rmr_send_msg( ctx, msg ); + if( msg && msg->state != 0 ) { + fprintf( stderr, " mass send failed: state=%d type=%d\n", msg->state, msg->mtype ); + } + } +} + + +/* + Allow test to reset the transaction id counter. +*/ +static void reset_xact_count() { + test_support_xact_count = 0; +} + +/* + Refresh or allocate a message with some default values +*/ +static rmr_mbuf_t* fresh_msg( void* ctx, rmr_mbuf_t* msg ) { + if( ! msg ) { + msg = rmr_alloc_msg( ctx, 2048 ); + } + + msg->mtype = 0; + msg->sub_id = -1; + msg->state = 0; + msg->len = 100; + + return msg; +} + +#endif