aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2024-07-15 16:34:27 +0200
committerpespin <pespin@sysmocom.de>2024-07-16 17:40:32 +0000
commite69bd2047c8db989cae1d3440fc8c58a16bcdd2c (patch)
treea33e16bc3a776417f4df0e9e01ac13875ca1e858
parent8e7ca9358c59532025cfb3ffc8900005c6610676 (diff)
asterisk: Introduce test TC_ims_call_mt_no_local_uas_registered
-rw-r--r--asterisk/Asterisk_Tests.ttcn62
-rw-r--r--asterisk/expected-results.xml1
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>