<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16687">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Introduce test TC_rach_egprs_only<br><br>Change-Id: I96e0d28bed749ef657f0b68d0beee3f8471ab3e0<br>---<br>M library/GSM_RR_Types.ttcn<br>M pcu/PCU_Tests_RAW.ttcn<br>2 files changed, 74 insertions(+), 4 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/87/16687/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn</span><br><span>index f5eeda5..4c2874a 100644</span><br><span>--- a/library/GSM_RR_Types.ttcn</span><br><span>+++ b/library/GSM_RR_Types.ttcn</span><br><span>@@ -911,6 +911,26 @@</span><br><span>              }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        template GsmRrMessage tr_IMM_ASS_REJ(template uint8_t ra := ?, template GsmFrameNumber fn := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+          header := t_RrHeader(IMMEDIATE_ASSIGNMENT_REJECT, ?),</span><br><span style="color: hsl(120, 100%, 40%);">+         payload := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  imm_ass_rej := {</span><br><span style="color: hsl(120, 100%, 40%);">+                              feature_ind :=  {</span><br><span style="color: hsl(120, 100%, 40%);">+                                             spare := '00'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               cs_ir := false,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               ps_ir := true</span><br><span style="color: hsl(120, 100%, 40%);">+                                         },</span><br><span style="color: hsl(120, 100%, 40%);">+                            page_mode := PAGE_MODE_NORMAL,</span><br><span style="color: hsl(120, 100%, 40%);">+                                payload := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                          {req_ref := tr_compute_ReqRef(ra, fn), wait_ind := ?},</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%);">+                                     }</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%);">+</span><br><span>         template GsmRrMessage tr_PAG_REQ1(template MobileIdentityLV mi1 := ?) := {</span><br><span>           header := t_RrHeader(PAGING_REQUEST_TYPE_1, ?),</span><br><span>              payload := {</span><br><span>diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn</span><br><span>index d19093c..d2c4e2a 100644</span><br><span>--- a/pcu/PCU_Tests_RAW.ttcn</span><br><span>+++ b/pcu/PCU_Tests_RAW.ttcn</span><br><span>@@ -170,13 +170,19 @@</span><br><span>    f_vty_config2(PCUVTY, {"pcu"}, cmd);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_init_vty(charstring id) runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_init_vty(charstring id, boolean egprs_only := false) runs on RAW_PCU_Test_CT {</span><br><span>       map(self:PCUVTY, system:PCUVTY);</span><br><span>     f_vty_set_prompts(PCUVTY);</span><br><span>   f_vty_transceive(PCUVTY, "enable");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       if (egprs_only) {</span><br><span style="color: hsl(120, 100%, 40%);">+             f_vty_config2(PCUVTY, {"pcu"}, "egprs only");</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              f_vty_config2(PCUVTY, {"pcu"}, "no egprs");</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_init_raw(charstring id, template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default)</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_init_raw(charstring id, boolean egprs_only := false, template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default)</span><br><span> runs on RAW_PCU_Test_CT {</span><br><span>     var RAW_PCUIF_CT vc_PCUIF;</span><br><span>   var RAW_PCU_BTS_CT vc_BTS;</span><br><span>@@ -195,7 +201,7 @@</span><br><span>     connect(vc_BTS:PCUIF, vc_PCUIF:BTS);</span><br><span>         connect(vc_BTS:TC, self:BTS);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       f_init_vty(id);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_init_vty(id, egprs_only);</span><br><span> </span><br><span>      vc_PCUIF.start(f_PCUIF_CT_handler(mp_pcu_sock_path));</span><br><span>        vc_BTS.start(f_BTS_CT_handler(0, valueof(info_ind)));</span><br><span>@@ -1041,7 +1047,7 @@</span><br><span>        info_ind.t3169 := 1;</span><br><span> </span><br><span>     /* Initialize the PCU interface abstraction */</span><br><span style="color: hsl(0, 100%, 40%);">-  f_init_raw(testcasename(), info_ind);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_raw(testcasename(), false, info_ind);</span><br><span> </span><br><span>     /* Establish BSSGP connection to the PCU */</span><br><span>  f_bssgp_establish();</span><br><span>@@ -1400,6 +1406,48 @@</span><br><span>        f_tc_paging_ps_from_sgsn(mp_gb_cfg.bvci);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Reproduce osmo-pcu rejects 8-bit RACH req when in "egprs only" mode. */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_rach_egprs_only() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var PCUIF_Message pcu_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+    var GsmRrMessage rr_imm_ass_rej;</span><br><span style="color: hsl(120, 100%, 40%);">+      var uint32_t fn;</span><br><span style="color: hsl(120, 100%, 40%);">+      var uint16_t ra := oct2int('3A'O);</span><br><span style="color: hsl(120, 100%, 40%);">+    timer T;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Initialize the PCU interface abstraction with EGPRS-only */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_raw(testcasename(), egprs_only := true);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* FIXME: ask the BTS component to give us the current TDMA fn */</span><br><span style="color: hsl(120, 100%, 40%);">+     fn := 1337;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Send RACH.ind (8 bit) */</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 := ra, is_11bit := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                              burst_type := BURST_TYPE_0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   fn := fn, arfcn := 871,</span><br><span style="color: hsl(120, 100%, 40%);">+                               qta := 0));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Expect Immediate (TBF) Assignment Reject on TS0/AGCH */</span><br><span style="color: hsl(120, 100%, 40%);">+    T.start(2.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BTS.receive(tr_PCUIF_DATA_REQ(bts_nr := 0, trx_nr := 0, ts_nr := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         sapi := PCU_IF_SAPI_AGCH, data := ?))</span><br><span style="color: hsl(120, 100%, 40%);">+                                        -> value pcu_msg {</span><br><span style="color: hsl(120, 100%, 40%);">+         rr_imm_ass_rej := dec_GsmRrMessage(pcu_msg.u.data_req.data);</span><br><span style="color: hsl(120, 100%, 40%);">+          log("Rx Immediate Assignment Reject: ", rr_imm_ass_rej);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          if (match(rr_imm_ass_rej, tr_IMM_ASS_REJ(ra, fn))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+             } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "IMM ASS REJ didn't match");</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%);">+     [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                setverdict(fail, "Timeout waiting for Immediate Assignment Reject");</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%);">+</span><br><span> control {</span><br><span>  execute( TC_pcuif_suspend() );</span><br><span>       execute( TC_ta_ptcch_idle() );</span><br><span>@@ -1417,6 +1465,8 @@</span><br><span>       execute (TC_paging_cs_from_sgsn_ptp() );</span><br><span>     execute (TC_paging_ps_from_sgsn_sign() );</span><br><span>    execute (TC_paging_ps_from_sgsn_ptp() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_rach_egprs_only() );</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/+/16687">change 16687</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/+/16687"/><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: I96e0d28bed749ef657f0b68d0beee3f8471ab3e0 </div>
<div style="display:none"> Gerrit-Change-Number: 16687 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>