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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: add TC_early_immediate_assignment_pre_chan_ack<br><br>Related: SYS#5559<br>Related: Ie52765b238b01f22fb327fe12327fbf10abcad4c (osmo-bts)<br>Change-Id: Ifb2c62431a91dafa6116b5d6b9410930f00a6e18<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 71 insertions(+), 0 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 61c40d4..616ca34 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -7691,6 +7691,75 @@</span><br><span>    Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_early_immediate_assignment(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+    var GsmFrameNumber fn;</span><br><span style="color: hsl(120, 100%, 40%);">+        var ChannelDescription ch_desc;</span><br><span style="color: hsl(120, 100%, 40%);">+       var integer ra := 23;</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%);">+  /* Send RACH request and wait for ChanReq */</span><br><span style="color: hsl(120, 100%, 40%);">+  fn := f_rach_req_wait_chan_rqd(ra);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* The BSC already sends the Immediate Assignment, before the channel is active.</span><br><span style="color: hsl(120, 100%, 40%);">+       * (Also before the Channel Activation, even. I tried to write this test so that we first send the Chan Act and then the IMM</span><br><span style="color: hsl(120, 100%, 40%);">+   * ASS, but osmo-bts-trx responds so fast that the Chan Activ ACK comes back even before titan dispatches the</span><br><span style="color: hsl(120, 100%, 40%);">+  * IMM ASS. So move the IMM ASS even before the Chan Activ.) */</span><br><span style="color: hsl(120, 100%, 40%);">+       if (g_pars.fhp.enabled) {</span><br><span style="color: hsl(120, 100%, 40%);">+             ch_desc := valueof(ts_ChanDescH1(g_pars.chan_nr, g_pars.fhp.maio_hsn, g_pars.tsc));</span><br><span style="color: hsl(120, 100%, 40%);">+   } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              ch_desc := valueof(ts_ChanDescH0(g_pars.chan_nr, mp_trx_pars[0].arfcn, g_pars.tsc));</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     var GsmRrMessage rr_msg := valueof(ts_IMM_ASS(ra, fn, 0, ch_desc, g_pars.fhp.ma_map));</span><br><span style="color: hsl(120, 100%, 40%);">+        RSL.send(ts_RSL_IMM_ASSIGN(enc_GsmRrMessage(rr_msg)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Do not expect the Immediate Assignment to show up on MS side yet. Even give it one second before the BSC</span><br><span style="color: hsl(120, 100%, 40%);">+    * requests Chan Activ, to make sure the RR IMM ASS is held back. */</span><br><span style="color: hsl(120, 100%, 40%);">+  var L1ctlDlMessage dl;</span><br><span style="color: hsl(120, 100%, 40%);">+        var GsmRrMessage rr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        var template GsmRrMessage rr_imm_ass := tr_IMM_ASS(ra, fn);</span><br><span style="color: hsl(120, 100%, 40%);">+   rr_imm_ass.payload.imm_ass.ded_or_tbf := ?;</span><br><span style="color: hsl(120, 100%, 40%);">+   rr_imm_ass.payload.imm_ass.pkt_chan_desc := *;</span><br><span style="color: hsl(120, 100%, 40%);">+        rr_imm_ass.payload.imm_ass.chan_desc := *;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  timer T := 1.0;</span><br><span style="color: hsl(120, 100%, 40%);">+       T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_PCH_AGCH(0))) -> value dl {</span><br><span style="color: hsl(120, 100%, 40%);">+                 rr := dec_GsmRrMessage(dl.payload.data_ind.payload);</span><br><span style="color: hsl(120, 100%, 40%);">+                  if (match(rr, rr_imm_ass)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                          setverdict(fail, "Expected IMM ASS to be delayed until Chan Act ACK, but it was passed to the MS immediately");</span><br><span style="color: hsl(120, 100%, 40%);">+                             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                              repeat;</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%);">+     [] L1CTL.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] T.timeout;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.send(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode, t_RSL_IE_ActType_IA));</span><br><span style="color: hsl(120, 100%, 40%);">+  RSL.receive(tr_RSL_CHAN_ACT_ACK(g_chan_nr));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Now expect the IMM ASS on Um */</span><br><span style="color: hsl(120, 100%, 40%);">+    f_L1CTL_WAIT_IMM_ASS(L1CTL, ra, fn);</span><br><span style="color: hsl(120, 100%, 40%);">+  setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Release the channel */</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%);">+testcase TC_early_immediate_assignment() 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 := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     vc_conn := f_start_handler(refers(f_TC_early_immediate_assignment), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+    vc_conn.done;</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> /* test generation of RLL ERR IND based on Um errors (TS 48.058 3.9) */</span><br><span> /*     protocol error as per 44.006 */</span><br><span> /*   link layer failure (repetition of I-frame N200 times without ACK */</span><br><span>@@ -7889,6 +7958,8 @@</span><br><span>  execute( TC_speech_no_rtp_tchh() );</span><br><span>  execute( TC_speech_rtp_tchf() );</span><br><span>     execute( TC_speech_rtp_tchh() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_early_immediate_assignment() );</span><br><span> }</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/+/25196">change 25196</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/+/25196"/><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: Ifb2c62431a91dafa6116b5d6b9410930f00a6e18 </div>
<div style="display:none"> Gerrit-Change-Number: 25196 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@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>