<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/14350">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Add test csse for I frame with wrong C/R value<br><br>Implemented as BTS_Tests_LAPDm.TC_incorrect_cr()<br><br>Change-Id: I19e50049625bd31662a1e22b1394b69b2d249104<br>---<br>M bts/BTS_Tests_LAPDm.ttcn<br>1 file changed, 54 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/50/14350/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests_LAPDm.ttcn b/bts/BTS_Tests_LAPDm.ttcn</span><br><span>index 218804e..f57b052 100644</span><br><span>--- a/bts/BTS_Tests_LAPDm.ttcn</span><br><span>+++ b/bts/BTS_Tests_LAPDm.ttcn</span><br><span>@@ -1001,6 +1001,59 @@</span><br><span>     f_testmatrix_each_chan(pars, refers(f_TC_rr_response_frame_loss));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Ensure BTS ignores I frames with wrong C/R bit; Inspired by TS 51.010-1 25.2.5.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_incorrect_cr(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+     var RslLinkId link_id := valueof(ts_RslLinkID_DCCH(0));</span><br><span style="color: hsl(120, 100%, 40%);">+       var integer sapi := link_id.sapi;</span><br><span style="color: hsl(120, 100%, 40%);">+     var boolean is_sacch := false;</span><br><span style="color: hsl(120, 100%, 40%);">+        if (link_id.c == SACCH) {</span><br><span style="color: hsl(120, 100%, 40%);">+             is_sacch := true;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     timer T := 3.0;</span><br><span style="color: hsl(120, 100%, 40%);">+       var default d;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      fp_common_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* some common altstep for meas res and other background noise */</span><br><span style="color: hsl(120, 100%, 40%);">+     d := activate(as_ignore_background(true));</span><br><span style="color: hsl(120, 100%, 40%);">+    RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+    LAPDM.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_establish_mo(link_id);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    var octetstring l3_mo := f_rnd_octstring(10);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Send an I frame to the BTS: SAPI = 0, C = 0, P = 1, M = 0, L = 3, N(S) = 0, N(R) = 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+    LAPDM.send(t_PH_DATA(0, is_sacch, ts_LAPDm_I(sapi, c_r:=cr_MO_RSP, p:=true, nr:=0, ns:=0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  l3:=l3_mo)));</span><br><span style="color: hsl(120, 100%, 40%);">+    T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] RSL.receive(tr_RSL_DATA_IND(g_chan_nr, link_id, l3_mo)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          setverdict(fail, "BTS didn't ignore I frame with wrong C/R bit");</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] RSL.receive(tr_RSL_ERROR_IND(g_chan_nr, link_id, '0C'O)) {</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%);">+     /* ensure BTS still sends idle frames */</span><br><span style="color: hsl(120, 100%, 40%);">+      [] as_lapdm_idle() {</span><br><span style="color: hsl(120, 100%, 40%);">+          setverdict(pass, "still sending idle frames");</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T.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%);">+   /* Send RR command P=1 */</span><br><span style="color: hsl(120, 100%, 40%);">+     LAPDM.send(t_PH_DATA(0, is_sacch, ts_LAPDm_RR(sapi, c_r:=cr_MO_CMD, p:=true, nr:=0)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* The BTS shall respond with a RR response, F bit set to 1. */</span><br><span style="color: hsl(120, 100%, 40%);">+       LAPDM.receive(t_PH_DATA(0, is_sacch, tr_LAPDm_RR(sapi, c_r:=cr_MT_RSP, p:=true, nr:=0)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   deactivate(d);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      fp_common_fini();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_incorrect_cr() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+    var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_testmatrix_each_chan(pars, refers(f_TC_incorrect_cr));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> control {</span><br><span>     execute(TC_foo());</span><br><span>   execute(TC_sabm_ua_dcch_sapi0());</span><br><span>@@ -1019,6 +1072,7 @@</span><br><span>    execute(TC_segm_concat_sacch());</span><br><span>     execute(TC_t200_n200());</span><br><span>     execute(TC_rr_response_frame_loss());</span><br><span style="color: hsl(120, 100%, 40%);">+ execute(TC_incorrect_cr());</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/+/14350">change 14350</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/+/14350"/><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: I19e50049625bd31662a1e22b1394b69b2d249104 </div>
<div style="display:none"> Gerrit-Change-Number: 14350 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>