pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25009 )

Change subject: bsc: Test tch allocation if sdcch exhausted
......................................................................

bsc: Test tch allocation if sdcch exhausted

Related: SYS#5548
Change-Id: I0c958de10a3643f8b94479d676dd1ac1b9140802
---
M bsc/BSC_Tests.ttcn
M bsc/expected-results.xml
2 files changed, 121 insertions(+), 0 deletions(-)

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



diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 5d56105..47e2ad9 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -4517,6 +4517,108 @@
        f_shutdown_helper();
 }

+/* request a signalling channel with all SDCCH exhausted, it is expected that 
a TCH will be selected */
+private function f_TC_assignment_sdcch_exhausted_req_signalling(charstring id) 
runs on MSC_ConnHdlr {
+       g_pars := f_gen_test_hdlr_pars();
+       g_pars.ra := '02'O; /* RA containing reason=LU */
+
+       var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
+       var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, 
mi));
+       var octetstring l3_enc := enc_PDU_ML3_MS_NW(l3_info);
+       var template uint3_t tsc := ?;
+
+       f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw_mgcp, FR_AMR);
+       f_create_bssmap_exp(l3_enc);
+       /* call helper function for CHAN_RQD -> IMM ASS ->EST_IND */
+       RSL_Emulation.f_chan_est(g_pars.ra, l3_enc, g_pars.link_id, g_pars.fn, 
tsc);
+
+       /* we should now have a COMPL_L3 at the MSC */
+       timer T := 10.0;
+       T.start;
+       alt {
+       [] BSSAP.receive(tr_BSSMAP_ComplL3);
+       [] T.timeout {
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout 
waiting for COMPLETE LAYER 3 INFORMATION");
+               }
+       }
+}
+testcase TC_assignment_sdcch_exhausted_req_signalling() runs on test_CT {
+       var MSC_ConnHdlr vc_conn;
+       f_init(1, true);
+       f_sleep(1.0);
+       f_disable_all_sdcch();
+       vc_conn := 
f_start_handler(refers(f_TC_assignment_sdcch_exhausted_req_signalling));
+       vc_conn.done;
+       f_enable_all_sdcch();
+       f_shutdown_helper();
+}
+
+/* Request a signalling channel with all SDCCH exhausted, it is
+   expected that no TCH will be selected for signalling and assigment will fail
+   because it's dictated by VTY config */
+testcase TC_assignment_sdcch_exhausted_req_signalling_tch_forbidden() runs on 
test_CT {
+       var RSL_Message rsl_unused, rsl_msg;
+       var GsmRrMessage rr;
+       f_init(1, false);
+       f_sleep(1.0);
+       f_vty_allow_tch_for_signalling(false, 0);
+       f_disable_all_sdcch();
+
+       /* RA containing reason=LU */
+       f_ipa_tx(0, ts_RSL_CHAN_RQD('02'O, 2342));
+       rsl_msg := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));
+       rr := dec_GsmRrMessage(rsl_msg.ies[1].body.full_imm_ass_info.payload);
+       if (rr.header.message_type != IMMEDIATE_ASSIGNMENT_REJECT) {
+               setverdict(fail, "Expected reject");
+       }
+
+       f_vty_allow_tch_for_signalling(true, 0);
+       f_enable_all_sdcch();
+       f_shutdown_helper();
+}
+
+/* Request a voice channel with all SDCCH exhausted, it is
+ * expected that TCH channel will be allocated since the VTY option is only
+ * aimed at signalling requests */
+private function 
f_TC_assignment_sdcch_exhausted_req_voice_tch_forbidden(charstring id) runs on 
MSC_ConnHdlr {
+       g_pars := f_gen_test_hdlr_pars();
+       g_pars.ra := '43'O; /* RA containing reason=originating speech call*/
+
+       var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
+       var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, 
mi));
+       var octetstring l3_enc := enc_PDU_ML3_MS_NW(l3_info);
+       var template uint3_t tsc := ?;
+
+       f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw_mgcp, FR_AMR);
+       f_create_bssmap_exp(l3_enc);
+       /* call helper function for CHAN_RQD -> IMM ASS ->EST_IND */
+       RSL_Emulation.f_chan_est(g_pars.ra, l3_enc, g_pars.link_id, g_pars.fn, 
tsc);
+
+       /* we should now have a COMPL_L3 at the MSC */
+       timer T := 10.0;
+       T.start;
+       alt {
+       [] BSSAP.receive(tr_BSSMAP_ComplL3);
+       [] T.timeout {
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout 
waiting for COMPLETE LAYER 3 INFORMATION");
+               }
+       }
+}
+testcase TC_assignment_sdcch_exhausted_req_voice_tch_forbidden() runs on 
test_CT {
+       var MSC_ConnHdlr vc_conn;
+       f_init(1, true);
+       f_sleep(1.0);
+       f_vty_allow_tch_for_signalling(false, 0);
+       f_disable_all_sdcch();
+
+       vc_conn := 
f_start_handler(refers(f_TC_assignment_sdcch_exhausted_req_voice_tch_forbidden));
+       vc_conn.done;
+
+       f_vty_allow_tch_for_signalling(true, 0);
+       f_enable_all_sdcch();
+       f_shutdown_helper();
+}
+
 testcase TC_assignment_osmux() runs on test_CT {
        var TestHdlrParams pars := f_gen_test_hdlr_pars();
        var MSC_ConnHdlr vc_conn;
@@ -7829,6 +7931,19 @@
        f_vty_transceive(BSCVTY, "exit");
 }

