<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21225">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gbproxy: Add test for load sharing function in SGSN->PCU direction<br><br>Related: SYS#5209<br>Change-Id: Ide733d7659ff7f341bedc61fc90947f74d7c4ac3<br>---<br>M gbproxy/GBProxy_Tests.ttcn<br>1 file changed, 77 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/25/21225/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn</span><br><span>index e690f34..1fc041a 100644</span><br><span>--- a/gbproxy/GBProxy_Tests.ttcn</span><br><span>+++ b/gbproxy/GBProxy_Tests.ttcn</span><br><span>@@ -757,6 +757,79 @@</span><br><span> }</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* test the load-sharing between multiple NS-VC on the BSS side */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_dl_ud_unidir(charstring id) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+     var integer i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      for (i := 0; i < 10; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           var octetstring payload := f_rnd_octstring(i);</span><br><span style="color: hsl(120, 100%, 40%);">+                var template (value) PDU_BSSGP pdu_tx :=</span><br><span style="color: hsl(120, 100%, 40%);">+                      ts_BSSGP_DL_UD(g_pars.tlli, payload, omit, ts_BSSGP_IMSI(g_pars.imsi));</span><br><span style="color: hsl(120, 100%, 40%);">+               SGSN[0].send(pdu_tx);</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%);">+testcase TC_load_sharing_dl() runs on test_CT_NS</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     const integer num_ue := 10;</span><br><span style="color: hsl(120, 100%, 40%);">+   var BSSGP_ConnHdlr vc_conn[num_ue];</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%);">+   /* all BVC are now fully brought up.  We disconnect BSSGP from NS on the BSS</span><br><span style="color: hsl(120, 100%, 40%);">+   * side so we get the raw NsUnitdataIndication and hence observe different</span><br><span style="color: hsl(120, 100%, 40%);">+     * NSVCI */</span><br><span style="color: hsl(120, 100%, 40%);">+   disconnect(g_pcu[0].vc_NS:NS_SP, g_pcu[0].vc_BSSGP:BSCP);</span><br><span style="color: hsl(120, 100%, 40%);">+     connect(g_pcu[0].vc_NS:NS_SP, self:NS);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* there may still be some NS-VCs coming up? After all, the BVC-RESET succeeds after the first</span><br><span style="color: hsl(120, 100%, 40%);">+         * of the NS-VC is ALIVE/UNBLOCKED */</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%);">+       /* start parallel components generating DL-UNITDATA from the SGSN side */</span><br><span style="color: hsl(120, 100%, 40%);">+     for (var integer i:= 0; i < num_ue; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            vc_conn[i] := f_start_handler(refers(f_TC_dl_ud_unidir), testcasename(), g_pcu, g_sgsn, 5+i);</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%);">+   /* now start counting all the messages that were queued before */</span><br><span style="color: hsl(120, 100%, 40%);">+     /* TODO: We have a hard-coded assumption of 4 NS-VC in one NSE/NS-VCG here! */</span><br><span style="color: hsl(120, 100%, 40%);">+        var ro_integer rx_count := { 0, 0, 0, 0 };</span><br><span style="color: hsl(120, 100%, 40%);">+    timer T := 2.0;</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%);">+ [] as_NsUdiCount(0, rx_count);</span><br><span style="color: hsl(120, 100%, 40%);">+        [] as_NsUdiCount(1, rx_count);</span><br><span style="color: hsl(120, 100%, 40%);">+        [] as_NsUdiCount(2, rx_count);</span><br><span style="color: hsl(120, 100%, 40%);">+        [] as_NsUdiCount(3, rx_count);</span><br><span style="color: hsl(120, 100%, 40%);">+        [] NS.receive(NsUnitdataIndication:{0,?,?,*,*}) { repeat; } /* signaling BVC */</span><br><span style="color: hsl(120, 100%, 40%);">+       [] NS.receive(NsStatusIndication:?) { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+       [] NS.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Rx unexpected NS");</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%);">+     [] T.timeout {</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%);">+     for (var integer i := 0; i < lengthof(rx_count); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               log("Rx on NSVCI ", mp_nsconfig_pcu[0].nsvc[i].nsvci, ": ", rx_count[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (rx_count[i] == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       setverdict(fail, "Data not shared over all NSVC");</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%);">+     setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_NsUdiCount(integer nsvc_idx, inout ro_integer roi) runs on test_CT_NS {</span><br><span style="color: hsl(120, 100%, 40%);">+      var NsUnitdataIndication udi;</span><br><span style="color: hsl(120, 100%, 40%);">+ var BssgpBvcConfig bvcc := g_pcu[0].cfg.bvc[0];</span><br><span style="color: hsl(120, 100%, 40%);">+       [] NS.receive(NsUnitdataIndication:{bvcc.bvci, g_pcu[0].cfg.nsei, mp_nsconfig_pcu[0].nsvc[nsvc_idx].nsvci, *, *}) -> value udi {</span><br><span style="color: hsl(120, 100%, 40%);">+           roi[nsvc_idx] := roi[nsvc_idx] + 1;</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%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+type component test_CT_NS extends test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     port NS_PT NS;</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> </span><br><span> </span><br><span> control {</span><br><span>@@ -765,6 +838,10 @@</span><br><span>   execute( TC_dl_unitdata() );</span><br><span>         execute( TC_ra_capability() );</span><br><span>       execute( TC_ra_capability_upd() );</span><br><span style="color: hsl(120, 100%, 40%);">+    if (false) {</span><br><span style="color: hsl(120, 100%, 40%);">+          /* don't enable this by default, as we don't yet have any automatic test setup for FR with 4 NS-VC */</span><br><span style="color: hsl(120, 100%, 40%);">+         execute( TC_load_sharing_dl() );</span><br><span style="color: hsl(120, 100%, 40%);">+      }</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/+/21225">change 21225</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/+/21225"/><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: Ide733d7659ff7f341bedc61fc90947f74d7c4ac3 </div>
<div style="display:none"> Gerrit-Change-Number: 21225 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>