<p>Vadim Yanitskiy <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12536">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BTS_Tests.ttcn: fix: use TRXC interface of the BTS side, not BB<br><br>It was observed that 'BTS_Tests.TC_rach_max_ta' started to fail<br>with the following reason: "BTS_Tests.ttcn:1091 : RACH passed<br>but was expected to be dropped: -2560".<br><br>My initial assumption was that the test case basically sends<br>FAKE_TOA command on a wrong TRXC interface, and it was<br>confirmed using trx_sniff.py:<br><br>  # TRXD of the BB side<br>  $ ./trx_sniff.py -p 6700<br>  [DEBUG] trx_sniff.py:110 L1 -> TRX burst: fn=616 tn=0 pwr=0<br>  [DEBUG] trx_sniff.py:110 TRX -> L1 burst: fn=597 tn=0 rssi=-60 toa256=-2560<br>  [DEBUG] trx_sniff.py:110 TRX -> L1 burst: fn=598 tn=0 rssi=-60 toa256=-2560<br>  ...<br><br>  # TRXD of the BTS side (Uplink bursts only)<br>  $ ./trx_sniff.py -p 5700 --direction L1<br>  [DEBUG] trx_sniff.py:110 TRX -> L1 burst: fn=719 tn=0 rssi=-60 toa256=0<br><br>and additionally be enriching logging messages of fake_trx.py:<br><br>  [DEBUG] fake_trx.py:186 (trx@0.0.0.0:6700) Recv FAKE_TOA cmd<br><br>Sending FAKE_* commands on TRXC interface of the BB side affects<br>the bursts being forwarded to this side, so we should use the<br>TRXC interface of the BTS side to simulate Uplink delay.<br><br>The reason why the test case has been passing some time ago is<br>that there was a bug in fake_trx.py, that has been fixed recently.<br><br>This patch makes 'BTS_Tests.TC_rach_max_ta' green again ;)<br><br>Change-Id: I7736abd85407c186856be9f1a22613a1fa6e0c32<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 20 insertions(+), 20 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 0de787a..f7caac2 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -50,8 +50,8 @@</span><br><span>       charstring mp_rsl_ip := "127.0.0.2";</span><br><span>       integer mp_rsl_port := 3003;</span><br><span>         integer mp_trx0_arfcn := 871;</span><br><span style="color: hsl(0, 100%, 40%);">-   charstring mp_bb_trxc_ip := "127.0.0.1";</span><br><span style="color: hsl(0, 100%, 40%);">-      integer mp_bb_trxc_port := 6701;</span><br><span style="color: hsl(120, 100%, 40%);">+      charstring mp_bts_trxc_ip := "127.0.0.1";</span><br><span style="color: hsl(120, 100%, 40%);">+   integer mp_bts_trxc_port := 5701;</span><br><span>    charstring mp_pcu_socket := PCU_SOCK_DEFAULT;</span><br><span>        charstring mp_ctrl_ip := "127.0.0.1";</span><br><span>      integer mp_ctrl_port := 4238;</span><br><span>@@ -81,8 +81,8 @@</span><br><span>    port L1CTL_PT L1CTL;</span><br><span> </span><br><span>     /* TRXC port (for classic tests) */</span><br><span style="color: hsl(0, 100%, 40%);">-     port TRXC_CODEC_PT BB_TRXC;</span><br><span style="color: hsl(0, 100%, 40%);">-     var integer g_bb_trxc_conn_id;</span><br><span style="color: hsl(120, 100%, 40%);">+        port TRXC_CODEC_PT BTS_TRXC;</span><br><span style="color: hsl(120, 100%, 40%);">+  var integer g_bts_trxc_conn_id;</span><br><span> </span><br><span>  /* VTY connections to both BTS and BSC */</span><br><span>    port TELNETasp_PT BTSVTY;</span><br><span>@@ -123,8 +123,8 @@</span><br><span> type component ConnHdlr extends RSL_DchanHdlr {</span><br><span>   port L1CTL_PT L1CTL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        port TRXC_CODEC_PT BB_TRXC;</span><br><span style="color: hsl(0, 100%, 40%);">-     var integer g_bb_trxc_conn_id;</span><br><span style="color: hsl(120, 100%, 40%);">+        port TRXC_CODEC_PT BTS_TRXC;</span><br><span style="color: hsl(120, 100%, 40%);">+  var integer g_bts_trxc_conn_id;</span><br><span> </span><br><span>  timer g_Tguard;</span><br><span>      timer g_Tmeas_exp := 2.0; /* >= 103 SACCH multiframe ~ 500ms */</span><br><span>@@ -316,7 +316,7 @@</span><br><span>     };</span><br><span> </span><br><span>       /* FIXME: FACCH/H is unreliable with calypso firmware, see OS#3653 */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (mp_bb_trxc_port != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+  if (mp_bts_trxc_port != -1) {</span><br><span>                g_AllChanTypes := {</span><br><span>                  /* TS 1..4: TCH/F */</span><br><span>                         valueof(ts_RslChanNr_Bm(1)),</span><br><span>@@ -358,11 +358,11 @@</span><br><span>         map(self:PCU, system:PCU);</span><br><span>   f_init_pcu(PCU, id, g_pcu_conn_id, g_pcu_last_info);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (mp_bb_trxc_port != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+  if (mp_bts_trxc_port != -1) {</span><br><span>                var TrxcMessage ret;</span><br><span>                 /* start with a default moderate timing offset equalling TA=2 */</span><br><span>             f_main_trxc_connect();</span><br><span style="color: hsl(0, 100%, 40%);">-          ret := f_TRXC_transceive(BB_TRXC, g_bb_trxc_conn_id, valueof(ts_TRXC_FAKE_TIMING(2*256)));</span><br><span style="color: hsl(120, 100%, 40%);">+            ret := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id, valueof(ts_TRXC_FAKE_TIMING(2*256)));</span><br><span>         }</span><br><span> }</span><br><span> </span><br><span>@@ -418,24 +418,24 @@</span><br><span> }</span><br><span> </span><br><span> private function f_trxc_connect() runs on ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-     map(self:BB_TRXC, system:BB_TRXC);</span><br><span style="color: hsl(120, 100%, 40%);">+    map(self:BTS_TRXC, system:BTS_TRXC);</span><br><span>         var Result res;</span><br><span style="color: hsl(0, 100%, 40%);">- res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port,</span><br><span style="color: hsl(120, 100%, 40%);">+       res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BTS_TRXC, mp_bts_trxc_ip, mp_bts_trxc_port,</span><br><span>                                                   "", -1, -1, {udp:={}}, {});</span><br><span>        if (not ispresent(res.connId)) {</span><br><span>             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Could not connect to trx-control interface of trxcon, check your configuration");</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       g_bb_trxc_conn_id := res.connId;</span><br><span style="color: hsl(120, 100%, 40%);">+      g_bts_trxc_conn_id := res.connId;</span><br><span> }</span><br><span> </span><br><span> private function f_trxc_fake_rssi(uint8_t rssi) runs on ConnHdlr {</span><br><span>     var TrxcMessage ret;</span><br><span style="color: hsl(0, 100%, 40%);">-    ret := f_TRXC_transceive(BB_TRXC, g_bb_trxc_conn_id, valueof(ts_TRXC_FAKE_RSSI(rssi)));</span><br><span style="color: hsl(120, 100%, 40%);">+       ret := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id, valueof(ts_TRXC_FAKE_RSSI(rssi)));</span><br><span> }</span><br><span> </span><br><span> private function f_trx_fake_toffs256(int16_t toffs256) runs on ConnHdlr {</span><br><span>      var TrxcMessage ret;</span><br><span style="color: hsl(0, 100%, 40%);">-    ret := f_TRXC_transceive(BB_TRXC, g_bb_trxc_conn_id, valueof(ts_TRXC_FAKE_TIMING(toffs256)));</span><br><span style="color: hsl(120, 100%, 40%);">+ ret := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id, valueof(ts_TRXC_FAKE_TIMING(toffs256)));</span><br><span> }</span><br><span> </span><br><span> /* first function started in ConnHdlr component */</span><br><span>@@ -447,7 +447,7 @@</span><br><span>         map(self:L1CTL, system:L1CTL);</span><br><span>       f_connect_reset(L1CTL);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     if (mp_bb_trxc_port != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+  if (mp_bts_trxc_port != -1) {</span><br><span>                f_trxc_connect();</span><br><span>    }</span><br><span> </span><br><span>@@ -1060,20 +1060,20 @@</span><br><span> }</span><br><span> </span><br><span> private function f_main_trxc_connect() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-    map(self:BB_TRXC, system:BB_TRXC);</span><br><span style="color: hsl(120, 100%, 40%);">+    map(self:BTS_TRXC, system:BTS_TRXC);</span><br><span>         var Result res;</span><br><span style="color: hsl(0, 100%, 40%);">- res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port,</span><br><span style="color: hsl(120, 100%, 40%);">+       res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BTS_TRXC, mp_bts_trxc_ip, mp_bts_trxc_port,</span><br><span>                                                   "", -1, -1, {udp:={}}, {});</span><br><span>        if (not ispresent(res.connId)) {</span><br><span>             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Could not connect to trx-control interface of trxcon, check your configuration");</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       g_bb_trxc_conn_id := res.connId;</span><br><span style="color: hsl(120, 100%, 40%);">+      g_bts_trxc_conn_id := res.connId;</span><br><span> }</span><br><span> </span><br><span> private function f_rach_toffs(int16_t toffs256, boolean expect_pass) runs on test_CT {</span><br><span>         var TrxcMessage ret;</span><br><span>         /* tell fake_trx to use a given timing offset for all bursts */</span><br><span style="color: hsl(0, 100%, 40%);">- ret := f_TRXC_transceive(BB_TRXC, g_bb_trxc_conn_id, valueof(ts_TRXC_FAKE_TIMING(toffs256)));</span><br><span style="color: hsl(120, 100%, 40%);">+ ret := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id, valueof(ts_TRXC_FAKE_TIMING(toffs256)));</span><br><span>      f_sleep(0.5);</span><br><span> </span><br><span>    /* Transmit RACH request + wait for confirmation */</span><br><span>@@ -1415,7 +1415,7 @@</span><br><span>  f_l1_tune(L1CTL);</span><br><span>    RSL.clear;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (mp_bb_trxc_port != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+  if (mp_bts_trxc_port != -1) {</span><br><span>                f_trxc_fake_rssi(rxlev2dbm(mp_ul_rxlev_exp));</span><br><span>                f_trx_fake_toffs256(g_pars.l1_pars.timing_offset_256syms);</span><br><span>   }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12536">change 12536</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/12536"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I7736abd85407c186856be9f1a22613a1fa6e0c32 </div>
<div style="display:none"> Gerrit-Change-Number: 12536 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>