<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25907">View Change</a></p><div style="white-space:pre-wrap">Approvals:
laforge: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
osmith: Looks good to me, but someone else must approve
Jenkins Builder: Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BTS_Tests: separate RACH / IMM ASS from f_est_dchan()<br><br>Given that the test suite acts as the BSC, it's known in advance<br>which exact logical channel is going to be activated. Therefore,<br>it's not necessary to send an Immediate Assignment with the known<br>Channel Description IE over the Um interface (via L1CTL).<br><br>On the other hand, we may still want to validate the process of<br>dedicated channel establishment, involving the use of Immediate<br>Assignment procedure. So instead of doing this every time when<br>a ConnHdlr component needs to activate a logical channel, let's<br>split the existing logic into a separate test case - TC_est_dchan.<br><br>This change facilitates the goal of running test cases against<br>additional transceivers (not only against C0). Currently this<br>is not possible, because a ConnHdlr component has no access to<br>C0/AGCH when executed on Cx > 0.<br><br>Change-Id: I8df3db36f35190241735629a961f09d73bd0e5f5<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 62 insertions(+), 20 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 d7419a9..5757e35 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -2232,13 +2232,7 @@</span><br><span> </span><br><span> /* Establish dedicated channel: L1CTL + RSL side */</span><br><span> private function f_est_dchan(boolean encr_enable := false, RSL_IE_List more_ies := {}) runs on ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">- var GsmFrameNumber fn;</span><br><span style="color: hsl(0, 100%, 40%);">- var ImmediateAssignment imm_ass;</span><br><span> var ChannelDescription ch_desc;</span><br><span style="color: hsl(0, 100%, 40%);">- var integer ra := 23;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Send RACH request and wait for ChanReq */</span><br><span style="color: hsl(0, 100%, 40%);">- fn := f_rach_req_wait_chan_rqd(ra);</span><br><span> </span><br><span> /* Activate channel on BTS side */</span><br><span> f_rsl_chan_act(g_pars.chan_mode, encr_enable, more_ies);</span><br><span>@@ -2250,21 +2244,9 @@</span><br><span> ch_desc := valueof(ts_ChanDescH0(g_pars.chan_nr, mp_trx_pars[0].arfcn, g_pars.tsc));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* Send IMM.ASS via CCHAN */</span><br><span style="color: hsl(0, 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(0, 100%, 40%);">- RSL.send(ts_RSL_IMM_ASSIGN(enc_GsmRrMessage(rr_msg)));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* receive IMM.ASS on MS side */</span><br><span style="color: hsl(0, 100%, 40%);">- var ImmediateAssignment ia_um;</span><br><span style="color: hsl(0, 100%, 40%);">- ia_um := f_L1CTL_WAIT_IMM_ASS(L1CTL, ra, fn);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Make sure that IMM.ASS contains hopping parameters (if enabled) */</span><br><span style="color: hsl(0, 100%, 40%);">- if (ch_desc.h != ia_um.chan_desc.h) {</span><br><span style="color: hsl(0, 100%, 40%);">- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Hopping parameters mismatch");</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* enable dedicated mode */</span><br><span style="color: hsl(0, 100%, 40%);">- f_L1CTL_DM_EST_REQ_IA(L1CTL, ia_um, ma := g_pars.fhp.ma);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_l1ctl_est_dchan(L1CTL, g_pars);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* enable encryption, if requested */</span><br><span> if (encr_enable) {</span><br><span> var uint8_t alg_id := f_alg_id_to_l1ctl(g_pars.encr.alg_id);</span><br><span>@@ -7909,6 +7891,65 @@</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_est_dchan(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+ var integer ra := oct2int(f_rnd_ra_cs());</span><br><span style="color: hsl(120, 100%, 40%);">+ var ChannelDescription ch_desc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Tune the MS to BCCH */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_l1_tune(L1CTL);</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%);">+ var GsmFrameNumber 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%);">+ /* Activate channel on the BTS side */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_rsl_chan_act(g_pars.chan_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Craft channel description (with or without frequency hopping parameters) */</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Send IMM.ASS via CCHAN */</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%);">+ /* Receive IMM.ASS on the MS side */</span><br><span style="color: hsl(120, 100%, 40%);">+ var ImmediateAssignment imm_ass := f_L1CTL_WAIT_IMM_ASS(L1CTL, ra, fn);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Match the Channel Description IE in received IMM.ASS */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not match(imm_ass.chan_desc, ch_desc)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "Channel Description IE does not match");</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 style="color: hsl(120, 100%, 40%);">+ /* Tune the MS to a dedicated channel indicated in the IMM.ASS */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_L1CTL_DM_EST_REQ_IA(L1CTL, imm_ass, g_pars.fhp.ma);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Expect SACCH frames on Downlink */</span><br><span style="color: hsl(120, 100%, 40%);">+ L1CTL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_exp_sacch(true);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* We're done, deactivate and release */</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%);">+ f_rsl_chan_deact();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_est_dchan() 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;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ for (var integer i := 0; i < sizeof(g_AllChannels); i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+ pars := valueof(t_Pars(g_AllChannels[i], ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_conn := f_start_handler(refers(f_TC_est_dchan), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_conn.done;</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%);">+ 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>@@ -7940,6 +7981,7 @@</span><br><span> */</span><br><span> </span><br><span> control {</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_est_dchan() );</span><br><span> execute( TC_chan_act_stress() );</span><br><span> execute( TC_chan_act_react() );</span><br><span> execute( TC_chan_deact_not_active() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25907">change 25907</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/+/25907"/><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: I8df3db36f35190241735629a961f09d73bd0e5f5 </div>
<div style="display:none"> Gerrit-Change-Number: 25907 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </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>