PCU_Tests: fix TC_nacc_outbound_pkt_cell_chg_notif_dup
The TC_nacc_outbound_pkt_cell_chg_notif_dup is currently failing
because in [1] we changed the default hard-coded MCC/MNC values in
ts_BssgpCellIdDstAddr_default, however these it's still using
hardcoded MCC=023/MNC=43. I overlooked this in [2].
Let's split up the f_handle_nacc_rac_ci_query() into four functions:
* f_ctrl_rx_nacc_rac_ci_req() / f_ctrl_tx_nacc_rac_ci_rsp(),
* f_pcuif_rx_nacc_rac_ci_req() / f_pcuif_tx_nacc_rac_ci_rsp(),
and use them in TC_nacc_outbound_pkt_cell_chg_notif_dup. Also
employ them in TC_nacc_outbound_pkt_cell_chg_notif_twice.
Change-Id: I3e84f55eedd278fb239600d6a0465bd34fd8cd0b
Related: [1] 03f74d413258a125d6e64a4241a82d8384693895
Fixes: [2] 7295661af52ab397acd7376023817b64e1db5a66
Related: OS#5901
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 439ffea..954216f 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -5189,38 +5189,67 @@
}
}
+private function f_ctrl_rx_nacc_rac_ci_req(out CtrlMessage ctrl_req,
+ PCUIF_info_ind info_ind,
+ GsmArfcn req_arfcn,
+ uint6_t req_bsic)
+runs on RAW_PCU_Test_CT {
+ var charstring ctrl_var := "neighbor_resolve_cgi_ps_from_lac_ci." &
+ int2str(info_ind.lac) & "." &
+ int2str(info_ind.cell_id) & "." &
+ int2str(req_arfcn) & "." &
+ int2str(req_bsic);
+ f_ipa_ctrl_wait_link_up();
+ IPA_CTRL.receive(tr_CtrlMsgGet(?, ctrl_var)) -> value ctrl_req;
+}
+
+private function f_ctrl_tx_nacc_rac_ci_rsp(in CtrlMessage ctrl_req)
+runs on RAW_PCU_Test_CT {
+ var BssgpCellId addr := valueof(ts_BssgpCellIdDstAddr_default);
+ IPA_CTRL.send(ts_CtrlMsgGetRepl(ctrl_req.cmd.id,
+ ctrl_req.cmd.variable,
+ hex2str(c_BssgpCellMcc) & "-" &
+ hex2str(c_BssgpCellMnc) & "-" &
+ int2str(addr.ra_id.lai.lac) & "-" &
+ int2str(addr.ra_id.rac) & "-" &
+ int2str(addr.cell_id)));
+}
+
+private function f_pcuif_rx_nacc_rac_ci_req(out PCUIF_Message addr_req,
+ PCUIF_info_ind info_ind,
+ GsmArfcn req_arfcn,
+ uint6_t req_bsic)
+runs on RAW_PCU_Test_CT {
+ BTS.receive(tr_PCUIF_NEIGH_ADDR_REQ(0, info_ind.lac, info_ind.cell_id,
+ req_arfcn, req_bsic)) -> value addr_req;
+}
+
+private function f_pcuif_tx_nacc_rac_ci_rsp(in PCUIF_Message addr_req)
+runs on RAW_PCU_Test_CT {
+ var BssgpCellId addr := valueof(ts_BssgpCellIdDstAddr_default);
+ BTS.send(ts_PCUIF_NEIGH_ADDR_CNF(0, addr_req.u.container.u.neigh_addr_req, 0,
+ str2int(hex2str(c_BssgpCellMcc)),
+ str2int(hex2str(c_BssgpCellMnc)),
+ lengthof(c_BssgpCellMnc) - 2,
+ addr.ra_id.lai.lac,
+ addr.ra_id.rac,
+ addr.cell_id));
+}
+
private function f_handle_nacc_rac_ci_query(PCUIF_info_ind info_ind, GsmArfcn req_arfcn, uint6_t req_bsic,
boolean answer := true, boolean use_old_ctrl_iface := false)
runs on RAW_PCU_Test_CT {
if (use_old_ctrl_iface == true) {
- f_ipa_ctrl_wait_link_up();
- var charstring ctrl_var := "neighbor_resolve_cgi_ps_from_lac_ci." &
- int2str(info_ind.lac) & "." &
- int2str(info_ind.cell_id) & "." &
- int2str(req_arfcn) & "." &
- int2str(req_bsic);
+ var CtrlMessage ctrl_req;
+ f_ctrl_rx_nacc_rac_ci_req(ctrl_req, info_ind, req_arfcn, req_bsic);
if (answer) {
- var BssgpCellId addr := valueof(ts_BssgpCellIdDstAddr_default);
- f_ctrl_exp_get(IPA_CTRL, ctrl_var, hex2str(c_BssgpCellMcc) & "-" &
- hex2str(c_BssgpCellMnc) & "-" &
- int2str(addr.ra_id.lai.lac) & "-" &
- int2str(addr.ra_id.rac) & "-" &
- int2str(addr.cell_id));
- } else {
- f_ctrl_exp_get(IPA_CTRL, ctrl_var, omit);
+ f_ctrl_tx_nacc_rac_ci_rsp(ctrl_req);
}
} else {
- var PCUIF_Message pcu_msg;
- BTS.receive(tr_PCUIF_NEIGH_ADDR_REQ(0, info_ind.lac, info_ind.cell_id, req_arfcn, req_bsic)) -> value pcu_msg;
+ var PCUIF_Message pcuif_req;
+ f_pcuif_rx_nacc_rac_ci_req(pcuif_req, info_ind, req_arfcn, req_bsic);
if (answer) {
- var BssgpCellId addr := valueof(ts_BssgpCellIdDstAddr_default);
- BTS.send(ts_PCUIF_NEIGH_ADDR_CNF(0, pcu_msg.u.container.u.neigh_addr_req, 0,
- str2int(hex2str(c_BssgpCellMcc)),
- str2int(hex2str(c_BssgpCellMnc)),
- lengthof(c_BssgpCellMnc) - 2,
- addr.ra_id.lai.lac,
- addr.ra_id.rac,
- addr.cell_id));
+ f_pcuif_tx_nacc_rac_ci_rsp(pcuif_req);
}
}
}
@@ -5747,15 +5776,9 @@
/* osmo-pcu should now ask for resolution: */
if (use_old_ctrl_iface) {
- f_ipa_ctrl_wait_link_up();
- ctrl_var := "neighbor_resolve_cgi_ps_from_lac_ci." &
- int2str(info_ind.lac) & "." &
- int2str(info_ind.cell_id) & "." &
- int2str(req_arfcn) & "." &
- int2str(req_bsic);
- IPA_CTRL.receive(tr_CtrlMsgGet(?, ctrl_var)) -> value rx_ctrl;
+ f_ctrl_rx_nacc_rac_ci_req(rx_ctrl, info_ind, req_arfcn, req_bsic);
} else {
- BTS.receive(tr_PCUIF_NEIGH_ADDR_REQ(0, info_ind.lac, info_ind.cell_id, req_arfcn, req_bsic)) -> value pcu_msg;
+ f_pcuif_rx_nacc_rac_ci_req(pcu_msg, info_ind, req_arfcn, req_bsic);
}
/* Before receiving CTRL response, MS retransmits Pkt cell Chg Notif */
@@ -5763,9 +5786,9 @@
f_sleep(0.2); /* let some time to avoid race conditons between CTRL and RLCMAC */
if (use_old_ctrl_iface) {
- IPA_CTRL.send(ts_CtrlMsgGetRepl(rx_ctrl.cmd.id, ctrl_var, "023-43-423-2-5"));
+ f_ctrl_tx_nacc_rac_ci_rsp(rx_ctrl);
} else {
- BTS.send(ts_PCUIF_NEIGH_ADDR_CNF(0, pcu_msg.u.container.u.neigh_addr_req, 0, 23, 43, 0, 423, 2, 5));
+ f_pcuif_tx_nacc_rac_ci_rsp(pcu_msg);
}
timer T := 2.0;
@@ -6133,24 +6156,18 @@
/* osmo-pcu should now ask for resolution: */
if (use_old_ctrl_iface) {
- f_ipa_ctrl_wait_link_up();
- ctrl_var := "neighbor_resolve_cgi_ps_from_lac_ci." &
- int2str(info_ind.lac) & "." &
- int2str(info_ind.cell_id) & "." &
- int2str(req_arfcn) & "." &
- int2str(req_bsic);
- IPA_CTRL.receive(tr_CtrlMsgGet(?, ctrl_var)) -> value rx_ctrl;
+ f_ctrl_rx_nacc_rac_ci_req(rx_ctrl, info_ind, req_arfcn, req_bsic);
} else {
- BTS.receive(tr_PCUIF_NEIGH_ADDR_REQ(0, info_ind.lac, info_ind.cell_id, req_arfcn, req_bsic)) -> value pcu_msg;
+ f_pcuif_rx_nacc_rac_ci_req(pcu_msg, info_ind, req_arfcn, req_bsic);
}
/* Before receiving CTRL response, MS retransmits Pkt cell Chg Notif with different tgt arfcn */
cell_chf_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF(ms.ul_tbf.tfi, req_arfcn + 1, req_bsic + 1);
f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chf_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms));
f_sleep(0.2); /* let some time to avoid race conditons between CTRL and RLCMAC */
if (use_old_ctrl_iface) {
- IPA_CTRL.send(ts_CtrlMsgGetRepl(rx_ctrl.cmd.id, ctrl_var, "023-43-423-2-5"));
+ f_ctrl_tx_nacc_rac_ci_rsp(rx_ctrl);
} else {
- BTS.send(ts_PCUIF_NEIGH_ADDR_CNF(0, pcu_msg.u.container.u.neigh_addr_req, 0, 23, 43, 0, 423, 2, 5));
+ f_pcuif_tx_nacc_rac_ci_rsp(pcu_msg);
}
/* We should now receive a 2nd CTRL request with the new ARFCN+BSIC */
f_handle_nacc_rac_ci_query(info_ind, req_arfcn + 1, req_bsic + 1, true, use_old_ctrl_iface);