+/* Allow/Forbid TCH for signalling if SDCCH exhausted on a given BTS via VTY */
+private function f_vty_allow_tch_for_signalling(boolean allow, integer bts_nr) 
runs on test_CT {
+       f_vty_enter_cfg_bts(BSCVTY, bts_nr);
+       if (allow) {
+               f_vty_transceive(BSCVTY, "channel allocator 
allow-tch-for-signalling 1");
+       } else {
+               f_vty_transceive(BSCVTY, "channel allocator 
allow-tch-for-signalling 0");
+       }
+       f_vty_transceive(BSCVTY, "exit");
+       f_vty_transceive(BSCVTY, "exit");
+       f_vty_transceive(BSCVTY, "exit");
+}
+
 /* Begin assignmet procedure and send an EMERGENCY SETUP (RR) */
 private function f_assignment_emerg_setup() runs on MSC_ConnHdlr {
        var PDU_ML3_MS_NW emerg_setup;
@@ -9408,6 +9523,9 @@
        execute( TC_assignment_codec_hr_exhausted_req_fr_hr() );
        execute( TC_assignment_codec_req_hr_fr() );
        execute( TC_assignment_codec_req_fr_hr() );
+       execute( TC_assignment_sdcch_exhausted_req_signalling() );
+       execute( TC_assignment_sdcch_exhausted_req_signalling_tch_forbidden() );
+       execute( TC_assignment_sdcch_exhausted_req_voice_tch_forbidden() );

        execute( TC_assignment_osmux() );

diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml
index fd2d4d8..f9f022e 100644
--- a/bsc/expected-results.xml
+++ b/bsc/expected-results.xml
@@ -96,6 +96,9 @@
   <testcase classname='BSC_Tests' 
name='TC_assignment_codec_hr_exhausted_req_fr_hr' time='MASKED'/>
   <testcase classname='BSC_Tests' name='TC_assignment_codec_req_hr_fr' 
time='MASKED'/>
   <testcase classname='BSC_Tests' name='TC_assignment_codec_req_fr_hr' 
time='MASKED'/>
+  <testcase classname='BSC_Tests' 
name='TC_assignment_sdcch_exhausted_req_signalling' time='MASKED'/>
+  <testcase classname='BSC_Tests' 
name='TC_assignment_sdcch_exhausted_req_signalling_tch_forbidden' 
time='MASKED'/>
+  <testcase classname='BSC_Tests' 
name='TC_assignment_sdcch_exhausted_req_voice_tch_forbidden' time='MASKED'/>
   <testcase classname='BSC_Tests' name='TC_assignment_osmux' time='MASKED'/>
   <testcase classname='BSC_Tests' name='TC_rll_est_ind_inact_lchan' 
time='MASKED'/>
   <testcase classname='BSC_Tests' name='TC_rll_est_ind_inval_sapi1' 
time='MASKED'/>

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25009
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I0c958de10a3643f8b94479d676dd1ac1b9140802
Gerrit-Change-Number: 25009
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Hoernchen <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <[email protected]>
Gerrit-Reviewer: dexter <[email protected]>
Gerrit-Reviewer: neels <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to