<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25009">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  osmith: Looks good to me, but someone else must approve
  Hoernchen: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Test tch allocation if sdcch exhausted<br><br>Related: SYS#5548<br>Change-Id: I0c958de10a3643f8b94479d676dd1ac1b9140802<br>---<br>M bsc/BSC_Tests.ttcn<br>M bsc/expected-results.xml<br>2 files changed, 121 insertions(+), 0 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 5d56105..47e2ad9 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -4517,6 +4517,108 @@</span><br><span>    f_shutdown_helper();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* request a signalling channel with all SDCCH exhausted, it is expected that a TCH will be selected */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_assignment_sdcch_exhausted_req_signalling(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+ g_pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+     g_pars.ra := '02'O; /* RA containing reason=LU */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));</span><br><span style="color: hsl(120, 100%, 40%);">+       var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi));</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring l3_enc := enc_PDU_ML3_MS_NW(l3_info);</span><br><span style="color: hsl(120, 100%, 40%);">+ var template uint3_t tsc := ?;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw_mgcp, FR_AMR);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_create_bssmap_exp(l3_enc);</span><br><span style="color: hsl(120, 100%, 40%);">+  /* call helper function for CHAN_RQD -> IMM ASS ->EST_IND */</span><br><span style="color: hsl(120, 100%, 40%);">+    RSL_Emulation.f_chan_est(g_pars.ra, l3_enc, g_pars.link_id, g_pars.fn, tsc);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* we should now have a COMPL_L3 at the MSC */</span><br><span style="color: hsl(120, 100%, 40%);">+        timer T := 10.0;</span><br><span style="color: hsl(120, 100%, 40%);">+      T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSAP.receive(tr_BSSMAP_ComplL3);</span><br><span style="color: hsl(120, 100%, 40%);">+  [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for COMPLETE LAYER 3 INFORMATION");</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%);">+testcase TC_assignment_sdcch_exhausted_req_signalling() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init(1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_disable_all_sdcch();</span><br><span style="color: hsl(120, 100%, 40%);">+        vc_conn := f_start_handler(refers(f_TC_assignment_sdcch_exhausted_req_signalling));</span><br><span style="color: hsl(120, 100%, 40%);">+   vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_enable_all_sdcch();</span><br><span style="color: hsl(120, 100%, 40%);">+ f_shutdown_helper();</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%);">+/* Request a signalling channel with all SDCCH exhausted, it is</span><br><span style="color: hsl(120, 100%, 40%);">+   expected that no TCH will be selected for signalling and assigment will fail</span><br><span style="color: hsl(120, 100%, 40%);">+   because it's dictated by VTY config */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_assignment_sdcch_exhausted_req_signalling_tch_forbidden() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   var RSL_Message rsl_unused, rsl_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+  var GsmRrMessage rr;</span><br><span style="color: hsl(120, 100%, 40%);">+  f_init(1, false);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_allow_tch_for_signalling(false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_disable_all_sdcch();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* RA containing reason=LU */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ipa_tx(0, ts_RSL_CHAN_RQD('02'O, 2342));</span><br><span style="color: hsl(120, 100%, 40%);">+    rsl_msg := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));</span><br><span style="color: hsl(120, 100%, 40%);">+     rr := dec_GsmRrMessage(rsl_msg.ies[1].body.full_imm_ass_info.payload);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (rr.header.message_type != IMMEDIATE_ASSIGNMENT_REJECT) {</span><br><span style="color: hsl(120, 100%, 40%);">+          setverdict(fail, "Expected reject");</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%);">+   f_vty_allow_tch_for_signalling(true, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_enable_all_sdcch();</span><br><span style="color: hsl(120, 100%, 40%);">+ f_shutdown_helper();</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%);">+/* Request a voice channel with all SDCCH exhausted, it is</span><br><span style="color: hsl(120, 100%, 40%);">+ * expected that TCH channel will be allocated since the VTY option is only</span><br><span style="color: hsl(120, 100%, 40%);">+ * aimed at signalling requests */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_assignment_sdcch_exhausted_req_voice_tch_forbidden(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+     g_pars.ra := '43'O; /* RA containing reason=originating speech call*/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));</span><br><span style="color: hsl(120, 100%, 40%);">+       var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi));</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring l3_enc := enc_PDU_ML3_MS_NW(l3_info);</span><br><span style="color: hsl(120, 100%, 40%);">+ var template uint3_t tsc := ?;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw_mgcp, FR_AMR);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_create_bssmap_exp(l3_enc);</span><br><span style="color: hsl(120, 100%, 40%);">+  /* call helper function for CHAN_RQD -> IMM ASS ->EST_IND */</span><br><span style="color: hsl(120, 100%, 40%);">+    RSL_Emulation.f_chan_est(g_pars.ra, l3_enc, g_pars.link_id, g_pars.fn, tsc);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* we should now have a COMPL_L3 at the MSC */</span><br><span style="color: hsl(120, 100%, 40%);">+        timer T := 10.0;</span><br><span style="color: hsl(120, 100%, 40%);">+      T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSAP.receive(tr_BSSMAP_ComplL3);</span><br><span style="color: hsl(120, 100%, 40%);">+  [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for COMPLETE LAYER 3 INFORMATION");</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%);">+testcase TC_assignment_sdcch_exhausted_req_voice_tch_forbidden() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init(1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_allow_tch_for_signalling(false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_disable_all_sdcch();</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_assignment_sdcch_exhausted_req_voice_tch_forbidden));</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_allow_tch_for_signalling(true, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_enable_all_sdcch();</span><br><span style="color: hsl(120, 100%, 40%);">+ f_shutdown_helper();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> testcase TC_assignment_osmux() runs on test_CT {</span><br><span>        var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   var MSC_ConnHdlr vc_conn;</span><br><span>@@ -7829,6 +7931,19 @@</span><br><span>   f_vty_transceive(BSCVTY, "exit");</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Allow/Forbid TCH for signalling if SDCCH exhausted on a given BTS via VTY */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_vty_allow_tch_for_signalling(boolean allow, integer bts_nr) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_enter_cfg_bts(BSCVTY, bts_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (allow) {</span><br><span style="color: hsl(120, 100%, 40%);">+          f_vty_transceive(BSCVTY, "channel allocator allow-tch-for-signalling 1");</span><br><span style="color: hsl(120, 100%, 40%);">+   } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              f_vty_transceive(BSCVTY, "channel allocator allow-tch-for-signalling 0");</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_transceive(BSCVTY, "exit");</span><br><span style="color: hsl(120, 100%, 40%);">+   f_vty_transceive(BSCVTY, "exit");</span><br><span style="color: hsl(120, 100%, 40%);">+   f_vty_transceive(BSCVTY, "exit");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Begin assignmet procedure and send an EMERGENCY SETUP (RR) */</span><br><span> private function f_assignment_emerg_setup() runs on MSC_ConnHdlr {</span><br><span>   var PDU_ML3_MS_NW emerg_setup;</span><br><span>@@ -9408,6 +9523,9 @@</span><br><span>       execute( TC_assignment_codec_hr_exhausted_req_fr_hr() );</span><br><span>     execute( TC_assignment_codec_req_hr_fr() );</span><br><span>  execute( TC_assignment_codec_req_fr_hr() );</span><br><span style="color: hsl(120, 100%, 40%);">+   execute( TC_assignment_sdcch_exhausted_req_signalling() );</span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_assignment_sdcch_exhausted_req_signalling_tch_forbidden() );</span><br><span style="color: hsl(120, 100%, 40%);">+      execute( TC_assignment_sdcch_exhausted_req_voice_tch_forbidden() );</span><br><span> </span><br><span>      execute( TC_assignment_osmux() );</span><br><span> </span><br><span>diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml</span><br><span>index fd2d4d8..f9f022e 100644</span><br><span>--- a/bsc/expected-results.xml</span><br><span>+++ b/bsc/expected-results.xml</span><br><span>@@ -96,6 +96,9 @@</span><br><span>   <testcase classname='BSC_Tests' name='TC_assignment_codec_hr_exhausted_req_fr_hr' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_assignment_codec_req_hr_fr' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_assignment_codec_req_fr_hr' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='BSC_Tests' name='TC_assignment_sdcch_exhausted_req_signalling' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='BSC_Tests' name='TC_assignment_sdcch_exhausted_req_signalling_tch_forbidden' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='BSC_Tests' name='TC_assignment_sdcch_exhausted_req_voice_tch_forbidden' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_assignment_osmux' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_rll_est_ind_inact_lchan' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_rll_est_ind_inval_sapi1' time='MASKED'/></span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25009">change 25009</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/+/25009"/><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: I0c958de10a3643f8b94479d676dd1ac1b9140802 </div>
<div style="display:none"> Gerrit-Change-Number: 25009 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>