<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22361">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gbproxy: Fix pooling expectations of TC_bvc_reset_*_from_bss<br><br>With pooling enabled these tests now need to verify that the reset/block<br>is propagated to all SGSNs in the pool.<br><br>Change-Id: I34ed4bffce564dbaf08f9388bd5247351dd0725e<br>Fixes: OS#4964<br>---<br>M gbproxy/GBProxy_Tests.ttcn<br>1 file changed, 61 insertions(+), 16 deletions(-)<br><br></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 e3e61f4..ddcd9cb 100644</span><br><span>--- a/gbproxy/GBProxy_Tests.ttcn</span><br><span>+++ b/gbproxy/GBProxy_Tests.ttcn</span><br><span>@@ -342,6 +342,7 @@</span><br><span>  var boolean g_use_echo := false;</span><br><span> </span><br><span>         var ro_integer g_roi := {};</span><br><span style="color: hsl(120, 100%, 40%);">+   var roro_integer g_roroi := {};</span><br><span>      timer g_Tguard;</span><br><span> };</span><br><span> </span><br><span>@@ -2464,7 +2465,14 @@</span><br><span> /***********************************************************************</span><br><span>  * BVC-RESET procedure</span><br><span>  ***********************************************************************/</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_count_bvc_reset(integer sgsn_idx, BssgpBvci bvci, inout roro_integer roroi)</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(BssgpResetIndication:{bvci}) from sgsn_bvc_ct {</span><br><span style="color: hsl(120, 100%, 40%);">+          roroi[sgsn_idx] := roroi[sgsn_idx] & { bvci };</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> private altstep as_ignore_status(BSSGP_BVC_MGMT_PT pt) {</span><br><span> [] pt.receive(BssgpStatusIndication:?) { repeat; }</span><br><span> }</span><br><span>@@ -2481,22 +2489,51 @@</span><br><span>        var BSSGP_BVC_CT pcu_bvc_ct := g_pcu[pcu_idx].vc_BSSGP_BVC[bvc_idx];</span><br><span>         var BssgpBvcConfig bvc_cfg := g_pcu[pcu_idx].cfg.bvc[bvc_idx];</span><br><span>       var Nsei nsei_pcu := g_pcu[pcu_idx].cfg.nsei;</span><br><span style="color: hsl(0, 100%, 40%);">-   var BSSGP_BVC_CT sgsn_bvc_ct := f_get_sgsn_bvc_ct(0, bvc_cfg.bvci);</span><br><span style="color: hsl(0, 100%, 40%);">-     var default d;</span><br><span style="color: hsl(120, 100%, 40%);">+        var ro_default defaults;</span><br><span style="color: hsl(120, 100%, 40%);">+      var integer i;</span><br><span> </span><br><span>   SGSN_MGMT.clear;</span><br><span>     PCU_MGMT.clear;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   for (i := 0; i < lengthof(mp_nsconfig_sgsn); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           g_roroi[i] := {};</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* block the PTP BVC from the PCU side */</span><br><span>    PCU_MGMT.send(BssgpResetRequest:{cause:=BSSGP_CAUSE_OM_INTERVENTION}) to pcu_bvc_ct;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       /* expect state on both PCU and SGSN side to change */</span><br><span style="color: hsl(0, 100%, 40%);">-  d := activate(as_ignore_status(SGSN_MGMT));</span><br><span style="color: hsl(0, 100%, 40%);">-     interleave {</span><br><span style="color: hsl(0, 100%, 40%);">-    [] PCU_MGMT.receive(tr_BssgpStsInd(nsei_pcu, bvc_cfg.bvci, BVC_S_BLOCKED)) from pcu_bvc_ct;</span><br><span style="color: hsl(0, 100%, 40%);">-     [] SGSN_MGMT.receive(BssgpResetIndication:{bvc_cfg.bvci}) from sgsn_bvc_ct;</span><br><span style="color: hsl(120, 100%, 40%);">+   defaults := { activate(as_ignore_status(SGSN_MGMT)) };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Activate altsteps: One for each SGSN */</span><br><span style="color: hsl(120, 100%, 40%);">+    for (i := 0; i < lengthof(g_sgsn); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+             var default d := activate(as_count_bvc_reset(i, bvc_cfg.bvci, g_roroi));</span><br><span style="color: hsl(120, 100%, 40%);">+              defaults := defaults & { d };</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       deactivate(d);</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%);">+ [] PCU_MGMT.receive(tr_BssgpStsInd(nsei_pcu, bvc_cfg.bvci, BVC_S_BLOCKED)) from pcu_bvc_ct {</span><br><span style="color: hsl(120, 100%, 40%);">+          g_roi := g_roi & { bvc_cfg.bvci };</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%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   for (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-RESET was received at all SGSNs */</span><br><span style="color: hsl(120, 100%, 40%);">+    for (i := 0; i < lengthof(g_sgsn); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+             if (not ro_integer_contains(g_roroi[i], bvc_cfg.bvci)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Missing SGSN[", i, "] BVC-BLOCK of BVCI=", bvc_cfg.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>  setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_cleanup();</span><br><span> }</span><br><span> /* Send a BVC-RESET for a PTP BVC from the BSS side: expect it to propagate */</span><br><span> testcase TC_bvc_reset_ptp_from_bss() runs on test_CT</span><br><span>@@ -2507,11 +2544,11 @@</span><br><span>        f_cleanup();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 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%);">+private altstep as_count_bvc_block(integer sgsn_idx, BssgpBvci bvci, inout roro_integer roroi)</span><br><span> runs on test_CT {</span><br><span>         var BSSGP_BVC_CT sgsn_bvc_ct := f_get_sgsn_bvc_ct(sgsn_idx, bvci);</span><br><span>   [] SGSN_MGMT.receive(tr_BssgpStsInd(?, bvci, BVC_S_BLOCKED)) from sgsn_bvc_ct {</span><br><span style="color: hsl(0, 100%, 40%);">-         roi := roi & { bvci };</span><br><span style="color: hsl(120, 100%, 40%);">+            roroi[sgsn_idx] := roroi[sgsn_idx] & { bvci };</span><br><span>           repeat;</span><br><span>      }</span><br><span> }</span><br><span>@@ -2521,15 +2558,21 @@</span><br><span>     f_init();</span><br><span>    f_sleep(3.0);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     for (var integer i := 0; i < lengthof(mp_nsconfig_sgsn); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               g_roroi[i] := {};</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* Start BVC-RESET procedure for BVCI=0 */</span><br><span>   PCU_MGMT.send(BssgpResetRequest:{cause:=BSSGP_CAUSE_OM_INTERVENTION}) to g_pcu[0].vc_BSSGP;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* Activate altsteps: One for each PTP BVC within that PCUs NSE */</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Activate altsteps: One for each PTP BVC and SGSN within that PCUs NSE */</span><br><span>  var ro_default defaults := {};</span><br><span>       for (var integer i := 0; i < lengthof(g_pcu[0].cfg.bvc); i := i+1) {</span><br><span>              var BssgpBvcConfig bvcc := g_pcu[0].cfg.bvc[i];</span><br><span style="color: hsl(0, 100%, 40%);">-         var default d := activate(as_count_bvc_block(0, bvcc.bvci, g_roi));</span><br><span style="color: hsl(0, 100%, 40%);">-             defaults := defaults & { d };</span><br><span style="color: hsl(120, 100%, 40%);">+             for (var integer j := 0; j < lengthof(g_sgsn); j := j+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 var default d := activate(as_count_bvc_block(j, bvcc.bvci, g_roroi));</span><br><span style="color: hsl(120, 100%, 40%);">+                 defaults := defaults & { d };</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    }</span><br><span> </span><br><span>        timer T := 3.0;</span><br><span>@@ -2545,11 +2588,13 @@</span><br><span>            deactivate(defaults[i]);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* check if BVC-block was received on all expected BVC */</span><br><span style="color: hsl(120, 100%, 40%);">+     /* check if BVC-block was received on all expected BVC/SGSN */</span><br><span>       for (var integer i := 0; i < lengthof(g_pcu[0].cfg.bvc); i := i+1) {</span><br><span>              var BssgpBvcConfig bvcc := g_pcu[0].cfg.bvc[i];</span><br><span style="color: hsl(0, 100%, 40%);">-         if (not ro_integer_contains(g_roi, bvcc.bvci)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        setverdict(fail, "Missing SGSN-side BVC-BLOCK of BVCI=", bvcc.bvci);</span><br><span style="color: hsl(120, 100%, 40%);">+                for (var integer j := 0; j < lengthof(g_sgsn); j := j+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 if (not ro_integer_contains(g_roroi[j], bvcc.bvci)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                         setverdict(fail, "Missing SGSN[", j, "] BVC-BLOCK of BVCI=", bvcc.bvci);</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/+/22361">change 22361</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/+/22361"/><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: I34ed4bffce564dbaf08f9388bd5247351dd0725e </div>
<div style="display:none"> Gerrit-Change-Number: 22361 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@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: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>