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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Extend BTS_Tests.ttcn with test for RSL error handling<br><br>Section 7 of the RSL specification (3GPP TS 48.058) describes how the<br>BTS shall respond in various error situations, including wrong message<br>type, wrong message discriminator and invalid message sequences.<br><br>Let's add three test cases for the above three scenarios.<br><br>Change-Id: If507a14bbed9cdcc62cd966468222186590fc965<br>Related: OS##3750<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 93 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index e1c64d6..5b69b5d 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -2571,6 +2571,95 @@</span><br><span>       f_exp_err_rep(RSL_ERR_IE_CONTENT);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* attempt to activate channel with wrong RSL Message Discriminator IE */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_chan_act_wrong_mdisc(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+  var template RSL_Message rsl := ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+ rsl.msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RESERVED, false);</span><br><span style="color: hsl(120, 100%, 40%);">+    RSL.send(rsl);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_rslem_unregister(0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_err_rep_wrong_mdisc() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars := valueof(t_Pars(ts_RslChanNr_SDCCH4(0,0), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init(testcasename());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     vc_conn := f_start_handler(refers(f_TC_chan_act_wrong_mdisc), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_exp_err_rep(RSL_ERR_MSG_DISCR);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</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%);">+/* Send messages with wrong message type */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_wrong_msg_type_dchan(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+ var template (value) RSL_Message rsl_tx;</span><br><span style="color: hsl(120, 100%, 40%);">+      rsl_tx := ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+       rsl_tx.msg_type := RSL_MT_NOT_CMD;</span><br><span style="color: hsl(120, 100%, 40%);">+    RSL.send(rsl_tx);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_rslem_unregister(0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_wrong_msg_type_rll(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+      var template (value) RSL_Message rsl_tx;</span><br><span style="color: hsl(120, 100%, 40%);">+      /* we first have to activate the dedicated channel */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_rsl_chan_act(g_pars.chan_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* ... to then send an invalid RLL message */</span><br><span style="color: hsl(120, 100%, 40%);">+ rsl_tx := ts_RSL_UNITDATA_REQ(g_chan_nr, ts_RslLinkID_DCCH(0), '0102'O);</span><br><span style="color: hsl(120, 100%, 40%);">+      rsl_tx.msg_type := RSL_MT_CBCH_LOAD_IND;</span><br><span style="color: hsl(120, 100%, 40%);">+      RSL.send(rsl_tx);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_rslem_unregister(0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_err_rep_wrong_msg_type() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars := valueof(t_Pars(ts_RslChanNr_SDCCH4(0,0), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+     var template (value) RSL_Message rsl_tx;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init(testcasename());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Common Channel with wrong message type */</span><br><span style="color: hsl(120, 100%, 40%);">+  RSL_CCHAN.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+      rsl_tx := valueof(ts_RSL_BCCH_INFO(RSL_SYSTEM_INFO_1, ''O));</span><br><span style="color: hsl(120, 100%, 40%);">+  rsl_tx.msg_type := RSL_MT_LOCATION_INFO;</span><br><span style="color: hsl(120, 100%, 40%);">+      RSL_CCHAN.send(ts_RSL_UD(rsl_tx));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_exp_err_rep(RSL_ERR_MSG_TYPE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* TRX Management */</span><br><span style="color: hsl(120, 100%, 40%);">+  RSL_CCHAN.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+      rsl_tx := ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_5, ''O);</span><br><span style="color: hsl(120, 100%, 40%);">+  rsl_tx.msg_type := RSL_MT_UNIT_DATA_IND;</span><br><span style="color: hsl(120, 100%, 40%);">+      RSL_CCHAN.send(ts_RSL_UD(rsl_tx));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_exp_err_rep(RSL_ERR_MSG_TYPE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Dedicated Channel */</span><br><span style="color: hsl(120, 100%, 40%);">+       RSL_CCHAN.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+      vc_conn := f_start_handler(refers(f_TC_wrong_msg_type_dchan), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_exp_err_rep(RSL_ERR_MSG_TYPE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* RLL */</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL_CCHAN.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+      vc_conn := f_start_handler(refers(f_TC_wrong_msg_type_rll), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+    vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_exp_err_rep(RSL_ERR_MSG_TYPE);</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%);">+/* Send messages in wrong sequence (RLL to an inactive lchan) */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_err_rep_wrong_sequence(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+       RSL.send(ts_RSL_UNITDATA_REQ(g_chan_nr, ts_RslLinkID_DCCH(0), '0102'O));</span><br><span style="color: hsl(120, 100%, 40%);">+      f_rslem_unregister(0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_err_rep_wrong_sequence() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars := valueof(t_Pars(ts_RslChanNr_SDCCH4(0,0), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init(testcasename());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL_CCHAN.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+      vc_conn := f_start_handler(refers(f_TC_err_rep_wrong_sequence), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+        vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_exp_err_rep(RSL_ERR_MSG_SEQ);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /***********************************************************************</span><br><span>  * IPA CRCX/MDCX/DLCS media stream handling</span><br><span>  ***********************************************************************/</span><br><span>@@ -4311,9 +4400,6 @@</span><br><span> * SMS Broadcast Req / Cmd / CBCH LOad Ind</span><br><span> * RF resource ind</span><br><span> * error handling</span><br><span style="color: hsl(0, 100%, 40%);">-** discriminator error</span><br><span style="color: hsl(0, 100%, 40%);">-** type error</span><br><span style="color: hsl(0, 100%, 40%);">-** sequence error</span><br><span> ** IE duplicated?</span><br><span> * PCU interface</span><br><span> ** TIME_IND from BTS->PCU</span><br><span>@@ -4416,6 +4502,10 @@</span><br><span>      execute( TC_encr_cmd_a52() );</span><br><span>        execute( TC_encr_cmd_a53() );</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     execute( TC_err_rep_wrong_mdisc() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_err_rep_wrong_msg_type() );</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_err_rep_wrong_sequence() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    execute( TC_lapdm_selftest() );</span><br><span> </span><br><span>  execute( TC_tch_sign_l2_fill_frame() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14086">change 14086</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/14086"/><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: If507a14bbed9cdcc62cd966468222186590fc965 </div>
<div style="display:none"> Gerrit-Change-Number: 14086 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </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 (1000002) </div>