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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">FR/FRNET: Dynamically create number of BVC at runtime<br><br>We don't want the number of NSE and the number of BVC to be a<br>compile-time choice, but rather something dynamic at rutime.  This<br>allows configuration files to define those details.<br><br>Change-Id: I55b44481b5322deaf78619c1689462d716ddfcec<br>---<br>M fr-net/FRNET_Tests.ttcn<br>M fr/FR_Tests.ttcn<br>2 files changed, 70 insertions(+), 49 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/fr-net/FRNET_Tests.ttcn b/fr-net/FRNET_Tests.ttcn</span><br><span>index 593ca77..721dd32 100644</span><br><span>--- a/fr-net/FRNET_Tests.ttcn</span><br><span>+++ b/fr-net/FRNET_Tests.ttcn</span><br><span>@@ -8,6 +8,7 @@</span><br><span> import from BSSGP_Emulation all;</span><br><span> </span><br><span> modulepar {</span><br><span style="color: hsl(120, 100%, 40%);">+        integer mp_num_bvc := 10;</span><br><span>    NSConfigurations mp_nsconfig := {</span><br><span>            {</span><br><span>                    nsei := 123,</span><br><span>@@ -34,11 +35,9 @@</span><br><span>    BssgpConfig cfg</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-const integer NUM_GB := 1;</span><br><span style="color: hsl(0, 100%, 40%);">-type record length(NUM_GB) of GbInstance GbInstances;</span><br><span style="color: hsl(0, 100%, 40%);">-type record length(NUM_GB) of NSConfiguration NSConfigurations;</span><br><span style="color: hsl(0, 100%, 40%);">-type record length(NUM_GB) of BssgpCellId BssgpCellIds;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+type record of GbInstance GbInstances;</span><br><span style="color: hsl(120, 100%, 40%);">+type record of NSConfiguration NSConfigurations;</span><br><span style="color: hsl(120, 100%, 40%);">+type record of BssgpCellId BssgpCellIds;</span><br><span> </span><br><span> type component test_CT {</span><br><span>   var GbInstances g_gb;</span><br><span>@@ -53,28 +52,39 @@</span><br><span>  gb.vc_BSSGP.start(BssgpStart(gb.cfg, testcasename()));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_foo() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-      g_gb[0].cfg := {</span><br><span style="color: hsl(0, 100%, 40%);">-                nsei := 123,</span><br><span style="color: hsl(0, 100%, 40%);">-            sgsn_role := true,</span><br><span style="color: hsl(0, 100%, 40%);">-              bvc := {</span><br><span style="color: hsl(0, 100%, 40%);">-                        {</span><br><span style="color: hsl(0, 100%, 40%);">-                               bvci := 1123,</span><br><span style="color: hsl(0, 100%, 40%);">-                           cell_id := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                    ra_id := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                              lai := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        mcc_mnc := '262F42'H,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                   lac := 11123</span><br><span style="color: hsl(0, 100%, 40%);">-                                            },</span><br><span style="color: hsl(0, 100%, 40%);">-                                              rac := 1</span><br><span style="color: hsl(0, 100%, 40%);">-                                        },</span><br><span style="color: hsl(0, 100%, 40%);">-                                      cell_id := 31123</span><br><span style="color: hsl(120, 100%, 40%);">+function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {</span><br><span style="color: hsl(120, 100%, 40%);">+       var BssgpBvcConfig bvc := {</span><br><span style="color: hsl(120, 100%, 40%);">+           bvci := base + 100 + idx,</span><br><span style="color: hsl(120, 100%, 40%);">+             cell_id := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  ra_id := {</span><br><span style="color: hsl(120, 100%, 40%);">+                            lai := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                      mcc_mnc := '262F42'H,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 lac := base + 300 + idx</span><br><span>                              },</span><br><span style="color: hsl(0, 100%, 40%);">-                              depth := BSSGP_DECODE_DEPTH_LLC</span><br><span style="color: hsl(0, 100%, 40%);">-                 }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(120, 100%, 40%);">+                             rac := 1</span><br><span style="color: hsl(120, 100%, 40%);">+                      },</span><br><span style="color: hsl(120, 100%, 40%);">+                    cell_id := base + 600 + idx</span><br><span style="color: hsl(120, 100%, 40%);">+           },</span><br><span style="color: hsl(120, 100%, 40%);">+            depth := BSSGP_DECODE_DEPTH_LLC</span><br><span>      };</span><br><span style="color: hsl(0, 100%, 40%);">-      f_init_gb(g_gb[0], "gb", 0);</span><br><span style="color: hsl(120, 100%, 40%);">+        return bvc;</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%);">+testcase TC_foo() runs on test_CT {</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(mp_nsconfig); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            g_gb[i].cfg := {</span><br><span style="color: hsl(120, 100%, 40%);">+                      nsei := mp_nsconfig[i].nsei,</span><br><span style="color: hsl(120, 100%, 40%);">+                  sgsn_role := true,</span><br><span style="color: hsl(120, 100%, 40%);">+                    bvc := { }</span><br><span style="color: hsl(120, 100%, 40%);">+            };</span><br><span style="color: hsl(120, 100%, 40%);">+            /* create 'mp_num_bvc' number of BVCs */</span><br><span style="color: hsl(120, 100%, 40%);">+              for (var integer j := 0; j < mp_num_bvc; j := j+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       g_gb[i].cfg.bvc := g_gb[i].cfg.bvc & { f_gen_bvc(i * 1000, j) };</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             f_init_gb(g_gb[i], "gb", i);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  while (true) {</span><br><span>               f_sleep(100.0);</span><br><span>      }</span><br><span>diff --git a/fr/FR_Tests.ttcn b/fr/FR_Tests.ttcn</span><br><span>index d2d184f..b220bb9 100644</span><br><span>--- a/fr/FR_Tests.ttcn</span><br><span>+++ b/fr/FR_Tests.ttcn</span><br><span>@@ -8,6 +8,7 @@</span><br><span> import from BSSGP_Emulation all;</span><br><span> </span><br><span> modulepar {</span><br><span style="color: hsl(120, 100%, 40%);">+       integer mp_num_bvc := 10;</span><br><span>    NSConfigurations mp_nsconfig := {</span><br><span>            {</span><br><span>                    nsei := 123,</span><br><span>@@ -34,10 +35,9 @@</span><br><span>    BssgpConfig cfg</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-const integer NUM_GB := 1;</span><br><span style="color: hsl(0, 100%, 40%);">-type record length(NUM_GB) of GbInstance GbInstances;</span><br><span style="color: hsl(0, 100%, 40%);">-type record length(NUM_GB) of NSConfiguration NSConfigurations;</span><br><span style="color: hsl(0, 100%, 40%);">-type record length(NUM_GB) of BssgpCellId BssgpCellIds;</span><br><span style="color: hsl(120, 100%, 40%);">+type record of GbInstance GbInstances;</span><br><span style="color: hsl(120, 100%, 40%);">+type record of NSConfiguration NSConfigurations;</span><br><span style="color: hsl(120, 100%, 40%);">+type record of BssgpCellId BssgpCellIds;</span><br><span> </span><br><span> </span><br><span> type component test_CT {</span><br><span>@@ -53,28 +53,39 @@</span><br><span>         gb.vc_BSSGP.start(BssgpStart(gb.cfg, testcasename()));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_foo() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-      g_gb[0].cfg := {</span><br><span style="color: hsl(0, 100%, 40%);">-                nsei := 123,</span><br><span style="color: hsl(0, 100%, 40%);">-            sgsn_role := false,</span><br><span style="color: hsl(0, 100%, 40%);">-             bvc := {</span><br><span style="color: hsl(0, 100%, 40%);">-                        {</span><br><span style="color: hsl(0, 100%, 40%);">-                               bvci := 1123,</span><br><span style="color: hsl(0, 100%, 40%);">-                           cell_id := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                    ra_id := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                              lai := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        mcc_mnc := '262F42'H,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                   lac := 11123</span><br><span style="color: hsl(0, 100%, 40%);">-                                            },</span><br><span style="color: hsl(0, 100%, 40%);">-                                              rac := 1</span><br><span style="color: hsl(0, 100%, 40%);">-                                        },</span><br><span style="color: hsl(0, 100%, 40%);">-                                      cell_id := 31123</span><br><span style="color: hsl(120, 100%, 40%);">+function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {</span><br><span style="color: hsl(120, 100%, 40%);">+       var BssgpBvcConfig bvc := {</span><br><span style="color: hsl(120, 100%, 40%);">+           bvci := base + 100 + idx,</span><br><span style="color: hsl(120, 100%, 40%);">+             cell_id := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  ra_id := {</span><br><span style="color: hsl(120, 100%, 40%);">+                            lai := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                      mcc_mnc := '262F42'H,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 lac := base + 300 + idx</span><br><span>                              },</span><br><span style="color: hsl(0, 100%, 40%);">-                              depth := BSSGP_DECODE_DEPTH_LLC</span><br><span style="color: hsl(0, 100%, 40%);">-                 }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(120, 100%, 40%);">+                             rac := 1</span><br><span style="color: hsl(120, 100%, 40%);">+                      },</span><br><span style="color: hsl(120, 100%, 40%);">+                    cell_id := base + 600 + idx</span><br><span style="color: hsl(120, 100%, 40%);">+           },</span><br><span style="color: hsl(120, 100%, 40%);">+            depth := BSSGP_DECODE_DEPTH_LLC</span><br><span>      };</span><br><span style="color: hsl(0, 100%, 40%);">-      f_init_gb(g_gb[0], "gb", 0);</span><br><span style="color: hsl(120, 100%, 40%);">+        return bvc;</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%);">+testcase TC_foo() runs on test_CT {</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(mp_nsconfig); i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+            g_gb[i].cfg := {</span><br><span style="color: hsl(120, 100%, 40%);">+                      nsei := mp_nsconfig[i].nsei,</span><br><span style="color: hsl(120, 100%, 40%);">+                  sgsn_role := false,</span><br><span style="color: hsl(120, 100%, 40%);">+                   bvc := { }</span><br><span style="color: hsl(120, 100%, 40%);">+            };</span><br><span style="color: hsl(120, 100%, 40%);">+            /* create 'mp_num_bvc' number of BVCs */</span><br><span style="color: hsl(120, 100%, 40%);">+              for (var integer j := 0; j < mp_num_bvc; j := j+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       g_gb[i].cfg.bvc := g_gb[i].cfg.bvc & { f_gen_bvc(i * 1000, j) };</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             f_init_gb(g_gb[i], "gb", i);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span>    while (true) {</span><br><span>               f_sleep(100.0);</span><br><span>      }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21110">change 21110</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/+/21110"/><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: I55b44481b5322deaf78619c1689462d716ddfcec </div>
<div style="display:none"> Gerrit-Change-Number: 21110 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </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>