pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38045?usp=email )
Change subject: asterisk: Introduce test TC_ims_call_mo_after_tcp_conn_closed
......................................................................
asterisk: Introduce test TC_ims_call_mo_after_tcp_conn_closed
Related: SYS#7067
Change-Id: I90df69b2418557d7001dddee4b6930ebbc58066d
---
M asterisk/Asterisk_Tests.ttcn
M asterisk/IMS_ConnectionHandler.ttcn
M asterisk/expected-results.xml
3 files changed, 31 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/45/38045/1
diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn
index 8269c9f..20e01e7 100644
--- a/asterisk/Asterisk_Tests.ttcn
+++ b/asterisk/Asterisk_Tests.ttcn
@@ -870,7 +870,9 @@
IMS_COORD.receive(IMS_COORD_CMD_CALL_REJECTED);
}
-private function f_TC_ims_call_mo(boolean use_precondition_ext := true, boolean
use_session_timer := false,
+private function f_TC_ims_call_mo(boolean close_tcp_after_registration := false,
+ boolean use_precondition_ext := true,
+ boolean use_session_timer := false,
call_established_fn call_established_cb := refers(call_established_fn_sleep1),
void_fn sip_fn := refers(f_TC_internal_call_mo),
ims_void_fn ims_fn := refers(f_TC_ims_call_mo_IMS_ConnHdlr)) runs on test_CT {
@@ -883,6 +885,7 @@
sip_pars := f_init_ConnHdlrPars(idx := 1);
ims_pars := f_init_IMS_ConnHdlrPars();
+ ims_pars.subscr.close_tcp_after_registration := close_tcp_after_registration;
f_ims_call_mo_configure(sip_pars, ims_pars);
ims_pars.subscr.cp.support_precondition_ext := use_precondition_ext;
@@ -944,6 +947,13 @@
f_TC_ims_call_mo(sip_fn := refers(f_TC_internal_call_mo_with_holdresume),
ims_fn := refers(f_TC_ims_call_mo_IMS_ConnHdlr_with_holdresume));
}
+/* TC_ims_call_mo, but IMS server closes the TCP conn used during 2nd register after
ACKing it.
+ * Asterisk should consider it is still registered even if that TCP conn was closed,
+ * and MO call should work the same.
+ */
+testcase TC_ims_call_mo_after_tcp_conn_closed() runs on test_CT {
+ f_TC_ims_call_mo(close_tcp_after_registration := true);
+}
/* Test a 2nd call initiated from a local SIP UA towards IMS after having HOLD the 1st
one. */
private function call_established_fn_holdswitchresume(SIPConnHdlrPars sip_pars,
IMS_ConnHdlrPars ims_pars) runs on test_CT {
@@ -1266,6 +1276,7 @@
execute( TC_ims_call_mo_holdswitchresume_mo() );
execute( TC_ims_call_mo_2nd_mo_rejected() );
execute( TC_ims_call_mo_2nd_mt_rejected() );
+ execute( TC_ims_call_mo_after_tcp_conn_closed() );
execute( TC_ims_call_mt() );
execute( TC_ims_call_mt_noprecondition() );
execute( TC_ims_call_mt_no_local_uas_registered() );
diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn
index 0c95108..12f624c 100644
--- a/asterisk/IMS_ConnectionHandler.ttcn
+++ b/asterisk/IMS_ConnectionHandler.ttcn
@@ -84,6 +84,7 @@
charstring msisdn,
boolean support_video,
boolean support_smsip,
+ boolean close_tcp_after_registration,
/* Expected User-Location-Info in P-Access-Network-Info */
charstring uli_str,
IMS_AuthVector auth,
@@ -209,6 +210,7 @@
msisdn := msisdn,
support_video := false,
support_smsip := false,
+ close_tcp_after_registration := false,
uli_str := "2380100010000101",
auth := {
/* The Nonce field is the Base64 encoded version of the RAND value and concatenated
with the AUTN: */
@@ -1020,6 +1022,9 @@
supported := supported,
userAgent := omit);
SIP.send(tx_resp);
+ if (g_pars.subscr.close_tcp_after_registration) {
+ f_IMS_tcp_close();
+ }
}
[fail_others] as_SIP_fail_resp(sip_expect_str);
[fail_others] as_SIP_fail_req(sip_expect_str);
@@ -1885,4 +1890,17 @@
[] as_IMS_exp_call_holdresume(tr_SDP_sendrecv, "sendrecv");
}
+function f_IMS_tcp_close() runs on IMS_ConnHdlr
+{
+ var ASP_SIP_close v_close:={addr:={
+ remote_host := g_pars.subscr.remote_sip_host,
+ remote_port := g_pars.subscr.ipsec_remote_port_c,
+ local_host := g_pars.local_sip_host,
+ local_port := g_pars.local_sip_port,
+ protocol := TCP_E
+ }}
+ log("Closing TCP connection: ", v_close);
+ SIP.send(v_close);
+}
+
}
diff --git a/asterisk/expected-results.xml b/asterisk/expected-results.xml
index 5a99ea3..5a7bc4d 100644
--- a/asterisk/expected-results.xml
+++ b/asterisk/expected-results.xml
@@ -21,6 +21,7 @@
<testcase classname='Asterisk_Tests'
name='TC_ims_call_mo_holdswitchresume_mo' time='MASKED'/>
<testcase classname='Asterisk_Tests'
name='TC_ims_call_mo_2nd_mo_rejected' time='MASKED'/>
<testcase classname='Asterisk_Tests'
name='TC_ims_call_mo_2nd_mt_rejected' time='MASKED'/>
+ <testcase classname='Asterisk_Tests'
name='TC_ims_call_mo_after_tcp_conn_closed' 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'/>
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38045?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I90df69b2418557d7001dddee4b6930ebbc58066d
Gerrit-Change-Number: 38045
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>