<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19926">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BSC_Tests/hopping: add TC_fh_params_assignment_cmd<br><br>This test case verifies presence and correctness of the hopping<br>parameters in the following messages and their IEs:<br><br> 1. (RR) Assignment Command<br> 1.1. Description of the First Channel, after time IE<br> 1.2. Mobile Allocation, after time IE<br><br>Change-Id: Id12509385b444c426f4af7a0cf0d46efe2cb0eda<br>Related: SYS#4868, OS#4545<br>---<br>M bsc/BSC_Tests.ttcn<br>1 file changed, 80 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 309802f..d0719a9 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -7072,6 +7072,85 @@</span><br><span> setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify the hopping parameters (HSN, MAIO, MA) in (RR) Assignment Command */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_fh_params_assignment_cmd() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var FHParamsTrx fhp := f_TC_fh_params_gen();</span><br><span style="color: hsl(120, 100%, 40%);">+ var RSL_Message rsl_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+ var RSL_IE_Body ie;</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_TC_fh_params_set(fhp); /* Enable frequency hopping */</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%);">+ /* HACK: work around "Couldn't find Expect for CRCX" */</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_MGCP.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ var template PDU_BSSAP ass_cmd := f_gen_ass_req();</span><br><span style="color: hsl(120, 100%, 40%);">+ ass_cmd.pdu.bssmap.assignmentRequest.codecList := ts_BSSMAP_IE_CodecList({ts_CodecFR});</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* CS domain (TCH): 4 (TCH/F) + 2 (TCH/H) channels available</span><br><span style="color: hsl(120, 100%, 40%);">+ * NOTE: only 3 SDCCH/4 channels are available on CCCH+SDCCH4+CBCH */</span><br><span style="color: hsl(120, 100%, 40%);">+ for (var integer i := 0; i < 3; i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Establish a dedicated channel, so we can trigger (late) TCH assignment */</span><br><span style="color: hsl(120, 100%, 40%);">+ var DchanTuple dt := f_est_dchan(f_rnd_ra_cs(), 23, f_rnd_octstring(16));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Send a BSSMAP Assignment Command, expect CHANnel ACTIVation */</span><br><span style="color: hsl(120, 100%, 40%);">+ BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ass_cmd));</span><br><span style="color: hsl(120, 100%, 40%);">+ rsl_msg := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* ACKnowledge CHANnel ACTIVation, expect RSL DATA REQuest */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(rsl_msg.ies[0].body.chan_nr, 33));</span><br><span style="color: hsl(120, 100%, 40%);">+ rsl_msg := f_exp_ipa_rx(0, tr_RSL_MsgTypeR(RSL_MT_DATA_REQ));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Make sure that L3 Information IE is present */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not f_rsl_find_ie(rsl_msg, RSL_IE_L3_INFO, ie)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "RSL L3 Information IE is absent");</span><br><span style="color: hsl(120, 100%, 40%);">+ continue;</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%);">+ /* Decode the L3 message and make sure it is (RR) Assignment Command */</span><br><span style="color: hsl(120, 100%, 40%);">+ var GsmRrL3Message l3_msg := dec_GsmRrL3Message(ie.l3_info.payload);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not match(l3_msg.header, t_RrL3Header(ASSIGNMENT_COMMAND))) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "Failed to match Assignment Command: ", l3_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+ continue;</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%);">+ /* Make sure that hopping parameters (HSN/MAIO) match */</span><br><span style="color: hsl(120, 100%, 40%);">+ var ChannelDescription chan_desc := l3_msg.payload.ass_cmd.chan_desc;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_TC_fh_params_match_chan_desc(fhp, chan_desc);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Make sure that Cell Channel Description IE is present if FH is enabled */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (chan_desc.h and not ispresent(l3_msg.payload.ass_cmd.cell_chan_desc)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "FH enabled, but Mobile Allocation IE is absent");</span><br><span style="color: hsl(120, 100%, 40%);">+ continue;</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%);">+ /* Make sure that the Mobile Allocation IE matches (if present) */</span><br><span style="color: hsl(120, 100%, 40%);">+ var boolean ma_present := ispresent(l3_msg.payload.ass_cmd.mobile_allocation);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (chan_desc.h and ma_present) {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_TC_fh_params_match_ma(fhp, chan_desc.chan_nr.tn,</span><br><span style="color: hsl(120, 100%, 40%);">+ l3_msg.payload.ass_cmd.mobile_allocation.v);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (chan_desc.h and not ma_present) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "FH enabled, but Mobile Allocation IE is absent");</span><br><span style="color: hsl(120, 100%, 40%);">+ continue;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (not chan_desc.h and ma_present) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "FH disabled, but Mobile Allocation IE is present");</span><br><span style="color: hsl(120, 100%, 40%);">+ continue;</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%);">+ /* Give the IUT some time to release all channels */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_sleep(3.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Disable frequency hopping */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_TC_fh_params_unset(fhp);</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> /* Dyn PDCH todo:</span><br><span> * activate OSMO as TCH/F</span><br><span> * activate OSMO as TCH/H</span><br><span>@@ -7303,6 +7382,7 @@</span><br><span> /* Frequency hopping parameters handling */</span><br><span> execute( TC_fh_params_chan_activ() );</span><br><span> execute( TC_fh_params_imm_ass() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_fh_params_assignment_cmd() );</span><br><span> }</span><br><span> </span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19926">change 19926</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/+/19926"/><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: Id12509385b444c426f4af7a0cf0d46efe2cb0eda </div>
<div style="display:none"> Gerrit-Change-Number: 19926 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </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: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>