<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/14192">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Add TC_pcu_rr_suspend() to test forwarding of RR SUSPEND via PCU socket<br><br>This test opens a SDCCH and sends a RR SUSPEND message from the<br>simulated MS.  It then expects the BTS to pick that up and forward<br>it to the PCU socket rather than via RSL to the BSC.<br><br>Change-Id: I4da6e9d7c5dfbd0e017d2a63c6474da700c38e52<br>Related: OS#2249<br>Related: OS#4023<br>---<br>M bts/BTS_Tests.ttcn<br>M library/PCUIF_Types.ttcn<br>2 files changed, 77 insertions(+), 1 deletion(-)<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 d9e989c..21e5634 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -32,6 +32,8 @@</span><br><span> import from MobileL3_RRM_Types all;</span><br><span> import from MobileL3_Types all;</span><br><span> import from L3_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from L3_Common all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MobileL3_GMM_SM_Types all;</span><br><span> </span><br><span> import from Osmocom_VTY_Functions all;</span><br><span> import from TELNETasp_PortType all;</span><br><span>@@ -3799,6 +3801,77 @@</span><br><span>        setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PDU_ML3_MS_NW ts_RRM_GprsSuspReq(template (value) OCT4 tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               template (value) RoutingAreaIdentificationV rai,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              template (value) OCT1 cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+   discriminator := '0000'B, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+   tiOrSkip := {</span><br><span style="color: hsl(120, 100%, 40%);">+ skipIndicator := '0000'B</span><br><span style="color: hsl(120, 100%, 40%);">+      },</span><br><span style="color: hsl(120, 100%, 40%);">+    msgs := {</span><br><span style="color: hsl(120, 100%, 40%);">+             rrm := {</span><br><span style="color: hsl(120, 100%, 40%);">+                      gPRS_suspensionRequest := {</span><br><span style="color: hsl(120, 100%, 40%);">+                           messageType := '00110100'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                           tLLI := tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+                         routingAreaIdentification := rai,</span><br><span style="color: hsl(120, 100%, 40%);">+                             suspensionCause := cause,</span><br><span style="color: hsl(120, 100%, 40%);">+                             service_Support := omit</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%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* test for forwarding of RR SUSPEND from CS lchan to PCU via PCU socket */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_rr_suspend_req(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+   var PCUIF_Message first_info;</span><br><span style="color: hsl(120, 100%, 40%);">+ var integer pcu_conn_id := -1;</span><br><span style="color: hsl(120, 100%, 40%);">+        var RslLinkId link_id := valueof(ts_RslLinkID_DCCH(0));</span><br><span style="color: hsl(120, 100%, 40%);">+       var RoutingAreaIdentificationV rai := f_RAI('262'H, '42F'H, '2342'O, '55'O);</span><br><span style="color: hsl(120, 100%, 40%);">+  var OCT4 tlli := '01020304'O;</span><br><span style="color: hsl(120, 100%, 40%);">+ var OCT1 cause := '23'O;</span><br><span style="color: hsl(120, 100%, 40%);">+      timer T := 5.0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init_pcu(PCU, id, pcu_conn_id, first_info);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_l1_tune(L1CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_est_dchan();</span><br><span style="color: hsl(120, 100%, 40%);">+        L1CTL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_est_rll_mo(link_id.sapi, link_id, '23420815'O);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   var PDU_ML3_MS_NW susp_req := valueof(ts_RRM_GprsSuspReq(tlli, rai, cause));</span><br><span style="color: hsl(120, 100%, 40%);">+  var octetstring l3 := enc_PDU_ML3_MS_NW(susp_req);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_tx_lapdm(ts_LAPDm_I(link_id.sapi, cr_MO_CMD, true, 1, 0, l3), link_id);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* ConnHdlr has terminated after sending the RR SUSP REQ over a dedicaed channel */</span><br><span style="color: hsl(120, 100%, 40%);">+   T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_SUSP_REQ(0, tlli, ?, oct2int(cause)))) {</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%);">+     [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_SUSP_REQ(?, ?, ?, ?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Received unexpected PCUIF SUSPE REQ: ");</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] PCU.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+              repeat;</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, "Timeout waiting for SUSP REQ on PCUIF");</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%);">+testcase TC_pcu_rr_suspend() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var ConnHdlrPars pars;</span><br><span style="color: hsl(120, 100%, 40%);">+        var ConnHdlr vc_conn;</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%);">+   pars := valueof(t_Pars(t_RslChanNr_SDCCH4(0,3), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+       vc_conn := f_start_handler(refers(f_TC_rr_suspend_req), pars, true);</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> </span><br><span> /***********************************************************************</span><br><span>@@ -5107,6 +5180,7 @@</span><br><span>                 execute( TC_pcu_time_ind() );</span><br><span>                execute( TC_pcu_rts_req() );</span><br><span>                 execute( TC_pcu_oml_alert() );</span><br><span style="color: hsl(120, 100%, 40%);">+                execute( TC_pcu_rr_suspend() );</span><br><span>      } else {</span><br><span>             log("PCU socket path not available, skipping PCU tests");</span><br><span>  }</span><br><span>diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn</span><br><span>index 750e0b4..455082a 100644</span><br><span>--- a/library/PCUIF_Types.ttcn</span><br><span>+++ b/library/PCUIF_Types.ttcn</span><br><span>@@ -193,7 +193,9 @@</span><br><span>         OCT4            tlli,</span><br><span>        OCT6            ra_id,</span><br><span>       uint8_t         cause</span><br><span style="color: hsl(0, 100%, 40%);">-} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+       variant (tlli) "BYTEORDER(last)"</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span> </span><br><span> </span><br><span> type union PCUIF_MsgUnion {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14192">change 14192</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/14192"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I4da6e9d7c5dfbd0e017d2a63c6474da700c38e52 </div>
<div style="display:none"> Gerrit-Change-Number: 14192 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>