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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Introduce test TC_tx_power_start_ramp_down_bcch<br><br>Change-Id: I895d69394a0123ae32b336c9ffaff615ba657f12<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 118 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index 9ebd952..a60a50f 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -173,6 +173,9 @@</span><br><span>       port TRXC_CODEC_PT BTS_TRXC;</span><br><span>         var integer g_bts_trxc_conn_id;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   /* port to be initialized optionally to access BSC VTY */</span><br><span style="color: hsl(120, 100%, 40%);">+     port TELNETasp_PT BSCVTY;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  timer g_Tguard;</span><br><span>      timer g_Tmeas_exp := 2.0; /* >= 103 SACCH multiframe ~ 500ms */</span><br><span> </span><br><span>@@ -374,6 +377,12 @@</span><br><span>        f_vty_transceive(BSCVTY, "enable");</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+friend function f_connhdlr_init_vty_bsc() runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+  map(self:BSCVTY, system:BSCVTY);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_vty_set_prompts(BSCVTY, "OsmoBSC");</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_transceive(BSCVTY, "enable");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* PCU socket may at any time receive a new INFO.ind */</span><br><span> private altstep as_pcu_info_ind(PCUIF_CODEC_PT pt, integer pcu_conn_id,</span><br><span>                             out PCUIF_Message pcu_last_info) {</span><br><span>@@ -2024,12 +2033,34 @@</span><br><span>         f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Verify Tx power reduction and ramping up during BTS bring up */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_TC_tx_power_start_ramp_up_bcch(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+/* Wait until the BTS has reached full tx power (nominal tx power minus configured attenuation) */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_wait_ramp_up() runs on ConnHdlr return integer {</span><br><span>         var L1ctlDlMessage l1_dl;</span><br><span style="color: hsl(0, 100%, 40%);">-       f_l1_tune(L1CTL);</span><br><span style="color: hsl(0, 100%, 40%);">-       RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+    var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;</span><br><span style="color: hsl(120, 100%, 40%);">+      timer Tup := 10.0;</span><br><span style="color: hsl(120, 100%, 40%);">+    Tup.start;</span><br><span style="color: hsl(120, 100%, 40%);">+    alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {</span><br><span style="color: hsl(120, 100%, 40%);">+               var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;</span><br><span style="color: hsl(120, 100%, 40%);">+                log("Received rx_level=", rx_lvl);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+              if (rx_lvl != max_rx_lvl) {</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%);">+             Tup.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] L1CTL.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] Tup.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+              Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    log2str("Didn't reach full power ", max_rx_lvl));</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%);">+     return max_rx_lvl;</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%);">+/* verify BTS ramps power up to full tx power (nominal tx power minus configured attenuation) */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_verify_ramp_up() runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+     var L1ctlDlMessage l1_dl;</span><br><span>    var integer initial_rx_lvl := -1;</span><br><span>    var integer last_rx_lvl := -1;</span><br><span>       var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;</span><br><span>@@ -2087,6 +2118,61 @@</span><br><span>                                    log2str("No Tx power increase during whole ramp up: ",</span><br><span>                                             initial_rx_lvl , " -> ", last_rx_lvl));</span><br><span>         }</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%);">+/* verify BTS ramps power down to rx_level 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_verify_ramp_down(integer max_rx_lvl) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+   var L1ctlDlMessage l1_dl;</span><br><span style="color: hsl(120, 100%, 40%);">+     var integer last_rx_lvl := max_rx_lvl;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      timer Tdown := 5.0;</span><br><span style="color: hsl(120, 100%, 40%);">+   Tdown.start;</span><br><span style="color: hsl(120, 100%, 40%);">+  alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {</span><br><span style="color: hsl(120, 100%, 40%);">+               var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;</span><br><span style="color: hsl(120, 100%, 40%);">+                log("Received rx_level=", rx_lvl);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* received Rx level bigger than maximum allowed power by CN */</span><br><span style="color: hsl(120, 100%, 40%);">+               if (rx_lvl > max_rx_lvl) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            log2str("Detected Tx power higher than full power: ",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       rx_lvl , " > ", max_rx_lvl));</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%);">+           /* Make sure it never increases, since we are rumping down */</span><br><span style="color: hsl(120, 100%, 40%);">+         if (last_rx_lvl < rx_lvl) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            log2str("Detected Tx power increase during ramp up: ",</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      last_rx_lvl , " -> ", rx_lvl));</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%);">+           last_rx_lvl := rx_lvl;</span><br><span style="color: hsl(120, 100%, 40%);">+                if (last_rx_lvl != 0) {</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%);">+             /* we reached power level 0, we are done */</span><br><span style="color: hsl(120, 100%, 40%);">+           Tdown.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] L1CTL.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] Tdown.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%);">+   /* We didn't increase tx power during ramp down */</span><br><span style="color: hsl(120, 100%, 40%);">+        if (max_rx_lvl > last_rx_lvl) {</span><br><span style="color: hsl(120, 100%, 40%);">+            log("Tx power decreased during ramp down: ", max_rx_lvl , " -> ", last_rx_lvl);</span><br><span style="color: hsl(120, 100%, 40%);">+        } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    log2str("No Tx power decrease during whole ramp down: ",</span><br><span style="color: hsl(120, 100%, 40%);">+                                            max_rx_lvl , " -> ", last_rx_lvl));</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%);">+/* Verify Tx power reduction and ramping up during BTS bring up */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_tx_power_start_ramp_up_bcch(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+       f_l1_tune(L1CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_verify_ramp_up();</span><br><span> </span><br><span>      setverdict(pass);</span><br><span> }</span><br><span>@@ -2101,6 +2187,33 @@</span><br><span>      Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify Tx power reduction and ramping downd uring BTS bring shutdown due to Abis link failure */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_TC_tx_power_start_ramp_down_bcch(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+    f_connhdlr_init_vty_bsc();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_l1_tune(L1CTL);</span><br><span style="color: hsl(120, 100%, 40%);">+     RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Wait until BTS is started and at full power */</span><br><span style="color: hsl(120, 100%, 40%);">+     var integer max_rx_lvl := f_wait_ramp_up();</span><br><span style="color: hsl(120, 100%, 40%);">+   log("Reached nominal level ", max_rx_lvl, ", shutting down OML link");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_vty_transceive(BSCVTY, "drop bts connection 0 oml");</span><br><span style="color: hsl(120, 100%, 40%);">+      f_verify_ramp_down(max_rx_lvl);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_tx_power_start_ramp_down_bcch() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   var ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+ var ConnHdlrPars pars;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     pars := valueof(t_Pars(t_RslChanNr_Bm(0), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+     vc_conn := f_start_handler(refers(f_TC_tx_power_start_ramp_down_bcch), pars,</span><br><span style="color: hsl(120, 100%, 40%);">+                             pcu_comp := false, trxc_comp := true);</span><br><span style="color: hsl(120, 100%, 40%);">+     vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> function f_check_meas_bs_power_level(integer level) runs on ConnHdlr {</span><br><span>         timer T := 8.0;</span><br><span>      T.start;</span><br><span>@@ -6519,6 +6632,7 @@</span><br><span>     execute( TC_meas_res_sign_sdcch8() );</span><br><span>        execute( TC_meas_res_sign_tchh_toa256() );</span><br><span>   execute( TC_tx_power_start_ramp_up_bcch() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_tx_power_start_ramp_down_bcch() );</span><br><span>       execute( TC_rsl_bs_pwr_static_ass() );</span><br><span>       execute( TC_rsl_bs_pwr_static_power_control() );</span><br><span>     execute( TC_rsl_ms_pwr_ctrl() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18980">change 18980</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/+/18980"/><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: I895d69394a0123ae32b336c9ffaff615ba657f12 </div>
<div style="display:none"> Gerrit-Change-Number: 18980 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>