<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13859">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">SGSN_Tests: Make more helper functions gb_index aware<br><br>The gb_index indicates through which Gb link (simulated<br>RAN/PCU) a given message shall be sent.<br><br>Change-Id: I3825634f581897f6951d9673984f138e977cc7ac<br>---<br>M sgsn/SGSN_Tests.ttcn<br>1 file changed, 32 insertions(+), 23 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/59/13859/1</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 a4934ae..9f7e49d 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -1081,7 +1081,8 @@</span><br><span>    f_gtp_register_teid(apars.ggsn_tei_u);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_pdp_ctx_act(inout PdpActPars apars, boolean send_recovery := false) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_pdp_ctx_act(inout PdpActPars apars, boolean send_recovery := false, integer gb_idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on BSSGP_ConnHdlr {</span><br><span>        var boolean exp_rej := ispresent(apars.exp_rej_cause);</span><br><span>       var Gtp1cUnitdata g_ud;</span><br><span>      var template Recovery_gtpc recovery := omit;</span><br><span>@@ -1091,7 +1092,7 @@</span><br><span>         }</span><br><span> </span><br><span>        f_send_l3_gmm_llc(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span style="color: hsl(0, 100%, 40%);">-                               apars.apn, apars.pco));</span><br><span style="color: hsl(120, 100%, 40%);">+                               apars.apn, apars.pco), gb_idx);</span><br><span>         GTP.receive(tr_GTPC_MsgType(?, createPDPContextRequest, ?)) -> value g_ud {</span><br><span>               f_process_gtp_ctx_act_req(apars, g_ud.gtpc);</span><br><span>                 var integer seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber);</span><br><span>@@ -1103,48 +1104,54 @@</span><br><span>                                          omit, recovery));</span><br><span>    }</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) {</span><br><span style="color: hsl(120, 100%, 40%);">+  [exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) {</span><br><span>            setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT)) {</span><br><span style="color: hsl(120, 100%, 40%);">+       [exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT)) {</span><br><span>                 setverdict(fail, "Unexpected PDP CTX ACT ACC");</span><br><span>            mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [not exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+        [not exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) {</span><br><span>          setverdict(fail, "Unexpected PDP CTX ACT FAIL");</span><br><span>           mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [not exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi))) {</span><br><span style="color: hsl(120, 100%, 40%);">+    [not exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+           setverdict(fail, "Unexpected PDP CTX ACT FAIL");</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%);">+     [not exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi))) {</span><br><span>              setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] as_xid(apars);</span><br><span style="color: hsl(120, 100%, 40%);">+     [] as_xid(apars, gb_idx);</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_pdp_ctx_deact_mo(inout PdpActPars apars, OCT1 cause) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_pdp_ctx_deact_mo(inout PdpActPars apars, OCT1 cause, integer gb_idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on BSSGP_ConnHdlr {</span><br><span>   var boolean exp_rej := ispresent(apars.exp_rej_cause);</span><br><span>       var Gtp1cUnitdata g_ud;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     f_send_l3_gmm_llc(ts_SM_DEACT_PDP_REQ_MO(apars.tid, cause, false, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+     f_send_l3_gmm_llc(ts_SM_DEACT_PDP_REQ_MO(apars.tid, cause, false, omit), gb_idx);</span><br><span>    GTP.receive(tr_GTPC_MsgType(?, deletePDPContextRequest, apars.ggsn_tei_c)) -> value g_ud {</span><br><span>                var integer seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber);</span><br><span style="color: hsl(0, 100%, 40%);">-               BSSGP[0].clear;</span><br><span style="color: hsl(120, 100%, 40%);">+               BSSGP[gb_idx].clear;</span><br><span>                 GTP.send(ts_GTPC_DeletePdpResp(g_ud.peer, seq_nr, apars.sgsn_tei_c, '7F'O));</span><br><span>         }</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))) {</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))) {</span><br><span>                setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] as_xid(apars);</span><br><span style="color: hsl(120, 100%, 40%);">+     [] as_xid(apars, gb_idx);</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_pdp_ctx_deact_mt(inout PdpActPars apars, boolean error_ind := false) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_pdp_ctx_deact_mt(inout PdpActPars apars, boolean error_ind := false, integer gb_idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on BSSGP_ConnHdlr {</span><br><span>   var Gtp1cUnitdata g_ud;</span><br><span>      var integer seq_nr := 23;</span><br><span>    var GtpPeer peer := valueof(ts_GtpPeerC(apars.sgsn_ip_c));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  BSSGP[0].clear;</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[gb_idx].clear;</span><br><span>         if (error_ind) {</span><br><span>             GTP.send(ts_GTPU_ErrorIndication(peer, 0 /* seq */, apars.ggsn_tei_u, apars.ggsn_ip_u));</span><br><span>     } else {</span><br><span>@@ -1155,8 +1162,8 @@</span><br><span>     T.start;</span><br><span> </span><br><span>         alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {</span><br><span style="color: hsl(0, 100%, 40%);">-          f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {</span><br><span style="color: hsl(120, 100%, 40%);">+           f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid), gb_idx);</span><br><span>             }</span><br><span>    [not error_ind] GTP.receive(tr_GTPC_MsgType(?, deletePDPContextResponse, apars.ggsn_tei_c)) {</span><br><span>                repeat;</span><br><span>@@ -1259,8 +1266,8 @@</span><br><span>      GTP.send(ts_GTP1U_GPDU(peer, 0 /*seq*/, apars.sgsn_tei_u, payload));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private altstep as_xid(PdpActPars apars) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-  [] BSSGP[0].receive(tr_BD_LLC(tr_LLC_XID_MT_CMD(?, apars.sapi))) {</span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_xid(PdpActPars apars, integer gb_idx := 0) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+    [] BSSGP[gb_idx].receive(tr_BD_LLC(tr_LLC_XID_MT_CMD(?, apars.sapi))) {</span><br><span>              repeat;</span><br><span>      }</span><br><span> }</span><br><span>@@ -1299,22 +1306,24 @@</span><br><span> }</span><br><span> </span><br><span> /* Transceive given 'payload' as MT message from GTP -> OsmoSGSN -> Gb */</span><br><span style="color: hsl(0, 100%, 40%);">-private function f_gtpu_xceive_mt(inout PdpActPars apars, octetstring payload) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_gtpu_xceive_mt(inout PdpActPars apars, octetstring payload, integer gb_idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on BSSGP_ConnHdlr {</span><br><span>   /* Send PDU via GTP from our simulated GGSN to the SGSN */</span><br><span>   f_gtpu_send(apars, payload);</span><br><span>         /* Expect PDU via BSSGP/LLC on simulated PCU from SGSN */</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] as_xid(apars);</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP[0].receive(tr_BD_SNDCP(apars.sapi, tr_SN_UD(apars.nsapi, payload)));</span><br><span style="color: hsl(120, 100%, 40%);">+ [] as_xid(apars, gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[gb_idx].receive(tr_BD_SNDCP(apars.sapi, tr_SN_UD(apars.nsapi, payload)));</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span> /* Transceive given 'payload' as MT message from Gb -> OsmoSGSN -> GTP */</span><br><span style="color: hsl(0, 100%, 40%);">-private function f_gtpu_xceive_mo(inout PdpActPars apars, octetstring payload) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_gtpu_xceive_mo(inout PdpActPars apars, octetstring payload, integer gb_idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on BSSGP_ConnHdlr {</span><br><span>  /* Send PDU via SNDCP/LLC/BSSGP/NS via simulated MS/PCU to the SGSN */</span><br><span>       var GtpPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));</span><br><span>   var PDU_SN sndcp := valueof(ts_SN_UD(apars.nsapi, payload));</span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP[0].send(ts_LLC_UI(enc_PDU_SN(sndcp), apars.sapi, '0'B, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP[gb_idx].send(ts_LLC_UI(enc_PDU_SN(sndcp), apars.sapi, '0'B, 0));</span><br><span>       /* Expect PDU via GTP from SGSN on simulated GGSN */</span><br><span>         alt {</span><br><span>        [] GTP.receive(tr_GTPU_GPDU(peer, apars.ggsn_tei_u, payload));</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13859">change 13859</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/13859"/><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: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I3825634f581897f6951d9673984f138e977cc7ac </div>
<div style="display:none"> Gerrit-Change-Number: 13859 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>