<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21390">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gbproxy: Add TC_bvc_reset_sig_from_{sgsn,pcu}<br><br>These test cases check if gbproxy behaves as expected when it comes to<br>dealing with BVC-RESET on the signaling BVC.  The tests are not passing<br>due to limitations of gbproxy.  So it's not clear if the tests are 100%<br>correct until gbproxy is fixed.<br><br>Change-Id: Iedfe72f539ad3a0653b6ee7a050bf36ae386e88e<br>---<br>M gbproxy/GBProxy_Tests.ttcn<br>1 file changed, 101 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/90/21390/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 1336773..4df1989 100644</span><br><span>--- a/gbproxy/GBProxy_Tests.ttcn</span><br><span>+++ b/gbproxy/GBProxy_Tests.ttcn</span><br><span>@@ -216,6 +216,8 @@</span><br><span> </span><br><span>       var boolean g_initialized := false;</span><br><span>  var boolean g_use_echo := false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    var ro_integer g_roi := {};</span><br><span> };</span><br><span> </span><br><span> type component BSSGP_ConnHdlr {</span><br><span>@@ -301,6 +303,7 @@</span><br><span>               disconnect(self:PROC, gb.vc_BSSGP:PROC);</span><br><span>             connect(self:PCU_MGMT, gb.vc_BSSGP_BVC[i]:MGMT);</span><br><span>     }</span><br><span style="color: hsl(120, 100%, 40%);">+     connect(self:PCU_MGMT, gb.vc_BSSGP:MGMT);</span><br><span> }</span><br><span> </span><br><span> private function f_init_gb_sgsn(inout GbInstance gb, charstring id, integer offset) runs on test_CT {</span><br><span>@@ -320,6 +323,7 @@</span><br><span>            disconnect(self:PROC, gb.vc_BSSGP:PROC);</span><br><span>             connect(self:SGSN_MGMT, gb.vc_BSSGP_BVC[i]:MGMT);</span><br><span>    }</span><br><span style="color: hsl(120, 100%, 40%);">+     connect(self:SGSN_MGMT, gb.vc_BSSGP:MGMT);</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -1932,6 +1936,57 @@</span><br><span>     f_cleanup();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_count_bvc_block(integer sgsn_idx, BssgpBvci bvci, inout ro_integer roi)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var BSSGP_BVC_CT sgsn_bvc_ct := f_get_sgsn_bvc_ct(sgsn_idx, bvci);</span><br><span style="color: hsl(120, 100%, 40%);">+    [] SGSN_MGMT.receive(tr_BssgpStsInd(?, bvci, BVC_S_BLOCKED)) from sgsn_bvc_ct {</span><br><span style="color: hsl(120, 100%, 40%);">+               roi := roi & { bvci };</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%);">+/* reset the signaling BVC from one BSS; expect no signaling BVC reset on SGSN; but BVC-BLOCK for PTP */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_bvc_reset_sig_from_bss() runs on test_CT {</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%);">+     f_sleep(3.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Start BVC-RESET procedure for BVCI=0 */</span><br><span style="color: hsl(120, 100%, 40%);">+    PCU_MGMT.send(BssgpResetRequest:{cause:=BSSGP_CAUSE_OM_INTERVENTION}) to g_pcu[0].vc_BSSGP;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Activate altsteps: One for each PTP BVC within that PCUs NSE */</span><br><span style="color: hsl(120, 100%, 40%);">+    var ro_default defaults := {};</span><br><span style="color: hsl(120, 100%, 40%);">+        for (var integer i := 0; i < lengthof(g_pcu[0].cfg.bvc); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               var BssgpBvcConfig bvcc := g_pcu[0].cfg.bvc[i];</span><br><span style="color: hsl(120, 100%, 40%);">+               var default d := activate(as_count_bvc_block(0, bvcc.bvci, g_roi));</span><br><span style="color: hsl(120, 100%, 40%);">+           defaults := defaults & { d };</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%);">+   timer T := 3.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%);">+ [] SGSN_MGMT.receive(BssgpResetIndication:{0}) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "BSS-side Reset of BVCI=0 should not propagate");</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(defaults); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               deactivate(defaults[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%);">+   /* check if BVC-block was received on all expected BVC */</span><br><span style="color: hsl(120, 100%, 40%);">+     for (var integer i := 0; i < lengthof(g_pcu[0].cfg.bvc); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               var BssgpBvcConfig bvcc := g_pcu[0].cfg.bvc[i];</span><br><span style="color: hsl(120, 100%, 40%);">+               if (not ro_integer_contains(g_roi, bvcc.bvci)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Missing SGSN-side BVC-BLOCK of BVCI=", bvcc.bvci);</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%);">+   /* check if BVC-block was not received on any unexpected BVC is not required as</span><br><span style="color: hsl(120, 100%, 40%);">+        * such a message would basically run into 'no matching clause'  */</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 style="color: hsl(120, 100%, 40%);">+</span><br><span> private function f_reset_ptp_bvc_from_sgsn(integer pcu_idx, integer bvc_idx) runs on test_CT</span><br><span> {</span><br><span>       var BSSGP_BVC_CT pcu_bvc_ct := g_pcu[pcu_idx].vc_BSSGP_BVC[bvc_idx];</span><br><span>@@ -1962,6 +2017,50 @@</span><br><span>        f_cleanup();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_count_bvc0_block(integer pcu_idx, Nsei nsei, inout ro_integer roi)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var BSSGP_CT pcu_ct := g_pcu[pcu_idx].vc_BSSGP;</span><br><span style="color: hsl(120, 100%, 40%);">+       [] PCU_MGMT.receive(BssgpResetIndication:{0}) from pcu_ct {</span><br><span style="color: hsl(120, 100%, 40%);">+           roi := roi & { nsei };</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%);">+/* reset the signaling BVC from the SGSN; expect all signaling BVC on all BSS to be reset */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_bvc_reset_sig_from_sgsn() runs on test_CT {</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%);">+     f_sleep(3.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Start BVC-RESET procedure for BVCI=0 */</span><br><span style="color: hsl(120, 100%, 40%);">+    SGSN_MGMT.send(BssgpResetRequest:{cause:=BSSGP_CAUSE_OM_INTERVENTION}) to g_sgsn[0].vc_BSSGP;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Activate altsteps: One for each PCU NSE */</span><br><span style="color: hsl(120, 100%, 40%);">+ var ro_default defaults := {};</span><br><span style="color: hsl(120, 100%, 40%);">+        for (var integer i := 0; i < lengthof(g_pcu); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+          var NSConfiguration nscfg := mp_nsconfig_pcu[i];</span><br><span style="color: hsl(120, 100%, 40%);">+              var default d := activate(as_count_bvc0_block(i, nscfg.nsei, g_roi));</span><br><span style="color: hsl(120, 100%, 40%);">+         defaults := defaults & { d };</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_sleep(3.0);</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(defaults); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               deactivate(defaults[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%);">+   /* check if BVC-block was received on all expected BVC */</span><br><span style="color: hsl(120, 100%, 40%);">+     for (var integer i := 0; i < lengthof(g_pcu); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+          var NSConfiguration nscfg := mp_nsconfig_pcu[i];</span><br><span style="color: hsl(120, 100%, 40%);">+              if (not ro_integer_contains(g_roi, nscfg.nsei)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     setverdict(fail, "Missing PCU-side BVC-RESET of BVCI=0 on PCU index ", 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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* check if BVC-block was not received on any unexpected BVC is not required as</span><br><span style="color: hsl(120, 100%, 40%);">+        * such a message would basically run into 'no matching clause'  */</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 style="color: hsl(120, 100%, 40%);">+</span><br><span> control {</span><br><span>       execute( TC_BVC_bringup() );</span><br><span>         execute( TC_ul_unitdata() );</span><br><span>@@ -1974,7 +2073,9 @@</span><br><span>         execute( TC_bvc_block_ptp() );</span><br><span>       execute( TC_bvc_unblock_ptp() );</span><br><span>     execute( TC_bvc_reset_ptp_from_bss() );</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_bvc_reset_sig_from_bss() );</span><br><span>      execute( TC_bvc_reset_ptp_from_sgsn() );</span><br><span style="color: hsl(120, 100%, 40%);">+      execute( TC_bvc_reset_sig_from_sgsn() );</span><br><span>     if (false) {</span><br><span>                 /* 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>                execute( TC_load_sharing_dl() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21390">change 21390</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/+/21390"/><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: Iedfe72f539ad3a0653b6ee7a050bf36ae386e88e </div>
<div style="display:none"> Gerrit-Change-Number: 21390 </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>