<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16976">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sccp: Introduce test TC_it_avoids_tiar<br><br>Change-Id: I3a970a9b7ed7fb178095760025dd83c570dcff5e<br>---<br>M library/SCCP_Templates.ttcn<br>M sccp/SCCP_Tests_RAW.ttcn<br>2 files changed, 95 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/76/16976/1</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 b3e3392..b0e6df7 100644</span><br><span>--- a/library/SCCP_Templates.ttcn</span><br><span>+++ b/library/SCCP_Templates.ttcn</span><br><span>@@ -166,6 +166,24 @@</span><br><span>  }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_SCCP ts_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%);">+                /* rfc3868 3.3.11: sequencing and credit are ignored with class2 */</span><br><span style="color: hsl(120, 100%, 40%);">+           sequencingSegmenting := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     reserved := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                     p_s := '0000000'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                    more := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                 pr := '0000000'B</span><br><span style="color: hsl(120, 100%, 40%);">+              },</span><br><span style="color: hsl(120, 100%, 40%);">+            credit := '00'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%);">+</span><br><span> template PDU_SCCP tr_SCCP_RLSD(template (present) OCT3 source_lref := ?,</span><br><span>                          template (present) OCT3 dest_lref := ?,</span><br><span>                              template (present) SCCP_param_ReleaseCause relcause := ?) := {</span><br><span>diff --git a/sccp/SCCP_Tests_RAW.ttcn b/sccp/SCCP_Tests_RAW.ttcn</span><br><span>index 052b399..61d0833 100644</span><br><span>--- a/sccp/SCCP_Tests_RAW.ttcn</span><br><span>+++ b/sccp/SCCP_Tests_RAW.ttcn</span><br><span>@@ -111,10 +111,9 @@</span><br><span>    MTP3.send(tx);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_exp_sccp(template PDU_SCCP sccp)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on SCCP_Test_RAW_CT return SCCP_MTP3_TRANSFERind {</span><br><span style="color: hsl(120, 100%, 40%);">+private function tr_SCCP_MTP3_TRANSFERind(template PDU_SCCP sccp)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on SCCP_Test_RAW_CT return template SCCP_MTP3_TRANSFERind {</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      var SCCP_MTP3_TRANSFERind rx;</span><br><span>        var template SCCP_MTP3_TRANSFERind exp := {</span><br><span>          sio := g_param.sio,</span><br><span>          opc := g_param.dpc,</span><br><span>@@ -122,6 +121,13 @@</span><br><span>           sls := g_param.sls,</span><br><span>          data := sccp</span><br><span>         };</span><br><span style="color: hsl(120, 100%, 40%);">+    return exp;</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_exp_sccp(template PDU_SCCP sccp)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on SCCP_Test_RAW_CT return SCCP_MTP3_TRANSFERind {</span><br><span style="color: hsl(120, 100%, 40%);">+        var template SCCP_MTP3_TRANSFERind exp := tr_SCCP_MTP3_TRANSFERind(sccp);</span><br><span style="color: hsl(120, 100%, 40%);">+     var SCCP_MTP3_TRANSFERind rx;</span><br><span>        timer T := 10.0;</span><br><span>     T.start;</span><br><span>     alt {</span><br><span>@@ -238,10 +244,78 @@</span><br><span>        setverdict(pass);</span><br><span> }</span><br><span> </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_it_avoids_tiar() 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 OCT3 remote_lref;</span><br><span style="color: hsl(120, 100%, 40%);">+ var boolean it_received := false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   g_demo_sccp_timer_ias := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+   g_demo_sccp_timer_iar := 3;</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 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%);">+  remote_lref := f_establish_conn(calling, called);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   timer T_total := 7.0; /* Higher than g_demo_sccp_timer_iar */</span><br><span style="color: hsl(120, 100%, 40%);">+ timer T_tias := 1.0; /* Lower than g_demo_sccp_timer_iar */</span><br><span style="color: hsl(120, 100%, 40%);">+   T_total.start;</span><br><span style="color: hsl(120, 100%, 40%);">+        T_tias.start;</span><br><span style="color: hsl(120, 100%, 40%);">+ alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] MTP3.receive(tr_SCCP_MTP3_TRANSFERind(tr_SCCP_IT(remote_lref, g_own_lref))) {</span><br><span style="color: hsl(120, 100%, 40%);">+              it_received := true;</span><br><span style="color: hsl(120, 100%, 40%);">+          repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] MTP3.receive(tr_SCCP_MTP3_TRANSFERind(tr_SCCP_RLSD(remote_lref, g_own_lref, hex2int('0D'H)))) {</span><br><span style="color: hsl(120, 100%, 40%);">+            setverdict(fail, "Unexpected SCCP RLSD received");</span><br><span style="color: hsl(120, 100%, 40%);">+          self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] MTP3.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+             setverdict(fail, "Unexpected MTP/SCCP received");</span><br><span style="color: hsl(120, 100%, 40%);">+           self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T_tias.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+           f_send_sccp(ts_SCCP_IT(g_own_lref, remote_lref));</span><br><span style="color: hsl(120, 100%, 40%);">+             T_tias.start;</span><br><span style="color: hsl(120, 100%, 40%);">+         repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T_total.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+          /* We kept the connection alive only with IT messages for a while, cool! */</span><br><span style="color: hsl(120, 100%, 40%);">+           T_tias.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+          setverdict(pass);</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%);">+   if (not it_received) {</span><br><span style="color: hsl(120, 100%, 40%);">+                setverdict(fail, "Didn't receive any IT (Tias) from peer");</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%);">+   /* After we stop sending IT, we should be receiving an RLSD triggered from T(iar) */</span><br><span style="color: hsl(120, 100%, 40%);">+  log("Waiting for RLSD");</span><br><span style="color: hsl(120, 100%, 40%);">+    alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] MTP3.receive(tr_SCCP_MTP3_TRANSFERind(tr_SCCP_IT(remote_lref, g_own_lref))) {</span><br><span style="color: hsl(120, 100%, 40%);">+              repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] MTP3.receive(tr_SCCP_MTP3_TRANSFERind(tr_SCCP_RLSD(remote_lref, g_own_lref, hex2int('0D'H)))) {</span><br><span style="color: hsl(120, 100%, 40%);">+            f_send_sccp(ts_SCCP_RLC(g_own_lref, remote_lref));</span><br><span style="color: hsl(120, 100%, 40%);">+            setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] MTP3.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+             setverdict(fail, "Unexpected MTP/SCCP received");</span><br><span style="color: hsl(120, 100%, 40%);">+           self.stop;</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> control {</span><br><span>  execute( TC_cr_cc() );</span><br><span>       execute( TC_udt_without_cr_cc() );</span><br><span>   execute( TC_tiar_timeout() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_it_avoids_tiar() );</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/+/16976">change 16976</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/+/16976"/><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: I3a970a9b7ed7fb178095760025dd83c570dcff5e </div>
<div style="display:none"> Gerrit-Change-Number: 16976 </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-MessageType: newchange </div>