<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22829">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, but someone else must approve
  daniel: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Introduce tests checking Pkt Cell Chg Notif dup retrans<br><br>Tests verify dup retrans triggered by MS timer are ignored if the target<br>cell is still the same (and hence no logic/behavior change is required,<br>current process can proceed onwards).<br><br>Related: SYS#4909<br>Change-Id: I00e8c1a63392bf8753f58f7d9d2d0e903ac5c529<br>---<br>M pcu/PCU_Tests.ttcn<br>1 file changed, 219 insertions(+), 23 deletions(-)<br><br></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 0b887db..f7687f5 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -57,6 +57,7 @@</span><br><span> import from StatsD_Checker all;</span><br><span> </span><br><span> import from IPA_Emulation all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_CTRL_Types all;</span><br><span> import from Osmocom_CTRL_Adapter all;</span><br><span> import from Osmocom_CTRL_Functions all;</span><br><span> </span><br><span>@@ -3611,6 +3612,55 @@</span><br><span>  return;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_outbound_nacc_rim_tx_resp(PCUIF_info_ind info_ind)</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 BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              info_ind.lac),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         info_ind.rac),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 info_ind.cell_id));</span><br><span style="color: hsl(120, 100%, 40%);">+     var BssgpCellId dst := valueof(ts_BssgpCellId(ts_RAI(ts_LAI('023F43'H, /* Decided by test itself (emulating BSC) */</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               423),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          2),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    5));</span><br><span style="color: hsl(120, 100%, 40%);">+    var RIM_Routing_Address src_addr := valueof(t_RIM_Routing_Address_cid(src));</span><br><span style="color: hsl(120, 100%, 40%);">+  var RIM_Routing_Address dst_addr := valueof(t_RIM_Routing_Address_cid(dst));</span><br><span style="color: hsl(120, 100%, 40%);">+  var template (value) RAN_Information_RIM_Container res_cont :=</span><br><span style="color: hsl(120, 100%, 40%);">+                ts_RAN_Information_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 ts_RIM_Sequence_Number(2),</span><br><span style="color: hsl(120, 100%, 40%);">+                                            ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_SING_REP),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 ts_RIM_Protocol_Version_Number(1),</span><br><span style="color: hsl(120, 100%, 40%);">+                                            tsu_ApplContainer_or_ApplErrContainer_NACC(tsu_ApplContainer_NACC(dst, false, 3, si_default)),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                omit);</span><br><span style="color: hsl(120, 100%, 40%);">+       RIM.send(ts_PDU_BSSGP_RAN_INFORMATION(ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                         ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                         res_cont));</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%);">+altstep as_outbound_nacc_rim_resolve(PCUIF_info_ind info_ind, boolean do_answer := true, boolean do_repeat := false)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       /* RIM procedure: */</span><br><span style="color: hsl(120, 100%, 40%);">+  var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              info_ind.lac),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         info_ind.rac),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 info_ind.cell_id));</span><br><span style="color: hsl(120, 100%, 40%);">+     var BssgpCellId dst := valueof(ts_BssgpCellId(ts_RAI(ts_LAI('023F43'H, /* Decided by test itself (emulating BSC) */</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               423),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          2),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    5));</span><br><span style="color: hsl(120, 100%, 40%);">+    var RIM_Routing_Address src_addr := valueof(t_RIM_Routing_Address_cid(src));</span><br><span style="color: hsl(120, 100%, 40%);">+  var RIM_Routing_Address dst_addr := valueof(t_RIM_Routing_Address_cid(dst));</span><br><span style="color: hsl(120, 100%, 40%);">+  [] RIM.receive(tr_RAN_INFORMATION_REQUEST(tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         tr_RAN_Information_Request_RIM_Container)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if (do_answer) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      f_outbound_nacc_rim_tx_resp(info_ind);</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (do_repeat) {</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%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Start NACC from MS side */</span><br><span> private function f_outbound_nacc_success(inout GprsMS ms, PCUIF_info_ind info_ind,</span><br><span>                                         boolean exp_rac_ci_query := true, boolean exp_si_query := true,</span><br><span>@@ -3639,29 +3689,7 @@</span><br><span> </span><br><span>        if (exp_si_query == true) {</span><br><span>          /* RIM procedure: */</span><br><span style="color: hsl(0, 100%, 40%);">-            var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1), /* '262F42'H */</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                        info_ind.lac),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                   info_ind.rac),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           info_ind.cell_id));</span><br><span style="color: hsl(0, 100%, 40%);">-               var BssgpCellId dst := valueof(ts_BssgpCellId(ts_RAI(ts_LAI('023F43'H, /* Decided by test itself (emulating BSC) */</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                         423),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    2),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                              5));</span><br><span style="color: hsl(0, 100%, 40%);">-              var RIM_Routing_Address src_addr := valueof(t_RIM_Routing_Address_cid(src));</span><br><span style="color: hsl(0, 100%, 40%);">-            var RIM_Routing_Address dst_addr := valueof(t_RIM_Routing_Address_cid(dst));</span><br><span style="color: hsl(0, 100%, 40%);">-            var template (value) RAN_Information_RIM_Container res_cont;</span><br><span style="color: hsl(0, 100%, 40%);">-            res_cont := ts_RAN_Information_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           ts_RIM_Sequence_Number(2),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_SING_REP),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           ts_RIM_Protocol_Version_Number(1),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      tsu_ApplContainer_or_ApplErrContainer_NACC(tsu_ApplContainer_NACC(dst, false, 3, si_default)),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                          omit);</span><br><span style="color: hsl(0, 100%, 40%);">-             RIM.receive(tr_RAN_INFORMATION_REQUEST(tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                               tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                   tr_RAN_Information_Request_RIM_Container));</span><br><span style="color: hsl(0, 100%, 40%);">-          RIM.send(ts_PDU_BSSGP_RAN_INFORMATION(ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, src_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                        ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, dst_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           res_cont));</span><br><span style="color: hsl(120, 100%, 40%);">+                as_outbound_nacc_rim_resolve(info_ind);</span><br><span>      }</span><br><span> </span><br><span>        /* Announce SI back to MS, continue NACC procedure */</span><br><span>@@ -4119,6 +4147,172 @@</span><br><span>      f_shutdown(__BFILE__, __LINE__, final := true);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Test MS sending Pkt Cell Change Notify twice (duplicate msg) while waiting for CTRL resolution */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_nacc_outbound_pkt_cell_chg_notif_dup() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  var PollFnCtx pollctx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var GprsMS ms;</span><br><span style="color: hsl(120, 100%, 40%);">+        var PCUIF_info_ind info_ind := valueof(ts_PCUIF_INFO_default);</span><br><span style="color: hsl(120, 100%, 40%);">+        var template (value) RlcmacUlCtrlMsg cell_chf_notif;</span><br><span style="color: hsl(120, 100%, 40%);">+  var RlcmacDlBlock dl_block;</span><br><span style="color: hsl(120, 100%, 40%);">+   var uint32_t sched_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+        var CtrlMessage rx_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+      var GsmArfcn req_arfcn := 862;</span><br><span style="color: hsl(120, 100%, 40%);">+        var uint6_t req_bsic := 43;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Initialize osmo-bsc emulation neighbor resolution CTRL port */</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ipa_ctrl_start_server(mp_ctrl_neigh_ip, mp_ctrl_neigh_port);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Initialize NS/BSSGP side */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_bssgp();</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Initialize GPRS MS side */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_gprs_ms();</span><br><span style="color: hsl(120, 100%, 40%);">+     ms := g_ms[0]; /* We only use first MS in this test */</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(), info_ind);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Make sure we are not affected by full cache from previous tests */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_pcuvty_flush_neigh_caches();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Establish BSSGP connection to the PCU */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_bssgp_establish();</span><br><span style="color: hsl(120, 100%, 40%);">+  f_bssgp_client_llgmm_assign(TLLI_UNUSED, ms.tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Send PACKET RESOURCE REQUEST */</span><br><span style="color: hsl(120, 100%, 40%);">+    pollctx := f_ms_establish_ul_tbf_2phase_access(ms, ts_RlcMacUlCtrl_PKT_RES_REQ(ms.tlli, ms_racap_gprs_def));</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Pkt Uplink Assignment above sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), pollctx.fn, nr := pollctx.tstrxbts);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Start NACC from MS side */</span><br><span style="color: hsl(120, 100%, 40%);">+ cell_chf_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF(ms.ul_tbf.tfi, req_arfcn, req_bsic);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chf_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* osmo-pcu should now ask for resolution: */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ipa_ctrl_wait_link_up();</span><br><span style="color: hsl(120, 100%, 40%);">+    var charstring ctrl_var := "neighbor_resolve_cgi_ps_from_lac_ci." &</span><br><span style="color: hsl(120, 100%, 40%);">+                                 int2str(info_ind.lac) & "." &</span><br><span style="color: hsl(120, 100%, 40%);">+                               int2str(info_ind.cell_id) & "." &</span><br><span style="color: hsl(120, 100%, 40%);">+                                   int2str(req_arfcn) & "." &</span><br><span style="color: hsl(120, 100%, 40%);">+                                  int2str(req_bsic);</span><br><span style="color: hsl(120, 100%, 40%);">+        IPA_CTRL.receive(tr_CtrlMsgGet(?, ctrl_var)) -> value rx_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Before receiving CTRL response, MS retransmits Pkt cell Chg Notif */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chf_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms));</span><br><span style="color: hsl(120, 100%, 40%);">+   f_sleep(0.2); /* let some time to avoid race conditons between CTRL and RLCMAC */</span><br><span style="color: hsl(120, 100%, 40%);">+     IPA_CTRL.send(ts_CtrlMsgGetRepl(rx_ctrl.cmd.id, valueof(ctrl_var), valueof("023-43-423-2-5")));</span><br><span style="color: hsl(120, 100%, 40%);">+     timer T := 2.0;</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%);">+ [] as_outbound_nacc_rim_resolve(info_ind, do_repeat := true);</span><br><span style="color: hsl(120, 100%, 40%);">+ [] IPA_CTRL.receive(tr_CtrlMsgGet(?, ctrl_var)) -> value rx_ctrl {</span><br><span style="color: hsl(120, 100%, 40%);">+         setverdict(fail, "Received unexpected CTRL resolution after duplicate Pkt Cell Change Notification:", rx_ctrl);</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%);">+     [] T.timeout {</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Announce SI back to MS, continue NACC procedure */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_handle_pkt_neighbor_cell_data(ms, si_default);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Obtain a Downlink block and make sure it is a Pkt Cell Chg Continue */</span><br><span style="color: hsl(120, 100%, 40%);">+     f_rx_rlcmac_dl_block(dl_block, sched_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE))) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Rx unexpected DL block: ", dl_block);</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%);">+     /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+     if (dl_block.ctrl.mac_hdr.rrbp_valid) {</span><br><span style="color: hsl(120, 100%, 40%);">+               sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);</span><br><span style="color: hsl(120, 100%, 40%);">+              f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);</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 style="color: hsl(120, 100%, 40%);">+/* Test MS sending Pkt Cell Change Notify twice (duplicate msg) while waiting for SI resolution */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_nacc_outbound_pkt_cell_chg_notif_dup2() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var PollFnCtx pollctx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var GprsMS ms;</span><br><span style="color: hsl(120, 100%, 40%);">+        var PCUIF_info_ind info_ind := valueof(ts_PCUIF_INFO_default);</span><br><span style="color: hsl(120, 100%, 40%);">+        var template (value) RlcmacUlCtrlMsg cell_chf_notif;</span><br><span style="color: hsl(120, 100%, 40%);">+  var RlcmacDlBlock dl_block;</span><br><span style="color: hsl(120, 100%, 40%);">+   var uint32_t sched_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+        var CtrlMessage rx_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+      var GsmArfcn req_arfcn := 862;</span><br><span style="color: hsl(120, 100%, 40%);">+        var uint6_t req_bsic := 43;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Initialize osmo-bsc emulation neighbor resolution CTRL port */</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ipa_ctrl_start_server(mp_ctrl_neigh_ip, mp_ctrl_neigh_port);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Initialize NS/BSSGP side */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_init_bssgp();</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Initialize GPRS MS side */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init_gprs_ms();</span><br><span style="color: hsl(120, 100%, 40%);">+     ms := g_ms[0]; /* We only use first MS in this test */</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(), info_ind);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Make sure we are not affected by full cache from previous tests */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_pcuvty_flush_neigh_caches();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Establish BSSGP connection to the PCU */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_bssgp_establish();</span><br><span style="color: hsl(120, 100%, 40%);">+  f_bssgp_client_llgmm_assign(TLLI_UNUSED, ms.tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Send PACKET RESOURCE REQUEST */</span><br><span style="color: hsl(120, 100%, 40%);">+    pollctx := f_ms_establish_ul_tbf_2phase_access(ms, ts_RlcMacUlCtrl_PKT_RES_REQ(ms.tlli, ms_racap_gprs_def));</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Pkt Uplink Assignment above sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), pollctx.fn, nr := pollctx.tstrxbts);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Start NACC from MS side */</span><br><span style="color: hsl(120, 100%, 40%);">+ cell_chf_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF(ms.ul_tbf.tfi, req_arfcn, req_bsic);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chf_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* osmo-pcu should now ask for resolution: */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_ipa_ctrl_wait_link_up();</span><br><span style="color: hsl(120, 100%, 40%);">+    var charstring ctrl_var := "neighbor_resolve_cgi_ps_from_lac_ci." &</span><br><span style="color: hsl(120, 100%, 40%);">+                                 int2str(info_ind.lac) & "." &</span><br><span style="color: hsl(120, 100%, 40%);">+                               int2str(info_ind.cell_id) & "." &</span><br><span style="color: hsl(120, 100%, 40%);">+                                   int2str(req_arfcn) & "." &</span><br><span style="color: hsl(120, 100%, 40%);">+                                  int2str(req_bsic);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrl_exp_get(IPA_CTRL, ctrl_var, "023-43-423-2-5");</span><br><span style="color: hsl(120, 100%, 40%);">+       as_outbound_nacc_rim_resolve(info_ind, do_answer := false);</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Before receiving RIM response, MS retransmits Pkt cell Chg Notif */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chf_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms));</span><br><span style="color: hsl(120, 100%, 40%);">+   f_sleep(0.2); /* let some time to avoid race conditons between CTRL and RLCMAC */</span><br><span style="color: hsl(120, 100%, 40%);">+     f_outbound_nacc_rim_tx_resp(info_ind);</span><br><span style="color: hsl(120, 100%, 40%);">+        timer T := 1.0;</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%);">+ [] RIM.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Received unexpected RIM message");</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%);">+     [] T.timeout {</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Announce SI back to MS, continue NACC procedure */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_handle_pkt_neighbor_cell_data(ms, si_default);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Obtain a Downlink block and make sure it is a Pkt Cell Chg Continue */</span><br><span style="color: hsl(120, 100%, 40%);">+     f_rx_rlcmac_dl_block(dl_block, sched_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE))) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Rx unexpected DL block: ", dl_block);</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%);">+     /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+     if (dl_block.ctrl.mac_hdr.rrbp_valid) {</span><br><span style="color: hsl(120, 100%, 40%);">+               sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);</span><br><span style="color: hsl(120, 100%, 40%);">+              f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);</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> /* Send a RIM RAN info request to the PCU and verify the response, we expect</span><br><span>  * getting the system information back which we have transfered to the PCU via</span><br><span>  * PCUIF on startup. */</span><br><span>@@ -4346,6 +4540,8 @@</span><br><span>    execute( TC_nacc_outbound_rac_ci_resolve_timeout() );</span><br><span>        execute( TC_nacc_outbound_rac_ci_resolve_fail_parse_response() );</span><br><span>    execute( TC_nacc_outbound_si_resolve_timeout() );</span><br><span style="color: hsl(120, 100%, 40%);">+     execute( TC_nacc_outbound_pkt_cell_chg_notif_dup() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_nacc_outbound_pkt_cell_chg_notif_dup2() );</span><br><span> </span><br><span>   execute( TC_rim_ran_info_req_single_rep() );</span><br><span>         execute( TC_rim_ran_info_req_single_rep_no_si() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22829">change 22829</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/+/22829"/><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: I00e8c1a63392bf8753f58f7d9d2d0e903ac5c529 </div>
<div style="display:none"> Gerrit-Change-Number: 22829 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>