<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25537">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Adapt tests to pass with new idle blocks from PCU<br><br>Change-Id: I6e96a7569640695ccfaa94b471384fa301bccd62<br>---<br>M pcu/PCU_Tests.ttcn<br>1 file changed, 61 insertions(+), 28 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/37/25537/1</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 0324439..32dae1f 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -397,6 +397,7 @@</span><br><span> /* Make sure TBF is released and no data is sent for in after reciving a Suspend Request from that MS. See OS#4761 */</span><br><span> testcase TC_pcuif_suspend_active_tbf() runs on RAW_PCU_Test_CT {</span><br><span>       var octetstring ra_id := enc_RoutingAreaIdentification(mp_gb_cfg.bvc[0].cell_id.ra_id);</span><br><span style="color: hsl(120, 100%, 40%);">+       var BTS_PDTCH_Block data_msg;</span><br><span>        var RlcmacDlBlock dl_block;</span><br><span>  var octetstring data := f_rnd_octstring(10);</span><br><span>         var uint32_t sched_fn;</span><br><span>@@ -454,9 +455,17 @@</span><br><span> </span><br><span>    /* Make sure we don't receive data for that TBF since it was released</span><br><span>     * before. Also check our TBF is not polled for UL. */</span><br><span style="color: hsl(0, 100%, 40%);">-  f_rx_rlcmac_dl_block_exp_dummy(dl_block);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (dl_block.ctrl.mac_hdr.usf != USF_UNUSED) {</span><br><span style="color: hsl(0, 100%, 40%);">-          setverdict(fail, "Unexpected USF ", dl_block.ctrl.mac_hdr.usf);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_pcuif_rx_data_req_pdtch(data_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (data_msg.dl_block == omit) {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* IDLE block, expected on new PCU versions */</span><br><span style="color: hsl(120, 100%, 40%);">+        } else if (match(data_msg.dl_block, tr_RLCMAC_DUMMY_CTRL())) {</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Dummy RLCMAC block, expected on older PCU versions */</span><br><span style="color: hsl(120, 100%, 40%);">+              if (data_msg.dl_block.ctrl.mac_hdr.usf != USF_UNUSED) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       setverdict(fail, "Unexpected USF ", data_msg.dl_block.ctrl.mac_hdr.usf);</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%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Unexpected dl_block", data_msg.dl_block);</span><br><span>                f_shutdown(__BFILE__, __LINE__);</span><br><span>     }</span><br><span> </span><br><span>@@ -583,7 +592,7 @@</span><br><span>  f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Verify that the PCU generates valid PTCCH/D messages</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify that the PCU generates empty blocks in PTCCH/D</span><br><span>  * while neither Uplink nor Downlink TBF is established. */</span><br><span> testcase TC_ta_ptcch_idle() runs on RAW_PCU_Test_CT {</span><br><span>    var BTS_PTCCH_Block pcu_msg;</span><br><span>@@ -599,9 +608,15 @@</span><br><span> </span><br><span>      T.start(5.0);</span><br><span>        alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   /* Make sure the message is encoded correctly</span><br><span style="color: hsl(0, 100%, 40%);">-    * TODO: do we expect all TA values to be equal '1111111'B? */</span><br><span style="color: hsl(0, 100%, 40%);">-  [] as_rx_ptcch(pcu_msg, tr_PTCCHDownlinkMsg);</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BTS.receive(tr_PCUIF_DATA_PTCCH(0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    tr_PCUIF_DATA(0, 7, sapi := PCU_IF_SAPI_PTCCH),</span><br><span style="color: hsl(120, 100%, 40%);">+                                       omit)) {</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%);">+     [] as_rx_ptcch(pcu_msg, tr_PTCCHDownlinkMsg) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       setverdict(fail, "Expected IDLE block instead of PTCCH/D block");</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> </span><br><span>        [] BTS.receive(PCUIF_Message:?) { repeat; }</span><br><span>  [] T.timeout {</span><br><span>@@ -1947,7 +1962,7 @@</span><br><span>               repeat;</span><br><span>      }</span><br><span>    /* At this point in time (N3105_MAX reached), PCU already moved TBF to</span><br><span style="color: hsl(0, 100%, 40%);">-   * RELEASE state so no data for it is tx'ed, hence the dummy blocks:</span><br><span style="color: hsl(120, 100%, 40%);">+       * RELEASE state so no data for it is tx'ed, hence the dummy/idle blocks:</span><br><span>         */</span><br><span>  [N3105 == N3105_MAX] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,</span><br><span>                                         tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),</span><br><span>@@ -1964,13 +1979,25 @@</span><br><span>                                    block_nr := nr.blk_nr));</span><br><span>           repeat;</span><br><span>      }</span><br><span style="color: hsl(120, 100%, 40%);">+     [N3105 == N3105_MAX] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),</span><br><span style="color: hsl(120, 100%, 40%);">+                                        omit)) -> value data_msg {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* We may already receive idle blocks before our own TTCN3 timer</span><br><span style="color: hsl(120, 100%, 40%);">+               * triggers due to the TBF being released. Keep going until our T_3195 triggers. */</span><br><span style="color: hsl(120, 100%, 40%);">+           nr := ts_TsTrxBtsNum;</span><br><span style="color: hsl(120, 100%, 40%);">+         BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       sapi := PCU_IF_SAPI_PDTCH, fn := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)),</span><br><span style="color: hsl(120, 100%, 40%);">+                                   block_nr := nr.blk_nr));</span><br><span style="color: hsl(120, 100%, 40%);">+            repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span>    [T_3195.running] T_3195.timeout {</span><br><span>            log("T_3195 timeout");</span><br><span>             /* Done in alt, wait for pending RTS initiated previously in</span><br><span>                  * above case before continuing (expect /* Dummy block): */</span><br><span>          BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,</span><br><span>                                           tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),</span><br><span style="color: hsl(0, 100%, 40%);">-                                          tr_RLCMAC_DUMMY_CTRL));</span><br><span style="color: hsl(120, 100%, 40%);">+                                               omit));</span><br><span>              }</span><br><span>    [] BTS.receive {</span><br><span>             setverdict(fail, "Unexpected BTS message");</span><br><span>@@ -5968,12 +5995,13 @@</span><br><span>      f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Verify TRX!=C0 don't schedule rlcmac blocks if no TBF attached to it. See OS#4772, SYS#4919 */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify PCU schedule idle blocks (len=0) if no TBF attached to it. See OS#4772, SYS#4919 */</span><br><span> testcase TC_pdch_energy_saving() runs on RAW_PCU_Test_CT {</span><br><span>   var PCUIF_info_ind info_ind;</span><br><span>         var template (value) TsTrxBtsNum nr;</span><br><span>         var RlcmacDlBlock dl_block;</span><br><span>  var BTS_PDTCH_Block data_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+ var integer ts;</span><br><span>      timer T;</span><br><span> </span><br><span>         /* Initialize NS/BSSGP side */</span><br><span>@@ -5991,25 +6019,30 @@</span><br><span>     /* Establish BSSGP connection to the PCU */</span><br><span>  f_bssgp_establish();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        /* Verify C0 gets always dummy blocks: */</span><br><span style="color: hsl(0, 100%, 40%);">-       nr := ts_TsTrxBtsNum(ts_nr := 7, trx_nr := 0, bts_nr := 0, blk_nr := 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        f_rx_rlcmac_dl_block_exp_dummy(dl_block, nr := nr);</span><br><span style="color: hsl(120, 100%, 40%);">+   for (ts := 0; ts < 2; ts := ts + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+              nr := ts_TsTrxBtsNum(ts_nr := 7, trx_nr := ts, bts_nr := 0, blk_nr := 0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* TRX1 doesn't send dummy blocks when not needed, in order to honour energy saving: */</span><br><span style="color: hsl(0, 100%, 40%);">-     nr.trx_nr := 1;</span><br><span style="color: hsl(0, 100%, 40%);">- BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                 sapi := PCU_IF_SAPI_PDTCH, fn := 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                             arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)), block_nr := nr.blk_nr));</span><br><span style="color: hsl(0, 100%, 40%);">-  T.start(0.5);</span><br><span style="color: hsl(0, 100%, 40%);">-   alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] as_rx_fail_dummy(nr);</span><br><span style="color: hsl(0, 100%, 40%);">-        [] BTS.receive {</span><br><span style="color: hsl(0, 100%, 40%);">-                setverdict(fail, "Unexpected block from BTS");</span><br><span style="color: hsl(0, 100%, 40%);">-                f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] T.timeout {</span><br><span style="color: hsl(0, 100%, 40%);">-          setverdict(pass);</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(120, 100%, 40%);">+             BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       sapi := PCU_IF_SAPI_PDTCH, fn := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)), block_nr := nr.blk_nr));</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%);">+         [] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                omit)) -> value data_msg {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+                     T.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             [] as_rx_fail_dummy(nr);</span><br><span style="color: hsl(120, 100%, 40%);">+              [] BTS.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Unexpected block from BTS");</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(fail, "Expected IDLE block from BTS");</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%);">+             }</span><br><span>    }</span><br><span> </span><br><span>        f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25537">change 25537</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/+/25537"/><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: I6e96a7569640695ccfaa94b471384fa301bccd62 </div>
<div style="display:none"> Gerrit-Change-Number: 25537 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>