<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25670">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BTS: reproduce a race condition described in OS#5245<br><br>Change-Id: I3b602ac9dbe0ab3e80eb30de573c9b48a79872d8<br>Depends: Idb1ef445bc14a6312f08a83ecacc3a938b0e1d70<br>Related: OS#5245<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 68 insertions(+), 0 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/70/25670/1</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 44d9de4..6753eec 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -6281,6 +6281,72 @@</span><br><span>     vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Reproduce a race condition described in OS#5245 */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_rsl_chan_act_deact(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_rsl_chan_act(g_pars.chan_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_rsl_chan_deact();</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_dyn_osmo_pdch_tchh_race_act() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var ConnHdlrPars pars[2];</span><br><span style="color: hsl(120, 100%, 40%);">+     var ConnHdlr vc_conn[2];</span><br><span style="color: hsl(120, 100%, 40%);">+      var TrxcMessage rsp;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Configure an artificial delay of 200 ms for TRXC RSP messages */</span><br><span style="color: hsl(120, 100%, 40%);">+   rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 ts_TRXC_FAKE_TRXC_DELAY(200));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Activate all sub-channels of TCH/H on TS4 immediately in hope that the second</span><br><span style="color: hsl(120, 100%, 40%);">+       * CHANnel ACTIVation message will be handled before the PHY responds to 'SETSLOT' */</span><br><span style="color: hsl(120, 100%, 40%);">+ for (var integer i := 0; i < sizeof(pars); i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           /* TS4 is an Osmocom style dynamic timeslot, we want it to be TCH/H */</span><br><span style="color: hsl(120, 100%, 40%);">+                pars[i] := valueof(t_Pars(t_RslChanNr_Lm(4, i), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+               vc_conn[i] := f_start_handler(refers(f_rsl_chan_act_deact),</span><br><span style="color: hsl(120, 100%, 40%);">+                                         pars[i], l1ctl := false);</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%);">+   /* Wait for all components to finish */</span><br><span style="color: hsl(120, 100%, 40%);">+       for (var integer i := 0; i < sizeof(pars); i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           vc_conn[i].done;</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%);">+   /* Disable the artificial delay for TRXC RSP messages */</span><br><span style="color: hsl(120, 100%, 40%);">+      rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 ts_TRXC_FAKE_TRXC_DELAY(0));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_dyn_osmo_pdch_sdcch8_race_act() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var ConnHdlrPars pars[8];</span><br><span style="color: hsl(120, 100%, 40%);">+     var ConnHdlr vc_conn[8];</span><br><span style="color: hsl(120, 100%, 40%);">+      var TrxcMessage rsp;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Configure an artificial delay of 200 ms for TRXC RSP messages */</span><br><span style="color: hsl(120, 100%, 40%);">+   rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 ts_TRXC_FAKE_TRXC_DELAY(200));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Activate all sub-channels of SDCCH/8 on TS4 immediately in hope that subsequent</span><br><span style="color: hsl(120, 100%, 40%);">+     * CHANnel ACTIVation messages will be handled before the PHY responds to 'SETSLOT' */</span><br><span style="color: hsl(120, 100%, 40%);">+        for (var integer i := 0; i < sizeof(pars); i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           /* TS4 is an Osmocom style dynamic timeslot, we want it to be SDCCH/8 */</span><br><span style="color: hsl(120, 100%, 40%);">+              pars[i] := valueof(t_Pars(t_RslChanNr_SDCCH8(4, i), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+           vc_conn[i] := f_start_handler(refers(f_rsl_chan_act_deact),</span><br><span style="color: hsl(120, 100%, 40%);">+                                         pars[i], l1ctl := false);</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%);">+   /* Wait for all components to finish */</span><br><span style="color: hsl(120, 100%, 40%);">+       for (var integer i := 0; i < sizeof(pars); i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           vc_conn[i].done;</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%);">+   /* Disable the artificial delay for TRXC RSP messages */</span><br><span style="color: hsl(120, 100%, 40%);">+      rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 ts_TRXC_FAKE_TRXC_DELAY(0));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /***********************************************************************</span><br><span>  * IPA Style Dynamic Timeslot Support</span><br><span>  ***********************************************************************/</span><br><span>@@ -7915,6 +7981,8 @@</span><br><span>         execute( TC_dyn_osmo_pdch_tchf_act() );</span><br><span>      execute( TC_dyn_osmo_pdch_tchh_act() );</span><br><span>      execute( TC_dyn_osmo_pdch_sdcch8_act() );</span><br><span style="color: hsl(120, 100%, 40%);">+     execute( TC_dyn_osmo_pdch_tchh_race_act() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_dyn_osmo_pdch_sdcch8_race_act() );</span><br><span>       execute( TC_dyn_ipa_pdch_tchf_act() );</span><br><span>       execute( TC_dyn_ipa_pdch_tchf_act_pdch_act_nack() );</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25670">change 25670</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/+/25670"/><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: I3b602ac9dbe0ab3e80eb30de573c9b48a79872d8 </div>
<div style="display:none"> Gerrit-Change-Number: 25670 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>