diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2024-07-15 16:34:27 +0200 |
---|---|---|
committer | pespin <pespin@sysmocom.de> | 2024-07-16 17:40:32 +0000 |
commit | e69bd2047c8db989cae1d3440fc8c58a16bcdd2c (patch) | |
tree | a33e16bc3a776417f4df0e9e01ac13875ca1e858 | |
parent | 8e7ca9358c59532025cfb3ffc8900005c6610676 (diff) |
asterisk: Introduce test TC_ims_call_mt_no_local_uas_registered
Change-Id: Ibf7ecfe67f90df060b0ae87f394424566ad0fed4
-rw-r--r-- | asterisk/Asterisk_Tests.ttcn | 62 | ||||
-rw-r--r-- | asterisk/expected-results.xml | 1 |
2 files changed, 63 insertions, 0 deletions
diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn index 916339a5..d202c051 100644 --- a/asterisk/Asterisk_Tests.ttcn +++ b/asterisk/Asterisk_Tests.ttcn @@ -1019,6 +1019,67 @@ testcase TC_ims_call_mt_noprecondition() runs on test_CT { f_TC_ims_call_mt(false); } +/* Validate incoming IMS MT call is rejected if no UAs are registered, hence not available. */ +private function f_TC_ims_call_mt_IMS_ConnHdlr_603_Decline(charstring id) runs on IMS_ConnHdlr { + f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr))); + as_IMS_register(); + COORD.send(IMS_COORD_CMD_REGISTERED); + setverdict(pass); + + COORD.receive(IMS_COORD_CMD_START); + f_IMS_mt_call_rejected(603, "Decline"); + setverdict(pass); + COORD.send(IMS_COORD_CMD_CALL_REJECTED); + + as_IMS_unregister(); +} +testcase TC_ims_call_mt_no_local_uas_registered() runs on test_CT { + var IMS_ConnHdlrPars ims_pars; + var IMS_ConnHdlr vc_conn_ims; + var AMI_Msg ami_msg; + const charstring c_ext_msisdn := "90829"; + + f_init(); + + ims_pars := f_init_IMS_ConnHdlrPars(); + + 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_ims := f_start_handler_IMS(refers(f_TC_ims_call_mt_IMS_ConnHdlr_603_Decline), ims_pars); + + f_AMI_IMS_register(ims_pars); + IMS_COORD.receive(IMS_COORD_CMD_REGISTERED) from vc_conn_ims; + + 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); + + /* Notify network released dedicated bearer: */ + 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); + + /* Trigger unregistration: */ + f_sleep(1.0); + AMI_CLIENT.clear; + f_AMI_IMS_unregister(ims_pars); + + vc_conn_ims.done; + f_shutdown(); +} + control { execute( TC_internal_registration() ); execute( TC_internal_call_momt() ); @@ -1042,6 +1103,7 @@ control { execute( TC_ims_call_mo_2nd_mt_rejected() ); execute( TC_ims_call_mt() ); execute( TC_ims_call_mt_noprecondition() ); + execute( TC_ims_call_mt_no_local_uas_registered() ); } } diff --git a/asterisk/expected-results.xml b/asterisk/expected-results.xml index ddc50a5c..3be281c8 100644 --- a/asterisk/expected-results.xml +++ b/asterisk/expected-results.xml @@ -22,4 +22,5 @@ <testcase classname='Asterisk_Tests' name='TC_ims_call_mo_2nd_mt_rejected' time='MASKED'/> <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'/> </testsuite> |