<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>