<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/14094">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Add TC_sacch_chan_act_ho_async + TC_sacch_chan_act_ho_sync<br><br>Those two new tests test the subtle rules related to how the presence<br>of certain IEs in the RSL CHAN ACT influence when exactly DL SACCH<br>transmission should start during hand-over related channel activation.<br><br>Change-Id: Ia88f3ab160891cdbbb8fa6e765f137edd04c6e81<br>Related: OS#3570<br>Related: OS#4008<br>Related: OS#4009<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 152 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index 0ee3cd4..076476f 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -497,9 +497,9 @@</span><br><span>         var RSL_Message rx := f_rsl_transceive_ret(tx, exp_rx, id, ignore_other);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_rsl_chan_act(RSL_IE_ChannelMode mode, boolean encr_enable := false, RSL_IE_List more_ies := {})</span><br><span style="color: hsl(0, 100%, 40%);">-runs on ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-  var RSL_Message ch_act := valueof(ts_RSL_CHAN_ACT(g_chan_nr, mode));</span><br><span style="color: hsl(120, 100%, 40%);">+function f_rsl_chan_act(RSL_IE_ChannelMode mode, boolean encr_enable := false, RSL_IE_List more_ies := {},</span><br><span style="color: hsl(120, 100%, 40%);">+                      RSL_IE_ActivationType act_type := t_RSL_IE_ActType_IA) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+     var RSL_Message ch_act := valueof(ts_RSL_CHAN_ACT(g_chan_nr, mode, act_type));</span><br><span>       if (encr_enable) {</span><br><span>           /* append encryption related IEs, if requested */</span><br><span>            var RSL_IE_EncryptionInfo encr_info;</span><br><span>@@ -1007,7 +1007,153 @@</span><br><span>       Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* TODO: Test for SACCH transmission rules in the context of special CHAN ACT (HO) */</span><br><span style="color: hsl(120, 100%, 40%);">+/* verify that SACCH DL transmission is started only if MS power IE present</span><br><span style="color: hsl(120, 100%, 40%);">+ * see section 4.1.3 of 3GPP TS 48.058 */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_sacch_chan_act_ho_async(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+  var octetstring si5 := f_rnd_octstring(19);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_l1_tune(L1CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Step 1: Activate ASYNC HO channel without MS power IE */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Activate channel on BTS side */</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rsl_chan_act(g_pars.chan_mode, act_type := t_RSL_IE_ActType_HO_ASYNC);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* don't perform immediate assignment here, as we're testing non-IA case */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* enable dedicated mode */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_EST_REQ(L1CTL, {false, mp_trx0_arfcn }, g_pars.chan_nr, 7);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Verify that no DL SACCH is being received */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_sacch_missing(?);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</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%);">+     /* Step 2: Activate ASYNC HO channel with MS power IE */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Activate channel on BTS side */</span><br><span style="color: hsl(120, 100%, 40%);">+    var RSL_IE_List addl_ies := {</span><br><span style="color: hsl(120, 100%, 40%);">+         valueof(t_RSL_IE(RSL_IE_MS_POWER, RSL_IE_Body:{ms_power := ts_RSL_IE_MS_Power(0)}))</span><br><span style="color: hsl(120, 100%, 40%);">+           };</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rsl_chan_act(g_pars.chan_mode, more_ies := addl_ies, act_type := t_RSL_IE_ActType_HO_ASYNC);</span><br><span style="color: hsl(120, 100%, 40%);">+        /* don't perform immediate assignment here, as we're testing non-IA case */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* enable dedicated mode */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_EST_REQ(L1CTL, {false, mp_trx0_arfcn }, g_pars.chan_nr, 7);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Verify that DL SACCH is being received */</span><br><span style="color: hsl(120, 100%, 40%);">+  f_sacch_present(si5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_sacch_chan_act_ho_async() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   for (var integer i := 0; i < sizeof(g_AllChannels); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            pars := valueof(t_Pars(g_AllChannels[i], ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+              log(testcasename(), ": Starting for ", g_AllChannels[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+           vc_conn := f_start_handler(refers(f_TC_sacch_chan_act_ho_async), pars);</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%);">+     /* TODO: do the above in parallel, rather than sequentially? */</span><br><span style="color: hsl(120, 100%, 40%);">+       Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</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%);">+/* verify that SACCH DL transmission is started only if TA + MS power IEs present,</span><br><span style="color: hsl(120, 100%, 40%);">+ * see section 4.1.4 of 3GPP TS 48.058 */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_sacch_chan_act_ho_sync(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+     var octetstring si5 := f_rnd_octstring(19);</span><br><span style="color: hsl(120, 100%, 40%);">+   var RSL_IE_List addl_ies;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_l1_tune(L1CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Step 1: Activate SYNC HO channel without MS power IE */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Activate channel on BTS side */</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rsl_chan_act(g_pars.chan_mode, act_type := t_RSL_IE_ActType_HO_SYNC);</span><br><span style="color: hsl(120, 100%, 40%);">+       /* don't perform immediate assignment here, as we're testing non-IA case */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* enable dedicated mode */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_EST_REQ(L1CTL, {false, mp_trx0_arfcn }, g_pars.chan_nr, 7);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Verify that no DL SACCH is being received */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_sacch_missing(?);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</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%);">+     /* Step 2a: Activate SYNC HO channel with only MS power IE */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Activate channel on BTS side */</span><br><span style="color: hsl(120, 100%, 40%);">+    addl_ies := {</span><br><span style="color: hsl(120, 100%, 40%);">+         valueof(t_RSL_IE(RSL_IE_MS_POWER, RSL_IE_Body:{ms_power := ts_RSL_IE_MS_Power(0)}))</span><br><span style="color: hsl(120, 100%, 40%);">+           };</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rsl_chan_act(g_pars.chan_mode, more_ies := addl_ies, act_type := t_RSL_IE_ActType_HO_SYNC);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* don't perform immediate assignment here, as we're testing non-IA case */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* enable dedicated mode */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_EST_REQ(L1CTL, {false, mp_trx0_arfcn }, g_pars.chan_nr, 7);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Verify that no DL SACCH is being received */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_sacch_missing(?);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</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%);">+     /* Step 2b: Activate SYNC HO channel with TA IE */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Activate channel on BTS side */</span><br><span style="color: hsl(120, 100%, 40%);">+    addl_ies := {</span><br><span style="color: hsl(120, 100%, 40%);">+         valueof(t_RSL_IE(RSL_IE_TIMING_ADVANCE, RSL_IE_Body:{timing_adv := 0}))</span><br><span style="color: hsl(120, 100%, 40%);">+               };</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rsl_chan_act(g_pars.chan_mode, more_ies := addl_ies, act_type := t_RSL_IE_ActType_HO_SYNC);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* don't perform immediate assignment here, as we're testing non-IA case */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* enable dedicated mode */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_EST_REQ(L1CTL, {false, mp_trx0_arfcn }, g_pars.chan_nr, 7);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Verify that no DL SACCH is being received */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_sacch_missing(?);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</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%);">+     /* Step 3: Activate SYNC HO channel with MS power IE and TA IE */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Activate channel on BTS side */</span><br><span style="color: hsl(120, 100%, 40%);">+    addl_ies := {</span><br><span style="color: hsl(120, 100%, 40%);">+         valueof(t_RSL_IE(RSL_IE_TIMING_ADVANCE, RSL_IE_Body:{timing_adv := 0})),</span><br><span style="color: hsl(120, 100%, 40%);">+              valueof(t_RSL_IE(RSL_IE_MS_POWER, RSL_IE_Body:{ms_power := ts_RSL_IE_MS_Power(0)}))</span><br><span style="color: hsl(120, 100%, 40%);">+           };</span><br><span style="color: hsl(120, 100%, 40%);">+    f_rsl_chan_act(g_pars.chan_mode, more_ies := addl_ies, act_type := t_RSL_IE_ActType_HO_SYNC);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* don't perform immediate assignment here, as we're testing non-IA case */</span><br><span style="color: hsl(120, 100%, 40%);">+   /* enable dedicated mode */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_EST_REQ(L1CTL, {false, mp_trx0_arfcn }, g_pars.chan_nr, 7);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Verify that DL SACCH is being received */</span><br><span style="color: hsl(120, 100%, 40%);">+  f_sacch_present(si5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+   f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_sacch_chan_act_ho_sync() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   for (var integer i := 0; i < sizeof(g_AllChannels); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            pars := valueof(t_Pars(g_AllChannels[i], ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+              log(testcasename(), ": Starting for ", g_AllChannels[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+           vc_conn := f_start_handler(refers(f_TC_sacch_chan_act_ho_sync), pars);</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%);">+     /* TODO: do the above in parallel, rather than sequentially? */</span><br><span style="color: hsl(120, 100%, 40%);">+       Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> </span><br><span> /***********************************************************************</span><br><span>@@ -4465,6 +4611,8 @@</span><br><span>         execute( TC_sacch_multi() );</span><br><span>         execute( TC_sacch_multi_chg() );</span><br><span>     execute( TC_sacch_chan_act() );</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_sacch_chan_act_ho_async() );</span><br><span style="color: hsl(120, 100%, 40%);">+      execute( TC_sacch_chan_act_ho_sync() );</span><br><span>      execute( TC_rach_content() );</span><br><span>        execute( TC_rach_count() );</span><br><span>  execute( TC_rach_max_ta() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14094">change 14094</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/14094"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Ia88f3ab160891cdbbb8fa6e765f137edd04c6e81 </div>
<div style="display:none"> Gerrit-Change-Number: 14094 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>