<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/9629">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Factor out duplicated code into f_exp_chan_rel_and_clear()<br><br>There's a sequence of commands which was repeated over at least<br>four test cases.  Let's factor this out into the new<br>f_exp_chan_rel_and_clear() function, and use that function from<br>all the former copy+pasted sections.<br><br>Change-Id: Ic6791fce4e8787e38b818a12ed526d3e47f313ef<br>---<br>M bsc/BSC_Tests.ttcn<br>1 file changed, 19 insertions(+), 40 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index bab56d1..a5509fd 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -667,9 +667,23 @@</span><br><span>   return dt;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* expect RF CAN REL from BTS, acknowledge it and clear the MSC side */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_exp_chan_rel_and_clear(DchanTuple dt, integer bts_nr := 0) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var RSL_Message rx_rsl;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* expect BSC to disable the channel */</span><br><span style="color: hsl(120, 100%, 40%);">+       rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);</span><br><span style="color: hsl(120, 100%, 40%);">+    /* respond with CHAN REL ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* expect Clear Complete from BSC */</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_ClearComplete));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* MSC disconnects as instructed. */</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Test behavior of channel release after unilateral RLL REL IND (DISC from MS) */</span><br><span> testcase TC_chan_rel_rll_rel_ind() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-   var RSL_Message rx_rsl;</span><br><span>      var BSSAP_N_DATA_ind rx_di;</span><br><span>  var DchanTuple dt;</span><br><span> </span><br><span>@@ -688,15 +702,7 @@</span><br><span>        BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommand(cause)));</span><br><span> </span><br><span>   /* expect BSC to disable the channel */</span><br><span style="color: hsl(0, 100%, 40%);">- rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);</span><br><span style="color: hsl(0, 100%, 40%);">-      /* respond with CHAN REL ACK */</span><br><span style="color: hsl(0, 100%, 40%);">- f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    /* expect Clear Complete from BSC */</span><br><span style="color: hsl(0, 100%, 40%);">-    BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_ClearComplete));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     /* release the SCCP connection */</span><br><span style="color: hsl(0, 100%, 40%);">-       BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_exp_chan_rel_and_clear(dt, 0);</span><br><span> </span><br><span>         /* wait for SCCP emulation to do its job */</span><br><span>  f_sleep(1.0);</span><br><span>@@ -707,7 +713,6 @@</span><br><span> /* Test behavior of channel release after CONN FAIL IND from BTS */</span><br><span> testcase TC_chan_rel_conn_fail() runs on test_CT {</span><br><span>     var BSSAP_N_DATA_ind rx_di;</span><br><span style="color: hsl(0, 100%, 40%);">-     var RSL_Message rx_rsl;</span><br><span>      var DchanTuple dt;</span><br><span> </span><br><span>       f_init(1);</span><br><span>@@ -726,15 +731,7 @@</span><br><span>    BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommand(cause)));</span><br><span> </span><br><span>   /* expect BSC to disable the channel */</span><br><span style="color: hsl(0, 100%, 40%);">- rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);</span><br><span style="color: hsl(0, 100%, 40%);">-      /* respond with CHAN REL ACK */</span><br><span style="color: hsl(0, 100%, 40%);">- f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    /* expect Clear Complete from BSC */</span><br><span style="color: hsl(0, 100%, 40%);">-    BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_ClearComplete));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     /* release the SCCP connection */</span><br><span style="color: hsl(0, 100%, 40%);">-       BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_exp_chan_rel_and_clear(dt, 0);</span><br><span> </span><br><span>         /* wait for SCCP emulation to do its job */</span><br><span>  f_sleep(1.0);</span><br><span>@@ -2092,7 +2089,6 @@</span><br><span>        var integer i;</span><br><span>       var DchanTuple dt;</span><br><span>   var BSSAP_N_DATA_ind rx_di;</span><br><span style="color: hsl(0, 100%, 40%);">-     var RSL_Message rx_rsl;</span><br><span>      var myBSSMAP_Cause cause_val := GSM0808_CAUSE_CALL_CONTROL;</span><br><span>  var BssmapCause cause := enum2int(cause_val);</span><br><span> </span><br><span>@@ -2120,15 +2116,7 @@</span><br><span>           BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommand(cause)));</span><br><span> </span><br><span>           /* expect BSC to disable the channel */</span><br><span style="color: hsl(0, 100%, 40%);">-         rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);</span><br><span style="color: hsl(0, 100%, 40%);">-              /* respond with CHAN REL ACK */</span><br><span style="color: hsl(0, 100%, 40%);">-         f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-            /* expect Clear Complete from BSC */</span><br><span style="color: hsl(0, 100%, 40%);">-            BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_ClearComplete));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-             /* MSC disconnects as instructed. */</span><br><span style="color: hsl(0, 100%, 40%);">-            BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+            f_exp_chan_rel_and_clear(dt, 0);</span><br><span>     }</span><br><span> </span><br><span>        /* In the buggy behavior, a timeout of 2 seconds happens between above</span><br><span>@@ -2148,7 +2136,6 @@</span><br><span>       var integer i;</span><br><span>       var DchanTuple dt;</span><br><span>   var BSSAP_N_DATA_ind rx_di;</span><br><span style="color: hsl(0, 100%, 40%);">-     var RSL_Message rx_rsl;</span><br><span>      var integer j;</span><br><span> </span><br><span>   f_init();</span><br><span>@@ -2182,15 +2169,7 @@</span><br><span>           BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommand(cause)));</span><br><span> </span><br><span>           /* expect BSC to disable the channel */</span><br><span style="color: hsl(0, 100%, 40%);">-         rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);</span><br><span style="color: hsl(0, 100%, 40%);">-              /* respond with CHAN REL ACK */</span><br><span style="color: hsl(0, 100%, 40%);">-         f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-            /* expect Clear Complete from BSC */</span><br><span style="color: hsl(0, 100%, 40%);">-            BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_ClearComplete));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-             /* MSC disconnects as instructed. */</span><br><span style="color: hsl(0, 100%, 40%);">-            BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+            f_exp_chan_rel_and_clear(dt, 0);</span><br><span>     }</span><br><span> </span><br><span>        /* In the buggy behavior, a timeout of 2 seconds happens between above</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9629">change 9629</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/9629"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Ic6791fce4e8787e38b818a12ed526d3e47f313ef </div>
<div style="display:none"> Gerrit-Change-Number: 9629 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>