<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18423">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">PCU: introduce TC_egprs_pkt_chan_req_reject_content<br><br>The purpose of this test case is to verify the contents of RR<br>Immediate Assignment Reject message (and its IAR Rest Octets)<br>sent in response to EGPRS Packet Channel Request (11 bit RA).<br><br>To provoke the reject message, test case crafts an incorrect<br>EGPRS Packet Channel Request message ('111111xxxxx'B).<br><br>Note that at the time of writing this test, the IUT does not<br>handle EGPRS Packet Channel Request properly, so it fails.<br><br>Change-Id: I4bfd5621085d63896e2e9b70355524cf4285036a<br>Related: OS#1548<br>---<br>M pcu/PCU_Tests.ttcn<br>1 file changed, 70 insertions(+), 1 deletion(-)<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/23/18423/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn</span><br><span>index 22e3c1f..fb59c13 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -7,7 +7,7 @@</span><br><span>    those NS and BSSGP implementations on the BSS (PCU) side. */</span><br><span> </span><br><span> /* (C) 2018-2019 Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(0, 100%, 40%);">- * (C) 2019 Vadim Yanitskiy <axilirator@gmail.com></span><br><span style="color: hsl(120, 100%, 40%);">+ * (C) 2019-2020 Vadim Yanitskiy <axilirator@gmail.com></span><br><span>  * All rights reserved.</span><br><span>  *</span><br><span>  * Released under the terms of GNU General Public License, Version 2 or</span><br><span>@@ -1764,6 +1764,74 @@</span><br><span>      f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_egprs_pkt_chan_req_reject(bitstring ra11, uint32_t fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                template IARRestOctets rest := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             PCUIF_BurstType bt := BURST_TYPE_1)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        var template ReqRefWaitInd tr_ref;</span><br><span style="color: hsl(120, 100%, 40%);">+    var GsmRrMessage rr_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+      var boolean ok;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Send RACH.ind with malformed EGPRS Packet Channel Request */</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS.send(ts_PCUIF_RACH_IND(bts_nr := 0, trx_nr := 0, ts_nr := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 ra := bit2int(ra11), is_11bit := 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   burst_type := bt, fn := fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   arfcn := 871));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Abuse f_pcuif_rx_imm_ass(): wait for Immediate Assignment Reject */</span><br><span style="color: hsl(120, 100%, 40%);">+        ok := f_pcuif_rx_imm_ass(rr_msg, t_imm_ass := tr_IMM_ASS_REJ);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (not ok) {</span><br><span style="color: hsl(120, 100%, 40%);">+         setverdict(fail, "Failed to match Immediate Assignment Reject");</span><br><span style="color: hsl(120, 100%, 40%);">+            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 style="color: hsl(120, 100%, 40%);">+   /* Just to have a short-name reference to the actual message */</span><br><span style="color: hsl(120, 100%, 40%);">+       var ImmediateAssignmentReject iar := rr_msg.payload.imm_ass_rej;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Make sure that Request Reference list contains at least one entry</span><br><span style="color: hsl(120, 100%, 40%);">+   * with our TDMA frame number, and RA is set to 'reserved' value 127. */</span><br><span style="color: hsl(120, 100%, 40%);">+      tr_ref := tr_ReqRefWaitInd(f_compute_ReqRef(127, fn));</span><br><span style="color: hsl(120, 100%, 40%);">+        if (not match(iar.payload, { *, tr_ref, * })) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Request Reference list does not match");</span><br><span style="color: hsl(120, 100%, 40%);">+          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 style="color: hsl(120, 100%, 40%);">+   /* Match Feature Indicator (must indicate PS domain) */</span><br><span style="color: hsl(120, 100%, 40%);">+       if (not match(iar.feature_ind, FeatureIndicator:{?, false, true})) {</span><br><span style="color: hsl(120, 100%, 40%);">+          setverdict(fail, "Feature Indicator does not match");</span><br><span style="color: hsl(120, 100%, 40%);">+               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 style="color: hsl(120, 100%, 40%);">+   /* Match IAR Rest Octets */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (not match(iar.rest_octets, rest)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "IAR Rest Octets does not match: ",</span><br><span style="color: hsl(120, 100%, 40%);">+                           iar.rest_octets, " vs expected ", rest);</span><br><span style="color: hsl(120, 100%, 40%);">+         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 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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Verify the contents of RR Immediate Assignment Reject message and its</span><br><span style="color: hsl(120, 100%, 40%);">+ * Rest Octets sent in response to EGPRS Packet Channel Request (11 bit). */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_egprs_pkt_chan_req_reject_content() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var template IARRestOctets rest;</span><br><span style="color: hsl(120, 100%, 40%);">+      var BIT5 ext_ra;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Initialize the PCU interface abstraction */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_raw(testcasename());</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ for (var integer i := 0; i < 6; i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+              ext_ra := int2bit(f_rnd_int(32), 5); /* 5 LSB's of RA11 */</span><br><span style="color: hsl(120, 100%, 40%);">+                rest := tr_IARRestOctets({ *, tr_ExtRAOpt(ext_ra), * });</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+            /* Intentionally incorrect message (see table 11.2.5a.2) */</span><br><span style="color: hsl(120, 100%, 40%);">+           f_TC_egprs_pkt_chan_req_reject('111111'B & ext_ra, 1337 + i, rest);</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%);">+   f_shutdown(__BFILE__, __LINE__, final := true);</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>    execute( TC_pcuif_suspend() );</span><br><span>       execute( TC_ta_ptcch_idle() );</span><br><span>@@ -1796,6 +1864,7 @@</span><br><span>       execute( TC_egprs_pkt_chan_req_signalling() );</span><br><span>       execute( TC_egprs_pkt_chan_req_one_phase() );</span><br><span>        execute( TC_egprs_pkt_chan_req_two_phase() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_egprs_pkt_chan_req_reject_content() );</span><br><span> </span><br><span>       execute( TC_mo_ping_pong_with_ul_racap_egprs_only() );</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18423">change 18423</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/+/18423"/><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: I4bfd5621085d63896e2e9b70355524cf4285036a </div>
<div style="display:none"> Gerrit-Change-Number: 18423 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>