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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Introduce TC_ul_data_toolong_fills_padding<br><br>Change-Id: Ic37294efac005ed6c0ce48dea566fd20284b5868<br>---<br>M pcu/PCU_Tests.ttcn<br>1 file changed, 66 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn</span><br><span>index 76a2d9e..641b978 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -966,6 +966,71 @@</span><br><span>    setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_ul_data_toolong_fills_padding_cs(inout GprsMS ms, CodingScheme cs, integer cv) runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring payload;</span><br><span style="color: hsl(120, 100%, 40%);">+      var template (value) RlcmacUlBlock ul_data;</span><br><span style="color: hsl(120, 100%, 40%);">+   var integer block_len, max_valid_data_len;</span><br><span style="color: hsl(120, 100%, 40%);">+    timer T;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    block_len := f_rlcmac_cs_mcs2block_len(cs);</span><br><span style="color: hsl(120, 100%, 40%);">+   /* We need to send with TLLI since we are in One-Phase Access Contenion</span><br><span style="color: hsl(120, 100%, 40%);">+        * resoultion), so that's -4 bytes of data, -3 for headers, -1 for LI</span><br><span style="color: hsl(120, 100%, 40%);">+      * indicator, -1 for spare bits octet at the end */</span><br><span style="color: hsl(120, 100%, 40%);">+   max_valid_data_len := block_len - 4 - 3 - 1 - 1;</span><br><span style="color: hsl(120, 100%, 40%);">+      payload := f_rnd_octstring(max_valid_data_len + 1); /* +1 to write LLC data on last padding octet */</span><br><span style="color: hsl(120, 100%, 40%);">+  ul_data := t_RLCMAC_UL_DATA_TLLI(tfi := ms.ul_tbf.tfi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    cv := cv,</span><br><span style="color: hsl(120, 100%, 40%);">+                             bsn := ms.ul_tbf.bsn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 blocks := { t_RLCMAC_LLCBLOCK(payload,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              t_RLCMAC_LLCBLOCK_HDR(length_ind := lengthof(payload), more := false, e := true))</span><br><span style="color: hsl(120, 100%, 40%);">+                                         },</span><br><span style="color: hsl(120, 100%, 40%);">+                                  tlli := ms.tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ultbf_inc_bsn(ms.ul_tbf);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_ms_tx_data_ind(ms, enc_RlcmacUlBlock(valueof(ul_data)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  T.start(0.5);</span><br><span style="color: hsl(120, 100%, 40%);">+ alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSGP[0].receive(tr_BSSGP_UL_UD(ms.tlli, mp_gb_cfg.cell_id, ?)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          setverdict(fail, "LLC PDU in Malformed RLC block was forwarded");</span><br><span style="color: hsl(120, 100%, 40%);">+           f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T.timeout {</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%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify PCU finds out incorrectly formated RLC block and discards it. This</span><br><span style="color: hsl(120, 100%, 40%);">+   blocks intentionally contain last byte of data placed in last byte of RLC</span><br><span style="color: hsl(120, 100%, 40%);">+   containing padding/spare bits, which is incorrect. Spare bits exist and are</span><br><span style="color: hsl(120, 100%, 40%);">+   described for CS2..4 in 3GPP TS 44.060 Table 10.2.1: "RLC data block size,</span><br><span style="color: hsl(120, 100%, 40%);">+   discounting padding in octet" */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ul_data_toolong_fills_padding() runs on RAW_PCU_Test_CT  {</span><br><span style="color: hsl(120, 100%, 40%);">+        var GprsMS ms;</span><br><span style="color: hsl(120, 100%, 40%);">+        var integer block_len, max_valid_data_len;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Initialize NS/BSSGP side */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_bssgp();</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Initialize GPRS MS side */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_gprs_ms();</span><br><span style="color: hsl(120, 100%, 40%);">+     ms := g_ms[0]; /* We only use first MS in this test */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Initialize the PCU interface abstraction */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_raw(testcasename());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Establish BSSGP connection to the PCU */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_bssgp_establish();</span><br><span style="color: hsl(120, 100%, 40%);">+  f_bssgp_client_llgmm_assign('FFFFFFFF'O, ms.tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Establish an Uplink TBF */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ms_establish_ul_tbf(ms);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_TC_ul_data_toolong_fills_padding_cs(ms, CS_2, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_TC_ul_data_toolong_fills_padding_cs(ms, CS_3, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_TC_ul_data_toolong_fills_padding_cs(ms, CS_4, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</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%);">+</span><br><span> /* Test scenario where MS wants to send some data on PDCH against SGSN and it is</span><br><span>  * answered, so TBFs for uplink and later for downlink are created.</span><br><span>  */</span><br><span>@@ -1953,6 +2018,7 @@</span><br><span>     execute( TC_t3193() );</span><br><span>       execute( TC_countdown_procedure() );</span><br><span>         execute( TC_ul_all_sizes() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_ul_data_toolong_fills_padding() );</span><br><span>       execute( TC_mo_ping_pong() );</span><br><span>        execute( TC_mo_ping_pong_with_ul_racap() );</span><br><span>  execute( TC_force_two_phase_access() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19097">change 19097</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/+/19097"/><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: Ic37294efac005ed6c0ce48dea566fd20284b5868 </div>
<div style="display:none"> Gerrit-Change-Number: 19097 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </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: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>