<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16965">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sccp: Introduce test TC_tiar_timeout<br><br>Existing templates are moved to SCPP_Templates.ttcn and new ones<br>required for the test are added there.<br><br>Related: OS#4343<br>Change-Id: I7b56fe77ac3b350d722c74b043e6ecabc48dcf31<br>---<br>M library/SCCP_Templates.ttcn<br>M sccp/SCCP_Tests_RAW.ttcn<br>2 files changed, 205 insertions(+), 50 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/SCCP_Templates.ttcn b/library/SCCP_Templates.ttcn</span><br><span>index 7c2ffa6..b3e3392 100644</span><br><span>--- a/library/SCCP_Templates.ttcn</span><br><span>+++ b/library/SCCP_Templates.ttcn</span><br><span>@@ -9,6 +9,8 @@</span><br><span> </span><br><span> module SCCP_Templates {</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from General_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> import from SCCP_Types all;</span><br><span> import from SCCPasp_Types all;</span><br><span> import from SCCP_Emulation all;</span><br><span>@@ -66,5 +68,134 @@</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* connection oriented SCCP */</span><br><span style="color: hsl(120, 100%, 40%);">+const SCCP_param_ProtocolClass c_class2 := { class:='0010'B, messageHandling:='0000'B };//class 2</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+function ts_SCCP_CR(OCT3 source_lref, SCCP_PAR_Address calling, SCCP_PAR_Address called)</span><br><span style="color: hsl(120, 100%, 40%);">+return template (value) PDU_SCCP {</span><br><span style="color: hsl(120, 100%, 40%);">+ var SCCP_param_CPartyAddressEnc calling_enc := ConvertASPAddressToEncodedAddress_itu(calling);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      var template (value) PDU_SCCP ret := {</span><br><span style="color: hsl(120, 100%, 40%);">+                connrequest := {</span><br><span style="color: hsl(120, 100%, 40%);">+                      messageType := cr,</span><br><span style="color: hsl(120, 100%, 40%);">+                    sourceLocRef := source_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+                  protClass := c_class2,</span><br><span style="color: hsl(120, 100%, 40%);">+                        pointer1 := 2,</span><br><span style="color: hsl(120, 100%, 40%);">+                        pointer2 := 0, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                      calledPAddress := ConvertASPAddressToEncodedAddress_itu(called),</span><br><span style="color: hsl(120, 100%, 40%);">+                      optionalPart := {</span><br><span style="color: hsl(120, 100%, 40%);">+                             credit := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                               callingPAddress := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  paramName := con_SCCP_cgPA,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   paramLength := calling_enc.paramLength, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                                     addr := calling_enc.addr</span><br><span style="color: hsl(120, 100%, 40%);">+                              },</span><br><span style="color: hsl(120, 100%, 40%);">+                            data := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                         hopCounter := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                           importance := omit</span><br><span style="color: hsl(120, 100%, 40%);">+                    },</span><br><span style="color: hsl(120, 100%, 40%);">+                    eop := { paramName:= con_SCCP_eop }</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return ret;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (present) PDU_SCCP tr_SCCP_CC(template (present) OCT3 source_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+                                template (present) OCT3 dest_lref) := {</span><br><span style="color: hsl(120, 100%, 40%);">+        connconfirm := {</span><br><span style="color: hsl(120, 100%, 40%);">+              messageType := cc,</span><br><span style="color: hsl(120, 100%, 40%);">+            destLocRef := dest_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+              sourceLocRef := source_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+          protClass := c_class2,</span><br><span style="color: hsl(120, 100%, 40%);">+                pointer1 := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                optionalPart := *,</span><br><span style="color: hsl(120, 100%, 40%);">+            eop := *</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PDU_SCCP ts_SCCP_UDT(SCCP_PAR_Address calling, SCCP_PAR_Address called,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    template (value) octetstring data,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    template (value) BIT4 msg_hdl := '0000'B) := {</span><br><span style="color: hsl(120, 100%, 40%);">+  unitdata := {</span><br><span style="color: hsl(120, 100%, 40%);">+         messageType := udt,</span><br><span style="color: hsl(120, 100%, 40%);">+           protClass := {'0000'B, msg_hdl},</span><br><span style="color: hsl(120, 100%, 40%);">+              pointer1 := 0,  /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+             pointer2 := 0,  /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+             pointer3 := 0,  /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+             calledPAddress := ConvertASPAddressToEncodedAddress_itu(called),</span><br><span style="color: hsl(120, 100%, 40%);">+              callingPAddress := ConvertASPAddressToEncodedAddress_itu(calling),</span><br><span style="color: hsl(120, 100%, 40%);">+            data := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     paramLength := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                     data := data</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_SCCP tr_SCCP_UDT(SCCP_PAR_Address calling, SCCP_PAR_Address called,</span><br><span style="color: hsl(120, 100%, 40%);">+                            template octetstring data := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                       template BIT4 msg_hdl := '0000'B) := {</span><br><span style="color: hsl(120, 100%, 40%);">+  unitdata := {</span><br><span style="color: hsl(120, 100%, 40%);">+         messageType := udt,</span><br><span style="color: hsl(120, 100%, 40%);">+           protClass := {'0000'B, msg_hdl},</span><br><span style="color: hsl(120, 100%, 40%);">+              pointer1 := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                pointer2 := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                pointer3 := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                calledPAddress := ConvertASPAddressToEncodedAddress_itu(called),</span><br><span style="color: hsl(120, 100%, 40%);">+              callingPAddress := ConvertASPAddressToEncodedAddress_itu(calling),</span><br><span style="color: hsl(120, 100%, 40%);">+            data := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     paramLength := lengthof(data),</span><br><span style="color: hsl(120, 100%, 40%);">+                        data := data</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_SCCP tr_SCCP_IT(template (present) OCT3 source_lref := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                             template (present) OCT3 dest_lref := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+     inacttest := {</span><br><span style="color: hsl(120, 100%, 40%);">+                messageType := it,</span><br><span style="color: hsl(120, 100%, 40%);">+            destLocRef := dest_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+              sourceLocRef := source_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+          protClass := c_class2,</span><br><span style="color: hsl(120, 100%, 40%);">+                sequencingSegmenting := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     reserved := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                        p_s := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                     more := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                    pr := ?</span><br><span style="color: hsl(120, 100%, 40%);">+               },</span><br><span style="color: hsl(120, 100%, 40%);">+            credit := ?</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_SCCP tr_SCCP_RLSD(template (present) OCT3 source_lref := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                             template (present) OCT3 dest_lref := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                               template (present) SCCP_param_ReleaseCause relcause := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ released := {</span><br><span style="color: hsl(120, 100%, 40%);">+         messageType := rlsd,</span><br><span style="color: hsl(120, 100%, 40%);">+          destLocRef := dest_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+              sourceLocRef := source_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+          releaseCause := relcause,</span><br><span style="color: hsl(120, 100%, 40%);">+             pointer1 := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                optionalPart := *,</span><br><span style="color: hsl(120, 100%, 40%);">+            eop := *</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_SCCP ts_SCCP_RLC(OCT3 source_lref, OCT3 dest_lref) := {</span><br><span style="color: hsl(120, 100%, 40%);">+  relcomp := {</span><br><span style="color: hsl(120, 100%, 40%);">+          messageType := rlc,</span><br><span style="color: hsl(120, 100%, 40%);">+           destLocRef := dest_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+              sourceLocRef := source_lref</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_SCCP tr_SCCP_RLC(template (present) OCT3 source_lref := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                             template (present) OCT3 dest_lref := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+    relcomp := {</span><br><span style="color: hsl(120, 100%, 40%);">+          messageType := rlc,</span><br><span style="color: hsl(120, 100%, 40%);">+           destLocRef := dest_lref,</span><br><span style="color: hsl(120, 100%, 40%);">+              sourceLocRef := source_lref</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> }</span><br><span>diff --git a/sccp/SCCP_Tests_RAW.ttcn b/sccp/SCCP_Tests_RAW.ttcn</span><br><span>index 3d16706..03ef4af 100644</span><br><span>--- a/sccp/SCCP_Tests_RAW.ttcn</span><br><span>+++ b/sccp/SCCP_Tests_RAW.ttcn</span><br><span>@@ -38,6 +38,33 @@</span><br><span>    port SCCP_CODEC_PT MTP3;</span><br><span> </span><br><span>         var MSC_SCCP_MTP3_parameters g_param;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /*Configure T(tias) over VTY, seconds */</span><br><span style="color: hsl(120, 100%, 40%);">+      var integer g_demo_sccp_timer_ias :=  7 * 60;</span><br><span style="color: hsl(120, 100%, 40%);">+ /*Configure T(tiar) over VTY, seconds */</span><br><span style="color: hsl(120, 100%, 40%);">+      var integer g_demo_sccp_timer_iar := 15 * 60;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type record of charstring Commands;</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_cs7_inst_0_cfg(TELNETasp_PT pt, Commands cmds := {})</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   f_vty_enter_cfg_cs7_inst(pt, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      for (var integer i := 0; i < sizeof(cmds); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+             f_vty_transceive(pt, cmds[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_transceive(pt, "end");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+function f_init_vty() runs on SCCP_Test_RAW_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (SCCP_DEMO_USER_VTY.checkstate("Mapped")) {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* skip initialization if already executed once */</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     map(self:SCCP_DEMO_USER_VTY, system:SCCP_DEMO_USER_VTY);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_vty_set_prompts(SCCP_DEMO_USER_VTY);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_vty_transceive(SCCP_DEMO_USER_VTY, "enable");</span><br><span style="color: hsl(120, 100%, 40%);">+     f_cs7_inst_0_cfg(SCCP_DEMO_USER_VTY, {"sccp-timer ias " & int2str(g_demo_sccp_timer_ias),</span><br><span style="color: hsl(120, 100%, 40%);">+                         "sccp-timer iar " & int2str(g_demo_sccp_timer_iar)});</span><br><span> }</span><br><span> </span><br><span> private function f_init_raw(SCCP_Configuration cfg) runs on SCCP_Test_RAW_CT {</span><br><span>@@ -54,9 +81,7 @@</span><br><span>                 ssn := cfg.own_ssn</span><br><span>   };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  map(self:SCCP_DEMO_USER_VTY, system:SCCP_DEMO_USER_VTY);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_vty_set_prompts(SCCP_DEMO_USER_VTY);</span><br><span style="color: hsl(0, 100%, 40%);">-  f_vty_transceive(SCCP_DEMO_USER_VTY, "enable");</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init_vty();</span><br><span> </span><br><span>    /* Create and connect test components */</span><br><span>     vc_M3UA := M3UA_CT.create;</span><br><span>@@ -73,51 +98,6 @@</span><br><span>      self.stop</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* connection oriented SCCP */</span><br><span style="color: hsl(0, 100%, 40%);">-const SCCP_param_ProtocolClass c_class2 := { class:='0010'B, messageHandling:='0000'B };//class 2</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-function ts_SCCP_CR(OCT3 source_lref, SCCP_PAR_Address calling, SCCP_PAR_Address called)</span><br><span style="color: hsl(0, 100%, 40%);">-return template (value) PDU_SCCP {</span><br><span style="color: hsl(0, 100%, 40%);">-     var SCCP_param_CPartyAddressEnc calling_enc := ConvertASPAddressToEncodedAddress_itu(calling);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  var template (value) PDU_SCCP ret := {</span><br><span style="color: hsl(0, 100%, 40%);">-          connrequest := {</span><br><span style="color: hsl(0, 100%, 40%);">-                        messageType := cr,</span><br><span style="color: hsl(0, 100%, 40%);">-                      sourceLocRef := source_lref,</span><br><span style="color: hsl(0, 100%, 40%);">-                    protClass := c_class2,</span><br><span style="color: hsl(0, 100%, 40%);">-                  pointer1 := 2,</span><br><span style="color: hsl(0, 100%, 40%);">-                  pointer2 := 0, /* overwritten */</span><br><span style="color: hsl(0, 100%, 40%);">-                        calledPAddress := ConvertASPAddressToEncodedAddress_itu(called),</span><br><span style="color: hsl(0, 100%, 40%);">-                        optionalPart := {</span><br><span style="color: hsl(0, 100%, 40%);">-                               credit := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-                         callingPAddress := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                    paramName := con_SCCP_cgPA,</span><br><span style="color: hsl(0, 100%, 40%);">-                                     paramLength := calling_enc.paramLength, /* overwritten */</span><br><span style="color: hsl(0, 100%, 40%);">-                                       addr := calling_enc.addr</span><br><span style="color: hsl(0, 100%, 40%);">-                                },</span><br><span style="color: hsl(0, 100%, 40%);">-                              data := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-                           hopCounter := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-                             importance := omit</span><br><span style="color: hsl(0, 100%, 40%);">-                      },</span><br><span style="color: hsl(0, 100%, 40%);">-                      eop := { paramName:= con_SCCP_eop }</span><br><span style="color: hsl(0, 100%, 40%);">-             }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-       return ret;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_SCCP tr_SCCP_CC(template (present) OCT3 dest_lref,</span><br><span style="color: hsl(0, 100%, 40%);">-                                  template (present) OCT3 source_lref) := {</span><br><span style="color: hsl(0, 100%, 40%);">-        connconfirm := {</span><br><span style="color: hsl(0, 100%, 40%);">-                messageType := cc,</span><br><span style="color: hsl(0, 100%, 40%);">-              destLocRef := dest_lref,</span><br><span style="color: hsl(0, 100%, 40%);">-                sourceLocRef := source_lref,</span><br><span style="color: hsl(0, 100%, 40%);">-            protClass := c_class2,</span><br><span style="color: hsl(0, 100%, 40%);">-          pointer1 := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-          optionalPart := *,</span><br><span style="color: hsl(0, 100%, 40%);">-              eop := *</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> private function f_send_sccp(template PDU_SCCP sccp) runs on SCCP_Test_RAW_CT {</span><br><span>        var SCCP_MTP3_TRANSFERreq tx := {</span><br><span>            sio := g_param.sio,</span><br><span>@@ -155,21 +135,65 @@</span><br><span>  }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_establish_conn(SCCP_PAR_Address calling, SCCP_PAR_Address called) runs on SCCP_Test_RAW_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_sccp(ts_SCCP_CR('000001'O, calling, called));</span><br><span style="color: hsl(120, 100%, 40%);">+  f_exp_sccp(tr_SCCP_CC('000000'O, '000001'O));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tx_udt_exp(SCCP_PAR_Address calling, SCCP_PAR_Address called, octetstring data) runs on SCCP_Test_RAW_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_send_sccp(ts_SCCP_UDT(calling, called, data));</span><br><span style="color: hsl(120, 100%, 40%);">+      f_exp_sccp(tr_SCCP_UDT(called, calling, data));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Verify sccp_demo_user answers a CR with a CC for PC and SSN set up to echo back */</span><br><span> testcase TC_cr_cc() runs on SCCP_Test_RAW_CT {</span><br><span>      var SCCP_PAR_Address calling, called;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_init_raw(mp_sccp_cfg[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      called := valueof(ts_SccpAddr_PC_SSN(mp_sccp_cfg[0].peer_pc, mp_sccp_cfg[0].peer_ssn,</span><br><span>                                             mp_sccp_cfg[0].sio, mp_sccp_cfg[0].sccp_service_type));</span><br><span>         calling := valueof(ts_SccpAddr_PC_SSN(mp_sccp_cfg[0].own_pc, mp_sccp_cfg[0].own_ssn,</span><br><span>                                              mp_sccp_cfg[0].sio, mp_sccp_cfg[0].sccp_service_type));</span><br><span style="color: hsl(120, 100%, 40%);">+  f_establish_conn(calling, called);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify T(iar) triggers and releases the channel */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_tiar_timeout() runs on SCCP_Test_RAW_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var SCCP_PAR_Address calling, called;</span><br><span style="color: hsl(120, 100%, 40%);">+ var octetstring data := f_rnd_octstring(f_rnd_int(100));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Set T(iar) in sccp_demo_user low enough that it will trigger before other side</span><br><span style="color: hsl(120, 100%, 40%);">+        has time to keep alive with a T(ias). Keep recommended ratio of</span><br><span style="color: hsl(120, 100%, 40%);">+       T(iar) >= T(ias)*2 */</span><br><span style="color: hsl(120, 100%, 40%);">+   g_demo_sccp_timer_ias := 2;</span><br><span style="color: hsl(120, 100%, 40%);">+   g_demo_sccp_timer_iar := 5;</span><br><span>  f_init_raw(mp_sccp_cfg[0]);</span><br><span>  f_sleep(1.0);</span><br><span style="color: hsl(0, 100%, 40%);">-   f_send_sccp(ts_SCCP_CR('000001'O, calling, called));</span><br><span style="color: hsl(0, 100%, 40%);">-    f_exp_sccp(tr_SCCP_CC('000001'O, ?));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       called := valueof(ts_SccpAddr_PC_SSN(mp_sccp_cfg[0].peer_pc, mp_sccp_cfg[0].peer_ssn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                      mp_sccp_cfg[0].sio, mp_sccp_cfg[0].sccp_service_type));</span><br><span style="color: hsl(120, 100%, 40%);">+  calling := valueof(ts_SccpAddr_PC_SSN(mp_sccp_cfg[0].own_pc, mp_sccp_cfg[0].own_ssn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       mp_sccp_cfg[0].sio, mp_sccp_cfg[0].sccp_service_type));</span><br><span style="color: hsl(120, 100%, 40%);">+  f_establish_conn(calling, called);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_tx_udt_exp(calling, called, data);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        log("Waiting for first IT");</span><br><span style="color: hsl(120, 100%, 40%);">+        f_exp_sccp(tr_SCCP_IT(?, ?));</span><br><span style="color: hsl(120, 100%, 40%);">+ log("Waiting for second IT");</span><br><span style="color: hsl(120, 100%, 40%);">+       f_exp_sccp(tr_SCCP_IT(?, ?));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       log("Waiting for RLSD");</span><br><span style="color: hsl(120, 100%, 40%);">+    f_exp_sccp(tr_SCCP_RLSD(?, ?, hex2int('0D'H))); /* Cause: Expiration of Rx Inactivity Timer */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_sccp(ts_SCCP_RLC('000001'O, '000000'O));</span><br><span> }</span><br><span> </span><br><span> control {</span><br><span>        execute( TC_cr_cc() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_tiar_timeout() );</span><br><span> }</span><br><span> </span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16965">change 16965</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16965"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I7b56fe77ac3b350d722c74b043e6ecabc48dcf31 </div>
<div style="display:none"> Gerrit-Change-Number: 16965 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>