<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22664">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">fr: Generalize and document functions<br><br>This prepares a lot of the FR_Tests functionality to be re-used in more<br>test cases.<br><br>Change-Id: I95b759ad85d9d1cba1533122672e7ff5628bc014<br>---<br>M fr/FR_Tests.ttcn<br>1 file changed, 36 insertions(+), 20 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/64/22664/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/fr/FR_Tests.ttcn b/fr/FR_Tests.ttcn</span><br><span>index 2bac1f8..7ef5f1f 100644</span><br><span>--- a/fr/FR_Tests.ttcn</span><br><span>+++ b/fr/FR_Tests.ttcn</span><br><span>@@ -9,8 +9,11 @@</span><br><span> import from LLC_Templates all;</span><br><span> </span><br><span> modulepar {</span><br><span style="color: hsl(120, 100%, 40%);">+     /* number of BVCs to bring up in one Gb instance */</span><br><span>  integer mp_num_bvc := 10;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* number of UEs to start in each PTP BVC */</span><br><span>         integer mp_num_ue_in_bvc := 10;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* NS configurations; one per NSE; each with any number of NSVC */</span><br><span>   NSConfigurations mp_nsconfig := {</span><br><span>            {</span><br><span>                    nsei := 123,</span><br><span>@@ -47,6 +50,7 @@</span><br><span>     port BSSGP_CT_PROC_PT BSSGP_PROC[16];</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* initialize one Gb interface */</span><br><span> private function f_init_gb(inout GbInstance gb, charstring id, integer offset) runs on test_CT {</span><br><span>       var charstring id_idx := id & int2str(offset);</span><br><span>   gb.vc_NS := NS_CT.create(id_idx & "-NSemu");</span><br><span>@@ -57,7 +61,8 @@</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%);">-function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {</span><br><span style="color: hsl(120, 100%, 40%);">+/* generate a BVC dynamically, using distinct number ranges for BVCI, CID, LAC, ... */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {</span><br><span>  var BssgpBvcConfig bvc := {</span><br><span>          bvci := base + 100 + idx,</span><br><span>            cell_id := {</span><br><span>@@ -102,6 +107,7 @@</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* first function executed in UE_CT; creates LLC context, registers with BSSGP, starts Tguard */</span><br><span> function f_handler_init(void_fn fn, charstring id, UE_Pars pars) runs on UE_CT {</span><br><span>     g_pars := pars;</span><br><span>      llc := f_llc_create(false);</span><br><span>@@ -109,12 +115,6 @@</span><br><span>   g_Tguard.start(g_pars.tguard);</span><br><span>       activate(as_ue_tguard());</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   fn.apply(id);</span><br><span style="color: hsl(0, 100%, 40%);">-   f_bssgp_client_unregister(g_pars.imsi);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-function f_ul_ud(charstring id) runs on UE_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      log(id, " Waiting for BVC-UNBLOCK");</span><br><span>       timer T := 15.0;</span><br><span>     T.start;</span><br><span>@@ -128,17 +128,12 @@</span><br><span>     }</span><br><span> </span><br><span>        log (id, " Entering main loop");</span><br><span style="color: hsl(0, 100%, 40%);">-      for (var integer num_pkts := 0; num_pkts < 50; num_pkts := num_pkts + 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-           var integer ran_index := 0;</span><br><span style="color: hsl(0, 100%, 40%);">-             //BSSGP[ran_index].send(ts_BSSGP_UL_UD(g_pars.tlli, g_pars.bssgp_cell_id[ran_index], llc_enc));</span><br><span style="color: hsl(0, 100%, 40%);">-         BSSGP[ran_index].send(ts_LLC_UI(f_rnd_octstring(512), '0000'B, '1'B, 0))</span><br><span style="color: hsl(0, 100%, 40%);">-                f_sleep(0.5);</span><br><span style="color: hsl(0, 100%, 40%);">-           /* 512 bytes + 32 bytes HDR every 0.5s (1088/s) means about 8704/s per UE */</span><br><span style="color: hsl(0, 100%, 40%);">-            /* at 100 UE that ends up about 870 kBps */</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(120, 100%, 40%);">+     fn.apply(id);</span><br><span>        log (id, "Leaving main loop");</span><br><span style="color: hsl(120, 100%, 40%);">+      f_bssgp_client_unregister(g_pars.imsi);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* start a single UE component; connect it to BSSGP */</span><br><span> function f_start_ue(void_fn fn, charstring id, GbInstance gb, integer imsi_suffix, BSSGP_BVC_CT bvc_comp, float t_guard := 40.0)</span><br><span> runs on test_CT return UE_CT</span><br><span> {</span><br><span>@@ -159,7 +154,9 @@</span><br><span> }</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(120, 100%, 40%);">+/* main test case body function; start Gb instances, start UE_CTs on top; wait for termination */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tc_body(void_fn ue_fn, integer ue_per_bvc := mp_num_ue_in_bvc,</span><br><span style="color: hsl(120, 100%, 40%);">+                    float delay_between_ue := 0.005, float ue_tguard := 40.0) runs on test_CT {</span><br><span>       var ro_ue ues := {};</span><br><span> </span><br><span>     for (var integer i := 0; i < lengthof(mp_nsconfig); i := i+1) {</span><br><span>@@ -179,13 +176,14 @@</span><br><span>   for (var integer i := 0; i < lengthof(mp_nsconfig); i := i+1) {</span><br><span>           for (var integer j := 0; j < mp_num_bvc; j := j+1) {</span><br><span>                      var BSSGP_BVC_CT bvc_comp := f_bssgp_get_bvci_ct(g_gb[i].cfg.bvc[j].bvci, BSSGP_PROC[i]);</span><br><span style="color: hsl(0, 100%, 40%);">-                       for (var integer k := 0; k < mp_num_ue_in_bvc; k := k+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 for (var integer k := 0; k < ue_per_bvc; k := k+1) {</span><br><span>                              var charstring id := "gb" & int2str(i) & "-bvc" & int2str(g_gb[i].cfg.bvc[j].bvci) & "-UEsim" & int2str(k);</span><br><span>                                var UE_CT ue;</span><br><span style="color: hsl(0, 100%, 40%);">-                           ue := f_start_ue(refers(f_ul_ud), id, g_gb[i], i*10000+j*100+k, bvc_comp);</span><br><span style="color: hsl(120, 100%, 40%);">+                            ue := f_start_ue(ue_fn, id, g_gb[i], i*10000+j*100+k, bvc_comp,</span><br><span style="color: hsl(120, 100%, 40%);">+ue_tguard);</span><br><span>                                 ues := ues & { ue };</span><br><span>                             /* a bit of staggering to ensure the timers above don't run all at the same time */</span><br><span style="color: hsl(0, 100%, 40%);">-                         f_sleep(0.005);</span><br><span style="color: hsl(120, 100%, 40%);">+                               f_sleep(delay_between_ue);</span><br><span>                           /* FIXME: as the BSSGP emulation is already running, we must not</span><br><span>                              * take too long to start the UE components.  If we do, the</span><br><span>                           * BVC_S_UNBLOCKED notification will arrive before the components</span><br><span>@@ -201,8 +199,26 @@</span><br><span>     setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_ul_ud(charstring id) runs on UE_CT</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  for (var integer num_pkts := 0; num_pkts < 50; num_pkts := num_pkts + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+         var integer ran_index := 0;</span><br><span style="color: hsl(120, 100%, 40%);">+           //BSSGP[ran_index].send(ts_BSSGP_UL_UD(g_pars.tlli, g_pars.bssgp_cell_id[ran_index], llc_enc));</span><br><span style="color: hsl(120, 100%, 40%);">+               BSSGP[ran_index].send(ts_LLC_UI(f_rnd_octstring(512), '0000'B, '1'B, 0))</span><br><span style="color: hsl(120, 100%, 40%);">+              f_sleep(0.5);</span><br><span style="color: hsl(120, 100%, 40%);">+         /* 512 bytes + 32 bytes HDR every 0.5s (1088/s) means about 8704/s per UE */</span><br><span style="color: hsl(120, 100%, 40%);">+          /* at 100 UE that ends up about 870 kBps */</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%);">+/* Generate uplink-unitdata traffic */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ul_ud() runs on test_CT</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  f_tc_body(refers(f_ul_ud));</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> control {</span><br><span style="color: hsl(0, 100%, 40%);">- execute( TC_foo() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_ul_ud() );</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/+/22664">change 22664</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/+/22664"/><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: I95b759ad85d9d1cba1533122672e7ff5628bc014 </div>
<div style="display:none"> Gerrit-Change-Number: 22664 </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>