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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BSC_Tests/hopping: add TC_fh_params_handover_cmd<br><br>Similar to TC_fh_params_assignment_cmd, this test case verifies<br>presence and correctness of the hopping parameters in the following<br>messages and their IEs:<br><br>  1. (RR) Handover Command<br>  1.1. Description of the First Channel, after time IE<br>  1.2. Cell Channel Description IE (presence)<br>  1.3. Mobile Allocation, after time IE<br><br>The hopping parameters are randomly generated and configured<br>via the VTY interface in the beginning, and unset in the end.<br><br>Since the C0/TS0 (BCCH+SDCCH4+CBCH) shall not be hopping, let's<br>temporarily re-configure TS0 as BCCH, and TS1 as SDCCH8 on TRX0<br>of BTS1 (handover tagret).<br><br>Change-Id: I0ddea535dce7e5558793be5cddaad0ab46e978ec<br>Related: SYS#4868, OS#4545<br>---<br>M bsc/BSC_Tests.ttcn<br>1 file changed, 101 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 3906df6..f16fab4 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -7150,6 +7150,106 @@</span><br><span>         f_shutdown_helper();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify the hopping parameters (HSN, MAIO, MA) in (RR) Handover Command */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_fh_params_handover_cmd(in FHParamsTrx fhp)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var RSL_Message rsl_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+      var RSL_IE_Body ie;</span><br><span style="color: hsl(120, 100%, 40%);">+   var DchanTuple dt;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Establish a dedicated channel, so we can trigger handover */</span><br><span style="color: hsl(120, 100%, 40%);">+       dt := f_est_dchan(f_rnd_ra_cs(), 23, f_rnd_octstring(16));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Trigger handover from BTS0 to BTS1 */</span><br><span style="color: hsl(120, 100%, 40%);">+      f_bts_0_cfg(BSCVTY, { "neighbor bts 1" });</span><br><span style="color: hsl(120, 100%, 40%);">+  f_vty_handover(BSCVTY, 0, 0, dt.rsl_chan_nr, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Expect RSL CHANnel ACTIVation on BTS1/TRX0/TS1 */</span><br><span style="color: hsl(120, 100%, 40%);">+  rsl_msg := f_exp_ipa_rx(1, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* ACKnowledge channel activation and expect (RR) Handover Command */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ipa_tx(1, ts_RSL_CHAN_ACT_ACK(rsl_msg.ies[0].body.chan_nr, 33));</span><br><span style="color: hsl(120, 100%, 40%);">+    rsl_msg := f_exp_ipa_rx(0, tr_RSL_MsgTypeR(RSL_MT_DATA_REQ));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Make sure that L3 Information IE is present */</span><br><span style="color: hsl(120, 100%, 40%);">+     if (not f_rsl_find_ie(rsl_msg, RSL_IE_L3_INFO, ie)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         setverdict(fail, "RSL L3 Information IE is absent");</span><br><span style="color: hsl(120, 100%, 40%);">+                return;</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%);">+   /* Decode the L3 message and make sure it is (RR) Handover Command */</span><br><span style="color: hsl(120, 100%, 40%);">+ var GsmRrL3Message l3_msg := dec_GsmRrL3Message(ie.l3_info.payload);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (not match(l3_msg.header, t_RrL3Header(HANDOVER_COMMAND))) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Failed to match Handover Command: ", l3_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+             return;</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%);">+   /* Make sure that we've got SDCCH/8 on TS1 (expected to be hopping) */</span><br><span style="color: hsl(120, 100%, 40%);">+    var ChannelDescription chan_desc := l3_msg.payload.ho_cmd.chan_desc;</span><br><span style="color: hsl(120, 100%, 40%);">+  if (not match(chan_desc.chan_nr, t_RslChanNr_SDCCH8(1, ?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+         setverdict(fail, "Unexpected channel number: ", chan_desc.chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+         return;</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%);">+   /* Make sure that hopping parameters (HSN/MAIO) match */</span><br><span style="color: hsl(120, 100%, 40%);">+      f_TC_fh_params_match_chan_desc(fhp, chan_desc);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Make sure that Cell Channel Description IE is present */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (not ispresent(l3_msg.payload.ho_cmd.cell_chan_desc)) {</span><br><span style="color: hsl(120, 100%, 40%);">+            setverdict(fail, "FH enabled, but Cell Channel Description IE is absent");</span><br><span style="color: hsl(120, 100%, 40%);">+          return;</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%);">+   /* Make sure that the Mobile Allocation (after time) IE is present and matches */</span><br><span style="color: hsl(120, 100%, 40%);">+     var boolean ma_present := ispresent(l3_msg.payload.ho_cmd.mobile_allocation);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (ma_present) {</span><br><span style="color: hsl(120, 100%, 40%);">+             f_TC_fh_params_match_ma(fhp, chan_desc.chan_nr.tn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    l3_msg.payload.ho_cmd.mobile_allocation.v);</span><br><span style="color: hsl(120, 100%, 40%);">+   } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "FH enabled, but Mobile Allocation IE is absent");</span><br><span style="color: hsl(120, 100%, 40%);">+         return;</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_fh_params_handover_cmd() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var FHParamsTrx fhp := f_TC_fh_params_gen();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_vty();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* (Re)configure TS0 as BCCH and TS1 as SDCCH8 on BTS1/TRX0 */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_vty_enter_cfg_trx(BSCVTY, bts := 1, trx := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_vty_transceive(BSCVTY, "timeslot 0");</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_transceive(BSCVTY, "phys_chan_config ccch");</span><br><span style="color: hsl(120, 100%, 40%);">+  f_vty_transceive(BSCVTY, "exit"); /* go back */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_vty_transceive(BSCVTY, "timeslot 1");</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_transceive(BSCVTY, "phys_chan_config sdcch8");</span><br><span style="color: hsl(120, 100%, 40%);">+        f_vty_transceive(BSCVTY, "end"); /* we're done */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     f_TC_fh_params_set(fhp, 1); /* Enable frequency hopping on BTS1 */</span><br><span style="color: hsl(120, 100%, 40%);">+    f_vty_transceive(BSCVTY, "drop bts connection 1 oml");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init(2);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_TC_fh_params_handover_cmd(fhp);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Disable frequency hopping on BTS1 */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_TC_fh_params_unset(fhp, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* (Re)configure TS0 as CCCH+SDCCH4+CBCH and TS1 as TCH/F */</span><br><span style="color: hsl(120, 100%, 40%);">+  f_vty_enter_cfg_trx(BSCVTY, bts := 1, trx := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_vty_transceive(BSCVTY, "timeslot 0");</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_transceive(BSCVTY, "phys_chan_config ccch+sdcch4+cbch");</span><br><span style="color: hsl(120, 100%, 40%);">+      f_vty_transceive(BSCVTY, "exit"); /* go back */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_vty_transceive(BSCVTY, "timeslot 1");</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_transceive(BSCVTY, "phys_chan_config tch/f");</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_transceive(BSCVTY, "end"); /* we're done */</span><br><span style="color: hsl(120, 100%, 40%);">+</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> /* Verify the hopping parameters in System Information Type 4 */</span><br><span> testcase TC_fh_params_si4_cbch() runs on test_CT {</span><br><span>  var FHParamsTrx fhp := f_TC_fh_params_gen(tr_tn := 1);</span><br><span>@@ -7461,6 +7561,7 @@</span><br><span>       execute( TC_fh_params_chan_activ() );</span><br><span>        execute( TC_fh_params_imm_ass() );</span><br><span>   execute( TC_fh_params_assignment_cmd() );</span><br><span style="color: hsl(120, 100%, 40%);">+     execute( TC_fh_params_handover_cmd() );</span><br><span>      execute( TC_fh_params_si4_cbch() );</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19943">change 19943</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/+/19943"/><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: I0ddea535dce7e5558793be5cddaad0ab46e978ec </div>
<div style="display:none"> Gerrit-Change-Number: 19943 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>