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