<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>