Mercurial > hg > waaad
changeset 274:f6b5120d5150
Completed test
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Wed, 17 Dec 2008 16:37:43 +0900 |
parents | 37c6a1be18cb |
children | b8e693f37c3b |
files | waaad/tests/testdisp.c |
diffstat | 1 files changed, 47 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/waaad/tests/testdisp.c Wed Dec 17 15:54:28 2008 +0900 +++ b/waaad/tests/testdisp.c Wed Dec 17 16:37:43 2008 +0900 @@ -57,6 +57,10 @@ static pthread_cond_t test_cnd = PTHREAD_COND_INITIALIZER; static uint32_t cb_called = 0; +static dict_object_t * cmd1r = NULL; +static dict_object_t * cmd1a = NULL; + + #define DEF_CB_DISP( NR, RET ) \ static int disp_cb ## NR ( msg_t * msg, msg_avp_t * avp, int handled ) \ { \ @@ -79,6 +83,13 @@ DEF_CB_DISP( 9, DISP_CBRET_CONTINUE ); DEF_CB_DISP(10, DISP_CBRET_HANDLED_STOP ); +static void cbans(void * data, msg_t ** answer) +{ + CHECK( 0, pthread_mutex_lock(&test_mtx) ); + cb_called |= 1<< 31 ; + CHECK( 0, pthread_cond_signal(&test_cnd) ); + CHECK( 0, pthread_mutex_unlock(&test_mtx) ); +} /* Create a new message to pass to dispatch module */ static void dispatch_new_message( int appid, @@ -111,6 +122,21 @@ CHECK( 0, msg_avp_add ( msg, MSG_BRW_LAST_CHILD, avp ) ); } + /* If message is an answer, create also the matching request */ + if (cmd == cmd1a) { + msg_t * qry = NULL; + + CHECK( 0, msg_new ( cmd1r, 0, &qry ) ); + + CHECK( 0, msg_send( &qry, cbans, NULL) ); + + /* Now retrieve the message in the outgoing queue, the rt_out thread is not running */ + CHECK( 0, meq_get( g_meq_outgoing, &qry ) ); + + /* Associate with the message */ + CHECK( 0, msg_answ_associate( msg, qry ) ); + } + /* reset cb_called */ cb_called = 0; @@ -135,14 +161,6 @@ if ( (yes & cb_called) == yes ) break; - #if 0 - fprintf(stderr, - "%s:%-4d: log ( cb_called == %d )\n", - __FILE__, - __LINE__, - cb_called); - #endif - CHECK( 0, pthread_cond_wait( &test_cnd, &test_mtx ) ); } while (1); @@ -161,8 +179,6 @@ dict_object_t * app1 = NULL; dict_object_t * app2 = NULL; dict_object_t * app3 = NULL; - dict_object_t * cmd1r = NULL; - dict_object_t * cmd1a = NULL; dict_object_t * cmd2 = NULL; dict_object_t * avp1 = NULL; dict_object_t * avp2 = NULL; @@ -174,6 +190,9 @@ INIT_WAAAD(); CONFIG_WAAAD(); + /* Kill routing module threads, so they don't interfere */ + CHECK( 0, rt_fini() ); + /* Create the dictionary objects */ { { @@ -205,7 +224,7 @@ T_CID2, "Command 2 for test", CMD_FLAG_PROXIABLE | CMD_FLAG_REQUEST, - CMD_FLAG_PROXIABLE + CMD_FLAG_PROXIABLE | CMD_FLAG_REQUEST }; CHECK( 0, dict_new ( DICT_COMMAND, &cmd_data1_r , NULL, &cmd1r ) ); CHECK( 0, dict_new ( DICT_COMMAND, &cmd_data1_a , NULL, &cmd1a ) ); @@ -347,12 +366,20 @@ dict_object_t * avp2; int val2; int cb[11]; /* 0: may, 1: must, -1: must not */ + int cba; } test_matrix[] = { - /* appid cmd avp1 val1 avp2 val2 cb0,cb1,cb2,cb3,cb4,cb5,cb6,cb7,cb8,cb9,cb10 */ - { 0, cmd1r, avp1, 0, NULL, 0, { 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }} - ,{ 0, cmd1r, avp1, T_EV1, avp1, 0, { 1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1 }} - ,{ 0, cmd1r, avp1, T_EV1, avp1, T_EV2, { 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1 }} - ,{ 0, cmd1r, avp1, T_EV2, avp1, T_EV1, { 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1 }} + /* appid cmd avp1 val1 avp2 val2 cb0,cb1,cb2,cb3,cb4,cb5,cb6,cb7,cb8,cb9,cb10 cba*/ + { 0, cmd1r, avp1, 0, NULL, 0, { 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, 0 } + ,{ 0, cmd1r, avp1, T_EV1, avp1, 0, { 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, 0 } + ,{ 0, cmd1r, avp1, T_EV1, avp1, T_EV2, { 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1 }, 0 } + ,{ 0, cmd1r, avp1, T_EV2, avp1, T_EV1, { 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1 }, 0 } + ,{ 0, cmd1a, avp1, T_EV2, avp1, T_EV1, { 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1 }, 1 } + ,{ 0, cmd2, avp1, T_EV2, avp1, T_EV1, { 1, -1, -1, -1, 1, -1, -1, -1, -1, 1, -1 }, 0 } + ,{ T_AID1, cmd2, avp1, T_EV2, avp1, T_EV1, { 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1 }, 0 } + ,{ T_AID2, cmd2, avp1, T_EV2, avp1, T_EV1, { 1, -1, 1, -1, 1, -1, -1, -1, -1, 1, -1 }, 0 } + ,{ T_AID2, cmd1a, avp1, T_EV2, avp1, T_EV1, { 1, -1, 1, -1, -1, 1, -1, -1, 1, 1, -1 }, 1 } + ,{ T_AID2, cmd1r, avp1, T_EV2, avp1, T_EV1, { 1, -1, 1, -1, -1, -1, 1, 1, -1, 1, -1 }, 0 } + ,{ T_AID3, cmd1a, avp2, T_EV2, avp1, T_EV2, { 1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1 }, 1 } }; int i; @@ -370,6 +397,10 @@ } } } + if (test_matrix[i].cba) + mask_yes |= 1 << 31; + else + mask_no |= 1 << 31; #if 0 fprintf(stderr, @@ -390,13 +421,6 @@ wait_for_val( mask_yes, mask_no ); - #if 0 - fprintf(stderr, - "%s:%-4d: Test line %d passed\n", - __FILE__, - __LINE__, - i); - #endif } }