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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Validate new 'srvcc fast-return' VTY command<br><br>Related: SYS#5337<br>Change-Id: I227abc3793255e3916eba0dbc1460f46ec9926fe<br>---<br>M bsc/BSC_Tests.ttcn<br>M bsc/MSC_ConnectionHandler.ttcn<br>2 files changed, 61 insertions(+), 6 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 074fa60..d15b2ec 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -5226,11 +5226,15 @@</span><br><span> }</span><br><span> </span><br><span> private function f_tc_ho_into_this_bsc(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-   var template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE;</span><br><span style="color: hsl(120, 100%, 40%);">+      var template PDU_ML3_NW_MS exp_rr_rel_tmpl;</span><br><span>  var template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs := omit;</span><br><span>    if (not istemplatekind(g_pars.last_used_eutran_plmn, "omit")) {</span><br><span>            oldToNewBSSIEs := f_ts_BSSMAP_oldToNewBSSIEs(ts_BSSMAP_LastUsedEUTRANPLMNId(g_pars.last_used_eutran_plmn));</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     if (g_pars.exp_fast_return) {</span><br><span>                exp_rr_rel_tmpl := tr_RRM_RR_RELEASE_CellSelectInd;</span><br><span style="color: hsl(120, 100%, 40%);">+   } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              exp_rr_rel_tmpl := tr_RRM_RR_RELEASE;</span><br><span>        }</span><br><span>    f_ho_into_this_bsc(id, oldToNewBSSIEs);</span><br><span>      f_perform_clear(RSL, exp_rr_rel_tmpl);</span><br><span>@@ -5278,10 +5282,26 @@</span><br><span> testcase TC_srvcc_eutran_to_geran() runs on test_CT {</span><br><span>    var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   pars.last_used_eutran_plmn := '323454'O;</span><br><span style="color: hsl(120, 100%, 40%);">+      pars.exp_fast_return := true;</span><br><span>        f_tc_ho_into_this_bsc_main(pars);</span><br><span>    f_shutdown_helper();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Same as TC_srvcc_eutran_to_geran, but test explicitly forbiding fast return</span><br><span style="color: hsl(120, 100%, 40%);">+   on the BTS. As a result, RR Release shouldn't contain the EUTRAN neighbor</span><br><span style="color: hsl(120, 100%, 40%);">+   list when the channel is released. */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_srvcc_eutran_to_geran_forbid_fast_return() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init_vty();</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_allow_srvcc_fast_return(true, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+    pars.last_used_eutran_plmn := '323454'O;</span><br><span style="color: hsl(120, 100%, 40%);">+      pars.exp_fast_return := false;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_ho_into_this_bsc_main(pars);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_allow_srvcc_fast_return(false, 0);</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> private function f_tc_srvcc_eutran_to_geran_ho_out(charstring id) runs on MSC_ConnHdlr {</span><br><span>        var template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs;</span><br><span>    oldToNewBSSIEs := f_ts_BSSMAP_oldToNewBSSIEs(ts_BSSMAP_LastUsedEUTRANPLMNId(g_pars.last_used_eutran_plmn));</span><br><span>@@ -5289,15 +5309,16 @@</span><br><span>        f_ho_out_of_this_bsc(oldToNewBSSIEs);</span><br><span>        setverdict(pass);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-/* First, HO into BSC from EUTRAN (SRVCC): HO Request contains "Old BSS to New</span><br><span style="color: hsl(0, 100%, 40%);">-   BSS Information" IE with "Last Used E-UTRAN PLMN Id".</span><br><span style="color: hsl(0, 100%, 40%);">-   Second, HO to another BSC: HO Required contains "Old BSS to New BSS Information"</span><br><span style="color: hsl(0, 100%, 40%);">-   IE with "Last Used E-UTRAN PLMN Id" from first step. */</span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_srvcc_eutran_to_geran_ho_out() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tc_srvcc_eutran_to_geran_ho_out_main(boolean disable_fast_return)</span><br><span style="color: hsl(120, 100%, 40%);">+ runs on test_CT {</span><br><span>    var MSC_ConnHdlr vc_conn;</span><br><span>    var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span> </span><br><span>       f_init(1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (disable_fast_return) {</span><br><span style="color: hsl(120, 100%, 40%);">+            f_vty_allow_srvcc_fast_return(true, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span>    f_sleep(1.0);</span><br><span> </span><br><span>    f_ctrs_bsc_and_bts_init();</span><br><span>@@ -5316,9 +5337,26 @@</span><br><span>  f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted", 1);</span><br><span>         f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:completed", 1);</span><br><span>         f_ctrs_bsc_and_bts_verify();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        if (disable_fast_return) {</span><br><span style="color: hsl(120, 100%, 40%);">+            f_vty_allow_srvcc_fast_return(false, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span>    f_shutdown_helper();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* First, HO into BSC from EUTRAN (SRVCC): HO Request contains "Old BSS to New</span><br><span style="color: hsl(120, 100%, 40%);">+   BSS Information" IE with "Last Used E-UTRAN PLMN Id".</span><br><span style="color: hsl(120, 100%, 40%);">+   Second, HO to another BSC: HO Required contains "Old BSS to New BSS Information"</span><br><span style="color: hsl(120, 100%, 40%);">+   IE with "Last Used E-UTRAN PLMN Id" from first step. */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_srvcc_eutran_to_geran_ho_out() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_srvcc_eutran_to_geran_ho_out_main(false);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+/* Validate subsequent intra-GSM-HO works the same (with OldBSSToNewBSSInfo IE)</span><br><span style="color: hsl(120, 100%, 40%);">+ * independently of fast-reture allowed/forbidden in local BTS */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_srvcc_eutran_to_geran_ho_out_forbid_fast_return() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_srvcc_eutran_to_geran_ho_out_main(true);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> private function f_tc_ho_in_fail_msc_clears(charstring id) runs on MSC_ConnHdlr {</span><br><span>      var RslChannelNr new_chan_nr := valueof(t_RslChanNr0(1, RSL_CHAN_NR_Bm_ACCH));</span><br><span>       f_rslem_register(0, new_chan_nr);</span><br><span>@@ -7306,6 +7344,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 Fast Return after SRVCC on a given BTS via VTY */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_vty_allow_srvcc_fast_return(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, "srvcc fast-return allow");</span><br><span style="color: hsl(120, 100%, 40%);">+        } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              f_vty_transceive(BSCVTY, "srvcc fast-return forbid");</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>@@ -8950,6 +9001,8 @@</span><br><span>       }</span><br><span>    execute( TC_srvcc_eutran_to_geran() );</span><br><span>       execute( TC_srvcc_eutran_to_geran_ho_out() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_srvcc_eutran_to_geran_forbid_fast_return() );</span><br><span style="color: hsl(120, 100%, 40%);">+     execute( TC_srvcc_eutran_to_geran_ho_out_forbid_fast_return() );</span><br><span>     execute( TC_ho_in_fail_msc_clears() );</span><br><span>       execute( TC_ho_in_fail_msc_clears_after_ho_detect() );</span><br><span>       execute( TC_ho_in_fail_no_detect() );</span><br><span>diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>index c29ccd4..a4f1f51 100644</span><br><span>--- a/bsc/MSC_ConnectionHandler.ttcn</span><br><span>+++ b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>@@ -590,6 +590,7 @@</span><br><span>     TestHdlrParamsMSCPool mscpool,</span><br><span>       boolean         media_mgw_offer_ipv6,</span><br><span>        OCT3            last_used_eutran_plmn optional,</span><br><span style="color: hsl(120, 100%, 40%);">+       boolean         exp_fast_return, /* RR Release expected to contain CellSelectInd ? */</span><br><span>        boolean         expect_channel_mode_modify,</span><br><span>  uint3_t         expect_tsc optional</span><br><span> };</span><br><span>@@ -628,6 +629,7 @@</span><br><span>      },</span><br><span>   media_mgw_offer_ipv6 := true,</span><br><span>        last_used_eutran_plmn := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+        exp_fast_return := false,</span><br><span>    expect_channel_mode_modify := false,</span><br><span>         expect_tsc := omit</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24679">change 24679</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/+/24679"/><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: I227abc3793255e3916eba0dbc1460f46ec9926fe </div>
<div style="display:none"> Gerrit-Change-Number: 24679 </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: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>