<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>