<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19926">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BSC_Tests/hopping: add TC_fh_params_assignment_cmd<br><br>Change-Id: Id12509385b444c426f4af7a0cf0d46efe2cb0eda<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;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/26/19926/1</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 53c133b..578b207 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -7069,6 +7069,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>@@ -7300,6 +7379,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: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>