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 <[email protected]>

Reply via email to