<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21735">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: 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;">SGSN_Tests: test RIM message passing<br><br>Add a testcase to test if RIM messages can be passed on the SGSN back<br>and forth.<br><br>Related: SYS#5103<br><br>Change-Id: If0ab08dcdc28819740cc07fd4dc1fea47ba10843<br>Related: SYS#5103<br>---<br>M sgsn/SGSN_Tests.ttcn<br>1 file changed, 90 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn</span><br><span>index 8e7d6e4..fe31ffc 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -171,6 +171,9 @@</span><br><span>         /* only needed at start to get the per-BVC references */</span><br><span>     port BSSGP_CT_PROC_PT PROC;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       /* used by RIM related test */</span><br><span style="color: hsl(120, 100%, 40%);">+        port BSSGP_PT RIM[NUM_GB];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var GTP_Emulation_CT vc_GTP;</span><br><span> </span><br><span>     port TELNETasp_PT SGSNVTY;</span><br><span>@@ -247,6 +250,8 @@</span><br><span>             gb.vc_BSSGP_BVC[i] := f_bssgp_get_bvci_ct(gb.cfg.bvc[i].bvci, PROC);</span><br><span>                 disconnect(self:PROC, gb.vc_BSSGP:PROC);</span><br><span>     }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* connect RIM related port */</span><br><span style="color: hsl(120, 100%, 40%);">+        connect(gb.vc_BSSGP:RIM, self:RIM[offset]);</span><br><span> }</span><br><span> </span><br><span> private function f_init_gsup(charstring id) runs on test_CT {</span><br><span>@@ -3130,9 +3135,92 @@</span><br><span>       f_cleanup();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_bssgp_rim_dummy(charstring id) runs on BSSGP_ConnHdlr {</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%);">+/* Run a RIM single report procedure over the sgsn. Since the SGSN will only do a transparent routing of the</span><br><span style="color: hsl(120, 100%, 40%);">+ * RIM messages this basically tests if the message is correctly transfered from one GB interface to the</span><br><span style="color: hsl(120, 100%, 40%);">+ * other and vice versa. */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_bssgp_rim_single_report() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var BSSGP_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     vc_conn := f_start_handler(refers(f_TC_bssgp_rim_dummy), testcasename(), g_gb, 17);</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%);">+       timer T := 2.0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     var template RIM_Routing_Address dst_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+    var template RIM_Routing_Address src_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+    var template RAN_Information_Request_RIM_Container req_cont;</span><br><span style="color: hsl(120, 100%, 40%);">+  var template RAN_Information_RIM_Container res_cont;</span><br><span style="color: hsl(120, 100%, 40%);">+  var template PDU_BSSGP bssgp_rim_pdu;</span><br><span style="color: hsl(120, 100%, 40%);">+ var template PDU_BSSGP bssgp_rim_pdu_expect;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        dst_addr := t_RIM_Routing_Address_cid(g_gb[1].cfg.bvc[0].cell_id);</span><br><span style="color: hsl(120, 100%, 40%);">+    src_addr := t_RIM_Routing_Address_cid(g_gb[0].cfg.bvc[0].cell_id);</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    /* Send NACC Ran information request to SGSN at GB interface #0. We epect the SGSN to forward this request</span><br><span style="color: hsl(120, 100%, 40%);">+     * based on the cell id in dst_addr to GB interface #1. */</span><br><span style="color: hsl(120, 100%, 40%);">+    req_cont := ts_RAN_Information_Request_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         ts_RIM_Sequence_Number(1),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_SING_REP),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         ts_RIM_Protocol_Version_Number(1),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            tsu_RAN_Information_Request_Application_Container_NACC(g_gb[1].cfg.bvc[0].cell_id),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                           omit);</span><br><span style="color: hsl(120, 100%, 40%);">+   bssgp_rim_pdu := ts_RAN_INFORMATION_REQUEST(ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 req_cont);</span><br><span style="color: hsl(120, 100%, 40%);">+        bssgp_rim_pdu_expect := tr_RAN_INFORMATION_REQUEST(tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         tr_RAN_Information_Request_RIM_Container);</span><br><span style="color: hsl(120, 100%, 40%);">+ RIM[0].send(bssgp_rim_pdu);</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%);">+         [] RIM[1].receive(bssgp_rim_pdu_expect) { }</span><br><span style="color: hsl(120, 100%, 40%);">+           [] RIM[1].receive {</span><br><span style="color: hsl(120, 100%, 40%);">+                   setverdict(fail, "Unexpected BSSGP RIM PDU received");</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, "No BSSGP RIM PDU received");</span><br><span style="color: hsl(120, 100%, 40%);">+                      mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Now also emulate also the response as well and send it back on GB interface #1. Expect the result on</span><br><span style="color: hsl(120, 100%, 40%);">+        * GB interface #0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ var octetstring si1 := '198fb100000000000000000000000000007900002b'O;</span><br><span style="color: hsl(120, 100%, 40%);">+ var octetstring si3 := '1b753000f110236ec9033c2747407900003c0b2b2b'O;</span><br><span style="color: hsl(120, 100%, 40%);">+ var octetstring si13 := '009000185a6fc9e08410ab2b2b2b2b2b2b2b2b2b2b'O;</span><br><span style="color: hsl(120, 100%, 40%);">+        var octetstring si := si1 & si3 & si13;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     res_cont := ts_RAN_Information_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 ts_RIM_Sequence_Number(2),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_SING_REP),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 ts_RIM_Protocol_Version_Number(1),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    tsu_ApplContainer_or_ApplErrContainer_NACC(tsu_ApplContainer_NACC(g_gb[0].cfg.bvc[0].cell_id, false, 3, si)),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 omit);</span><br><span style="color: hsl(120, 100%, 40%);">+   bssgp_rim_pdu := ts_PDU_BSSGP_RAN_INFORMATION(ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                       ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                         res_cont);</span><br><span style="color: hsl(120, 100%, 40%);">+        bssgp_rim_pdu_expect := tr_PDU_BSSGP_RAN_INFORMATION(tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         ?);</span><br><span style="color: hsl(120, 100%, 40%);">+      RIM[1].send(bssgp_rim_pdu);</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%);">+         [] RIM[0].receive(bssgp_rim_pdu_expect) { }</span><br><span style="color: hsl(120, 100%, 40%);">+           [] RIM[0].receive {</span><br><span style="color: hsl(120, 100%, 40%);">+                   setverdict(fail, "Unexpected BSSGP RIM PDU received");</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, "No BSSGP RIM PDU received");</span><br><span style="color: hsl(120, 100%, 40%);">+                      mtc.stop;</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%);">+   f_cleanup();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> control {</span><br><span>     execute( TC_attach() );</span><br><span>@@ -3196,6 +3284,8 @@</span><br><span>      execute( TC_suspend_rau() );</span><br><span>         execute( TC_paging_ps() );</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_bssgp_rim_single_report() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* At the end, may crash osmo-sgsn, see OS#3957, OS#4245 */</span><br><span>  execute( TC_attach_req_id_req_ra_update() );</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21735">change 21735</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/+/21735"/><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: If0ab08dcdc28819740cc07fd4dc1fea47ba10843 </div>
<div style="display:none"> Gerrit-Change-Number: 21735 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@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>