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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Introduce test TC_dyn_ts_sdcch8_all_subslots_used<br><br>Related: OS#5278<br>Related: SYS#5309<br>Change-Id: Iee37eef2012ce2c2e2f0a0db4c26abb75a947d84<br>---<br>M bsc/BSC_Tests.ttcn<br>1 file changed, 79 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 cebd634..ee4dac2 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -1672,6 +1672,37 @@</span><br><span>      return dt;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Like f_est_dchan(), but for the first lchan of a dynamic timeslot: first ACK the deactivation of PDCH. */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_est_dchan_dyn(OCT1 ra, GsmFrameNumber fn, octetstring l3)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT return DchanTuple {</span><br><span style="color: hsl(120, 100%, 40%);">+  var BSSAP_N_CONNECT_ind rx_c_ind;</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%);">+  /* Send CHAN RQD */</span><br><span style="color: hsl(120, 100%, 40%);">+   var RSL_Message rx_rsl;</span><br><span style="color: hsl(120, 100%, 40%);">+       f_ipa_tx(0, ts_RSL_CHAN_RQD(ra, fn));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* The dyn TS first deactivates PDCH */</span><br><span style="color: hsl(120, 100%, 40%);">+       rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);</span><br><span style="color: hsl(120, 100%, 40%);">+    dt.rsl_chan_nr := rx_rsl.ies[0].body.chan_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));</span><br><span style="color: hsl(120, 100%, 40%);">+        dt.rsl_chan_nr := rx_rsl.ies[0].body.chan_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Now activates the signalling channel */</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(dt.rsl_chan_nr, fn+10));</span><br><span style="color: hsl(120, 100%, 40%);">+      rx_rsl := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ipa_tx(0, ts_RSL_EST_IND(dt.rsl_chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;</span><br><span style="color: hsl(120, 100%, 40%);">+        dt.sccp_conn_id := rx_c_ind.connectionId;</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSAP.send(ts_BSSAP_CONNECT_res(dt.sccp_conn_id));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  return dt;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* expect RF CAN REL from BTS, acknowledge it and clear the MSC side */</span><br><span> private function f_exp_chan_rel_and_clear(DchanTuple dt, integer bts_nr := 0) runs on test_CT {</span><br><span>        var RSL_Message rx_rsl;</span><br><span>@@ -7241,6 +7272,53 @@</span><br><span>     f_shutdown_helper();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Validate all 8 subslots of a dynamics TS configured as SDCCH8 are used */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_dyn_ts_sdcch8_all_subslots_used() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var ASP_RSL_Unitdata rsl_ud;</span><br><span style="color: hsl(120, 100%, 40%);">+  var integer i;</span><br><span style="color: hsl(120, 100%, 40%);">+        var integer chreq_total, chreq_nochan;</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%);">+ for (i := 1; i < 8; i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+          if (i == 2) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 f_ts_set_chcomb(0, 0, i, "TCH/F_TCH/H_SDCCH8_PDCH");</span><br><span style="color: hsl(120, 100%, 40%);">+                } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      f_ts_set_chcomb(0, 0, i, "PDCH");</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%);">+     f_vty_transceive(BSCVTY, "drop bts connection 0 oml");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init(1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* The dyn TS want to activate PDCH mode, ACK that. */</span><br><span style="color: hsl(120, 100%, 40%);">+        var RslChannelNr chan_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+     chan_nr := valueof(t_RslChanNr_PDCH(2));</span><br><span style="color: hsl(120, 100%, 40%);">+      f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Exhaust all dedicated SDCCH lchans.</span><br><span style="color: hsl(120, 100%, 40%);">+        /* GSM 44.018 Table 9.1.8.2:</span><br><span style="color: hsl(120, 100%, 40%);">+   * RA = '13'O -> Establishment cause = 0001xxxx (MS dual rate capable and asks for "SDCCH").</span><br><span style="color: hsl(120, 100%, 40%);">+      */</span><br><span style="color: hsl(120, 100%, 40%);">+   for (i := 0; i < NUM_SDCCH_PER_BTS; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            f_est_dchan('13'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O);</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%);">+   /* Only the dyn TS is still available. Its first lchan gets converted to SDCCH8 */</span><br><span style="color: hsl(120, 100%, 40%);">+    f_est_dchan_dyn('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Also occupy the seven other SDCCH of the dyn TS */</span><br><span style="color: hsl(120, 100%, 40%);">+ for (i := 0; i < 7; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O);</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%);">+   /* clean up config */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ts_reset_chcomb(0);</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> /* Test Osmocom dyn TS SDCCH8 activation / deactivation: If activating dyn TS as</span><br><span>    SDCCH8 would end up in having no free TCH, then BSC should decide to activate</span><br><span>    it as TCH directly instead. SYS#5309. */</span><br><span>@@ -10517,6 +10595,7 @@</span><br><span>   execute( TC_dyn_pdch_osmo_act_nack() );</span><br><span>      if (mp_enable_dyn_sdcch8_test) {</span><br><span>             execute( TC_dyn_ts_sdcch8_act_deact() );</span><br><span style="color: hsl(120, 100%, 40%);">+              execute( TC_dyn_ts_sdcch8_all_subslots_used() );</span><br><span>             execute( TC_dyn_ts_sdcch8_tch_call_act_deact() );</span><br><span>            execute( TC_dyn_ts_sdcch8_act_nack() );</span><br><span>      }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25938">change 25938</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/+/25938"/><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: Iee37eef2012ce2c2e2f0a0db4c26abb75a947d84 </div>
<div style="display:none"> Gerrit-Change-Number: 25938 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </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: 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: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>