pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37493?usp=email )
Change subject: asterisk: Introduce test TC_ims_call_mt_local_uas_inacall ......................................................................
asterisk: Introduce test TC_ims_call_mt_local_uas_inacall
Change-Id: I8a407993f37d18a0bf4c96f5228c0b5ce696053a --- M asterisk/Asterisk_Tests.ttcn M asterisk/expected-results.xml 2 files changed, 87 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/93/37493/1
diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn index d202c05..a97f2a4 100644 --- a/asterisk/Asterisk_Tests.ttcn +++ b/asterisk/Asterisk_Tests.ttcn @@ -1080,6 +1080,82 @@ f_shutdown(); }
+/* Validate incoming IMS MT call is rejected if no UAs are available due to being busy in an internall call. */ +testcase TC_ims_call_mt_local_uas_inacall() runs on test_CT { + var SIPConnHdlrPars sip_pars[2]; + var IMS_ConnHdlrPars ims_pars; + var SIPConnHdlr vc_conn_sip[2]; + var IMS_ConnHdlr vc_conn_ims; + var AMI_Msg ami_msg; + const charstring c_ext_msisdn := "90829"; + + f_init(); + + sip_pars[0] := f_init_ConnHdlrPars(idx := 1); + sip_pars[1] := f_init_ConnHdlrPars(idx := 2); + ims_pars := f_init_IMS_ConnHdlrPars(); + + sip_pars[0].cp.calling := sip_pars[0].registrar_sip_record; + sip_pars[0].cp.called := sip_pars[1].registrar_sip_record; + + sip_pars[1].cp.calling := sip_pars[0].registrar_sip_record; + sip_pars[1].cp.called := sip_pars[1].local_sip_record; + + ims_pars.subscr.cp.calling := valueof(ts_SipAddr(ts_HostPort(ims_pars.realm), + ts_UserInfo(c_ext_msisdn))); + ims_pars.subscr.cp.called := valueof(ts_SipAddr(ts_HostPort(ims_pars.realm), + ts_UserInfo(ims_pars.subscr.msisdn))); + + vc_conn_sip[0] := f_start_handler(refers(f_TC_internal_call_mo), sip_pars[0]); + vc_conn_sip[1] := f_start_handler(refers(f_TC_internal_call_mt), sip_pars[1]); + + vc_conn_ims := f_start_handler_IMS(refers(f_TC_ims_call_mt_IMS_ConnHdlr_603_Decline), ims_pars); + f_AMI_IMS_register(ims_pars); + + interleave { + [] COORD.receive(COORD_CMD_REGISTERED) from vc_conn_sip[0]; + [] COORD.receive(COORD_CMD_REGISTERED) from vc_conn_sip[1]; + [] IMS_COORD.receive(IMS_COORD_CMD_REGISTERED) from vc_conn_ims; + } + + COORD.send(COORD_CMD_START) to vc_conn_sip[0]; + + interleave { + [] COORD.receive(COORD_CMD_CALL_ESTABLISHED) from vc_conn_sip[0]; + [] COORD.receive(COORD_CMD_CALL_ESTABLISHED) from vc_conn_sip[1]; + } + + /* Call on-going, now IMS MT call is attempted: */ + f_sleep(1.0); + IMS_COORD.send(IMS_COORD_CMD_START) to vc_conn_ims; + ami_msg := f_ami_wait_rx_msg(AMI_CLIENT, + tr_AMI_Event_Newchannel(mp_volte_ims_outbound_registration), + fail_others := false); + g_asterisk_chan_name := valueof(f_ami_msg_get_value(ami_msg, AMI_FIELD_CHANNEL)); + f_ami_action_DedicatedBearerStatus(AMI_CLIENT, + g_asterisk_chan_name, + "Up", fail_others := false); + IMS_COORD.receive(IMS_COORD_CMD_CALL_REJECTED) from vc_conn_ims; + AMI_CLIENT.clear; + f_ami_action_DedicatedBearerStatus(AMI_CLIENT, + g_asterisk_chan_name, + "Down", fail_others := false); + + + COORD.send(COORD_CMD_HANGUP) to vc_conn_sip[0]; + COORD.receive(COORD_CMD_CALL_FINISHED) from vc_conn_sip[1]; + + COORD.send(COORD_CMD_UNREGISTER) to vc_conn_sip[0]; + COORD.send(COORD_CMD_UNREGISTER) to vc_conn_sip[1]; + AMI_CLIENT.clear; + f_AMI_IMS_unregister(ims_pars); + + vc_conn_sip[0].done; + vc_conn_sip[1].done; + vc_conn_ims.done; + f_shutdown(); +} + control { execute( TC_internal_registration() ); execute( TC_internal_call_momt() ); @@ -1104,6 +1180,7 @@ execute( TC_ims_call_mt() ); execute( TC_ims_call_mt_noprecondition() ); execute( TC_ims_call_mt_no_local_uas_registered() ); + execute( TC_ims_call_mt_local_uas_inacall() ); }
} diff --git a/asterisk/expected-results.xml b/asterisk/expected-results.xml index 3be281c..dd665e4 100644 --- a/asterisk/expected-results.xml +++ b/asterisk/expected-results.xml @@ -23,4 +23,5 @@ <testcase classname='Asterisk_Tests' name='TC_ims_call_mt' time='MASKED'/> <testcase classname='Asterisk_Tests' name='TC_ims_call_mt_noprecondition' time='MASKED'/> <testcase classname='Asterisk_Tests' name='TC_ims_call_mt_no_local_uas_registered' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_call_mt_local_uas_inacall' time='MASKED'/> </testsuite>