<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25017">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: add RSL, RSL_PROC port args in various places<br><br>To be able to run tests on a cell other than bts 0, there needs to be a<br>way to select the RSL_DCHAN_PT and RSLEM_PROC_PT in various places.<br><br>Upcoming BSC_Tests.TC_cm_reestablishment depends on this, to be able to<br>run through an Assignment on bts 1.<br><br>Related: SYS#5130<br>Change-Id: Ia14f46d4e5e8d4722224b97c346c0cb7973fff97<br>---<br>M bsc/BSC_Tests.ttcn<br>1 file changed, 40 insertions(+), 38 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/17/25017/1</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 c764bcf..5ab3cc7 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -5437,7 +5437,7 @@</span><br><span>            exp_rr_rel_tmpl := tr_RRM_RR_RELEASE;</span><br><span>        }</span><br><span>    f_ho_into_this_bsc(id, oldToNewBSSIEs);</span><br><span style="color: hsl(0, 100%, 40%);">- f_perform_clear(RSL, exp_rr_rel_tmpl);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_perform_clear(exp_rr_rel_tmpl := exp_rr_rel_tmpl);</span><br><span>         setverdict(pass);</span><br><span> }</span><br><span> function f_tc_ho_into_this_bsc_main(TestHdlrParams pars) runs on test_CT {</span><br><span>@@ -7112,33 +7112,34 @@</span><br><span> template MobileIdentityLV ts_MI_TMSI_NRI_LV(integer nri_v, integer nri_bitlen := 10) :=</span><br><span>    ts_MI_TMSI_LV(tmsi := f_gen_tmsi(suffix := 0, nri_v := nri_v, nri_bitlen := nri_bitlen));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_expect_lchan_rel(RSL_DCHAN_PT rsl, template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE)</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_expect_lchan_rel(RSL_DCHAN_PT rsl_pt, RSLEM_PROC_PT rsl_proc_pt, template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE)</span><br><span> runs on MSC_ConnHdlr {</span><br><span>  interleave {</span><br><span style="color: hsl(0, 100%, 40%);">-    [] rsl.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch exp_rr_rel_tmpl)) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] rsl_pt.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch exp_rr_rel_tmpl)) {</span><br><span>                         f_logp(BSCVTY, "Got RSL RR Release");</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] rsl.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+       [] rsl_pt.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {</span><br><span>                   f_logp(BSCVTY, "Got RSL Deact SACCH");</span><br><span>             }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] rsl.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] rsl_pt.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {</span><br><span>                     f_logp(BSCVTY, "Got RSL RF Chan Rel, sending Rel Ack");</span><br><span style="color: hsl(0, 100%, 40%);">-                       rsl.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));</span><br><span style="color: hsl(0, 100%, 40%);">-                    f_rslem_unregister(0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+                     rsl_pt.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));</span><br><span style="color: hsl(120, 100%, 40%);">+                       f_rslem_unregister(0, g_chan_nr, PT := rsl_proc_pt);</span><br><span>                         break;</span><br><span>               }</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-friend function f_perform_clear(RSL_DCHAN_PT rsl, template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE)</span><br><span style="color: hsl(120, 100%, 40%);">+friend function f_perform_clear(RSL_DCHAN_PT rsl_pt := RSL, RSLEM_PROC_PT rsl_proc_pt := RSL_PROC,</span><br><span style="color: hsl(120, 100%, 40%);">+                                template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE)</span><br><span> runs on MSC_ConnHdlr {</span><br><span>         f_logp(BSCVTY, "MSC instructs BSC to clear channel");</span><br><span>      BSSAP.send(ts_BSSMAP_ClearCommand(0));</span><br><span>       interleave {</span><br><span style="color: hsl(0, 100%, 40%);">-    [] rsl.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch exp_rr_rel_tmpl)) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] rsl_pt.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch exp_rr_rel_tmpl)) {</span><br><span>                         f_logp(BSCVTY, "Got RSL RR Release");</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] rsl.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+       [] rsl_pt.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {</span><br><span>                   f_logp(BSCVTY, "Got RSL Deact SACCH");</span><br><span>             }</span><br><span>    [] BSSAP.receive(tr_BSSMAP_ClearComplete) {</span><br><span>@@ -7146,15 +7147,16 @@</span><br><span>                        /* Also drop the SCCP connection */</span><br><span>                  BSSAP.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] rsl.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] rsl_pt.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {</span><br><span>                     f_logp(BSCVTY, "Got RSL RF Chan Rel, sending Rel Ack");</span><br><span style="color: hsl(0, 100%, 40%);">-                       rsl.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));</span><br><span style="color: hsl(0, 100%, 40%);">-                    f_rslem_unregister(0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+                     rsl_pt.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr));</span><br><span style="color: hsl(120, 100%, 40%);">+                       f_rslem_unregister(0, g_chan_nr, PT := rsl_proc_pt);</span><br><span>                 }</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_perform_compl_l3(RSL_DCHAN_PT rsl, template PDU_ML3_MS_NW l3_info, boolean do_clear := true, boolean expect_bssmap_l3 := true)</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_perform_compl_l3(RSL_DCHAN_PT rsl_pt, RSLEM_PROC_PT rsl_proc_pt,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    template PDU_ML3_MS_NW l3_info, boolean do_clear := true, boolean expect_bssmap_l3 := true)</span><br><span> runs on MSC_ConnHdlr {</span><br><span>  timer T := 10.0;</span><br><span>     var octetstring l3_enc := enc_PDU_ML3_MS_NW(valueof(l3_info));</span><br><span>@@ -7162,17 +7164,17 @@</span><br><span>     f_logp(BSCVTY, "establish channel, send Complete Layer 3 Info");</span><br><span>   f_create_bssmap_exp(l3_enc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        /* RSL_Emulation.f_chan_est() on rsl:</span><br><span style="color: hsl(0, 100%, 40%);">-    * This is basically code dup with s/RSL/rsl from:</span><br><span style="color: hsl(120, 100%, 40%);">+    /* RSL_Emulation.f_chan_est() on rsl_pt:</span><br><span style="color: hsl(120, 100%, 40%);">+       * This is basically code dup with s/RSL/rsl_pt from:</span><br><span>         * RSL_Emulation.f_chan_est(g_pars.ra, l3_enc, g_pars.link_id, g_pars.fn);</span><br><span>    */</span><br><span>  var RSL_Message rx_rsl;</span><br><span>      var GsmRrMessage rr;</span><br><span> </span><br><span>     /* request a channel to be established */</span><br><span style="color: hsl(0, 100%, 40%);">-       rsl.send(ts_RSLDC_ChanRqd(g_pars.ra, g_pars.fn));</span><br><span style="color: hsl(120, 100%, 40%);">+     rsl_pt.send(ts_RSLDC_ChanRqd(g_pars.ra, g_pars.fn));</span><br><span>         /* expect immediate assignment.</span><br><span style="color: hsl(0, 100%, 40%);">-  * Code dup with s/RSL/rsl from:</span><br><span style="color: hsl(120, 100%, 40%);">+       * Code dup with s/RSL/rsl_pt from:</span><br><span>   * rx_rsl := f_rx_or_fail(tr_RSL_IMM_ASSIGN);</span><br><span>         */</span><br><span>  timer Tt := 10.0;</span><br><span>@@ -7180,10 +7182,10 @@</span><br><span>  /* request a channel to be established */</span><br><span>    Tt.start;</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-           [] rsl.receive(tr_RSL_IMM_ASSIGN) -> value rx_rsl {</span><br><span style="color: hsl(120, 100%, 40%);">+                [] rsl_pt.receive(tr_RSL_IMM_ASSIGN) -> value rx_rsl {</span><br><span>                    Tt.stop;</span><br><span>             }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] rsl.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+              [] rsl_pt.receive {</span><br><span>                  setverdict(fail, "Unexpected RSL message on DCHAN");</span><br><span>                       mtc.stop;</span><br><span>            }</span><br><span>@@ -7194,7 +7196,7 @@</span><br><span>    }</span><br><span>    rr := dec_GsmRrMessage(rx_rsl.ies[1].body.full_imm_ass_info.payload);</span><br><span>        g_chan_nr := rr.payload.imm_ass.chan_desc.chan_nr;</span><br><span style="color: hsl(0, 100%, 40%);">-      rsl.send(ts_RSL_EST_IND(g_chan_nr, valueof(g_pars.link_id), l3_enc));</span><br><span style="color: hsl(120, 100%, 40%);">+ rsl_pt.send(ts_RSL_EST_IND(g_chan_nr, valueof(g_pars.link_id), l3_enc));</span><br><span> </span><br><span> </span><br><span>     if (expect_bssmap_l3) {</span><br><span>@@ -7225,12 +7227,12 @@</span><br><span>            /* start ciphering, if requested */</span><br><span>          if (ispresent(g_pars.encr)) {</span><br><span>                        f_logp(BSCVTY, "start ciphering");</span><br><span style="color: hsl(0, 100%, 40%);">-                    f_cipher_mode(g_pars.encr);</span><br><span style="color: hsl(120, 100%, 40%);">+                   f_cipher_mode(g_pars.encr, rsl_pt := rsl_pt, rsl_proc_pt := rsl_proc_pt);</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span>        if (do_clear) {</span><br><span style="color: hsl(0, 100%, 40%);">-         f_perform_clear(rsl);</span><br><span style="color: hsl(120, 100%, 40%);">+         f_perform_clear(rsl_pt, rsl_proc_pt);</span><br><span>        }</span><br><span>    setverdict(pass);</span><br><span>    f_sleep(1.0);</span><br><span>@@ -7239,21 +7241,21 @@</span><br><span> private function f_tc_mscpool_compl_l3(charstring id) runs on MSC_ConnHdlr {</span><br><span>      f_MscConnHdlr_init(g_pars.media_nr, "127.0.0.2", "127.0.0.3", FR_AMR);</span><br><span>   if (g_pars.mscpool.rsl_idx == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-              f_perform_compl_l3(RSL, g_pars.mscpool.l3_info);</span><br><span style="color: hsl(120, 100%, 40%);">+              f_perform_compl_l3(RSL, RSL_PROC, g_pars.mscpool.l3_info);</span><br><span>   } else if (g_pars.mscpool.rsl_idx == 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-               f_perform_compl_l3(RSL1, g_pars.mscpool.l3_info);</span><br><span style="color: hsl(120, 100%, 40%);">+             f_perform_compl_l3(RSL1, RSL1_PROC, g_pars.mscpool.l3_info);</span><br><span>         } else if (g_pars.mscpool.rsl_idx == 2) {</span><br><span style="color: hsl(0, 100%, 40%);">-               f_perform_compl_l3(RSL2, g_pars.mscpool.l3_info);</span><br><span style="color: hsl(120, 100%, 40%);">+             f_perform_compl_l3(RSL2, RSL2_PROC, g_pars.mscpool.l3_info);</span><br><span>         }</span><br><span> }</span><br><span> </span><br><span> /* Various Complete Layer 3 by IMSI all end up with the first MSC, because the other MSCs are not connected. */</span><br><span> private function f_tc_mscpool_L3Compl_on_1_msc(charstring id) runs on MSC_ConnHdlr {</span><br><span>        f_MscConnHdlr_init(g_pars.media_nr, "127.0.0.2", "127.0.0.3", FR_AMR);</span><br><span style="color: hsl(0, 100%, 40%);">-      f_perform_compl_l3(RSL, ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000001'H)), '00F110'O) );</span><br><span style="color: hsl(0, 100%, 40%);">-        f_perform_compl_l3(RSL, ts_CM_SERV_REQ(CM_TYPE_MO_SMS, valueof(ts_MI_IMSI_LV('001010000000002'H))) );</span><br><span style="color: hsl(0, 100%, 40%);">-   f_perform_compl_l3(RSL, ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010000000003'H))) );</span><br><span style="color: hsl(0, 100%, 40%);">-      f_perform_compl_l3(RSL, ts_ML3_MO_MM_IMSI_DET_Ind(valueof(ts_MI_IMSI_LV('001010000000004'H))) );</span><br><span style="color: hsl(120, 100%, 40%);">+      f_perform_compl_l3(RSL, RSL_PROC, ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000001'H)), '00F110'O) );</span><br><span style="color: hsl(120, 100%, 40%);">+    f_perform_compl_l3(RSL, RSL_PROC, ts_CM_SERV_REQ(CM_TYPE_MO_SMS, valueof(ts_MI_IMSI_LV('001010000000002'H))) );</span><br><span style="color: hsl(120, 100%, 40%);">+       f_perform_compl_l3(RSL, RSL_PROC, ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010000000003'H))) );</span><br><span style="color: hsl(120, 100%, 40%);">+  f_perform_compl_l3(RSL, RSL_PROC, ts_ML3_MO_MM_IMSI_DET_Ind(valueof(ts_MI_IMSI_LV('001010000000004'H))) );</span><br><span> }</span><br><span> testcase TC_mscpool_L3Compl_on_1_msc() runs on test_CT {</span><br><span> </span><br><span>@@ -7641,7 +7643,7 @@</span><br><span> </span><br><span>  /* Despite the round robin pointing at the second MSC ('roundrobin next 1'), the earlier Paging for the same IMSI</span><br><span>     * causes this Paging Response to go to the first MSC (bssap_idx := 0). */</span><br><span style="color: hsl(0, 100%, 40%);">-      f_perform_compl_l3(RSL, ts_PAG_RESP(valueof(ts_MI_IMSI_LV(imsi))) );</span><br><span style="color: hsl(120, 100%, 40%);">+  f_perform_compl_l3(RSL, RSL_PROC, ts_PAG_RESP(valueof(ts_MI_IMSI_LV(imsi))) );</span><br><span>       f_sleep(1.0);</span><br><span> }</span><br><span> testcase TC_mscpool_paging_and_response_imsi() runs on test_CT {</span><br><span>@@ -7693,7 +7695,7 @@</span><br><span>       /* Despite the NRI matching the second MSC (NRI from 'msc 1' in osmo-bsc.cfg) and round robin pointing at the</span><br><span>         * third MSC ('roundrobin next 2'), the earlier Paging for the same TMSI causes this Paging Response to go to</span><br><span>         * the first MSC (bssap_idx := 0). */</span><br><span style="color: hsl(0, 100%, 40%);">-   f_perform_compl_l3(RSL, ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(nri_v))) );</span><br><span style="color: hsl(120, 100%, 40%);">+     f_perform_compl_l3(RSL, RSL_PROC, ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(nri_v))) );</span><br><span>  f_sleep(1.0);</span><br><span> }</span><br><span> testcase TC_mscpool_paging_and_response_tmsi() runs on test_CT {</span><br><span>@@ -8622,7 +8624,7 @@</span><br><span>       /* The LCS was using an active A-interface conn. It should still remain active after this. */</span><br><span>        f_mo_l3_transceive();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       f_perform_clear(RSL);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_perform_clear();</span><br><span> </span><br><span>       f_sleep(2.0);</span><br><span>        setverdict(pass);</span><br><span>@@ -8731,8 +8733,8 @@</span><br><span> </span><br><span>        /* MS requests channel. Since the Paging was for LCS, the Paging Response does not trigger a Complete Layer 3 to</span><br><span>      * the MSC, and releases the lchan directly. */</span><br><span style="color: hsl(0, 100%, 40%);">- f_perform_compl_l3(RSL, ts_PAG_RESP(valueof(ts_MI_IMSI_LV(g_pars.imsi))), do_clear := false, expect_bssmap_l3 := false);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_expect_lchan_rel(RSL);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_perform_compl_l3(RSL, RSL_PROC, ts_PAG_RESP(valueof(ts_MI_IMSI_LV(g_pars.imsi))), do_clear := false, expect_bssmap_l3 := false);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_expect_lchan_rel(RSL, RSL_PROC);</span><br><span> </span><br><span>       /* From the Paging Response, the TA is now known to the BSC, and it responds to the SMLC. */</span><br><span> </span><br><span>@@ -8964,7 +8966,7 @@</span><br><span> </span><br><span>         /* As the A-interface conn was established for LCS, the MS coincidentally decides to issue a CM Service Request</span><br><span>       * and establish Layer 3. It should use the existing A-interface conn. */</span><br><span style="color: hsl(0, 100%, 40%);">-       f_perform_compl_l3(RSL, valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV(g_pars.imsi)))),</span><br><span style="color: hsl(120, 100%, 40%);">+        f_perform_compl_l3(RSL, RSL_PROC, valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV(g_pars.imsi)))),</span><br><span>                     do_clear := false, expect_bssmap_l3 := true);</span><br><span> </span><br><span>    /* SMLC wants to ask the TA from the BSC explicitly in a BSSLAP TA Request message */</span><br><span>@@ -8981,7 +8983,7 @@</span><br><span>        /* The lchan should still exist, it was from a CM Service Request. */</span><br><span>        f_mo_l3_transceive();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       f_perform_clear(RSL);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_perform_clear();</span><br><span> </span><br><span>       f_sleep(2.0);</span><br><span>        setverdict(pass);</span><br><span>@@ -9058,7 +9060,7 @@</span><br><span>    f_mo_l3_transceive(RSL1);</span><br><span> </span><br><span>        /* MSC decides it is done now. */</span><br><span style="color: hsl(0, 100%, 40%);">-       f_perform_clear(RSL1);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_perform_clear(RSL1, RSL1_PROC);</span><br><span> </span><br><span>        f_sleep(2.0);</span><br><span>        setverdict(pass);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25017">change 25017</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/+/25017"/><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: Ia14f46d4e5e8d4722224b97c346c0cb7973fff97 </div>
<div style="display:none"> Gerrit-Change-Number: 25017 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>