dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540 )
Change subject: PCU_Tests: test NACC procedure with UTRAN and E-UTRAN cell ......................................................................
PCU_Tests: test NACC procedure with UTRAN and E-UTRAN cell
When the PacketCellChangeNotification proposes an UTRAN or E-UTRAN cell, then the PCU will not provide system information. Instead it will directly conclude the NACC procedure with a PacketCellChangeContinue message.
Related: OS#6044 Change-Id: Idae86a458fd44ac81bab183ed1865b1c1bdbfd66 --- M library/RLCMAC_CSN1_Templates.ttcn M pcu/PCU_Tests.ttcn 2 files changed, 175 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/40/33540/1
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn index ef8c952..ded61b2 100644 --- a/library/RLCMAC_CSN1_Templates.ttcn +++ b/library/RLCMAC_CSN1_Templates.ttcn @@ -180,6 +180,97 @@ } };
+ /* TS 44.060 sec 11.2.3a */ + template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_UTRAN(uint5_t tfi, + uint14_t uarfcn, + uint10_t scrambling_code, + template (value) CCNMeasReport ccn_meas_rep := ccn_meas_rep_def) + := { + msg_type := PACKET_CELL_CHANGE_NOTIFICATION, + u := { + cell_chg_notif := { + gtfi := { + is_dl_tfi := false, + tfi := tfi + }, + u := { + u10 := { + tag := '10'B, + utran_target_cell := { + fdd_presence := '1'B, + fdd := { + arfcn := uarfcn, + bandwidth_presence := '0'B, + bandwidth := omit, + scrambling_code := scrambling_code + }, + tdd_presence := '0'B, + tdd := omit, + reporting_quantity := 1 + } + } + }, + ba_psi3_presence := '0'B, + ba_used := '0'B, + psi3_change_mark := omit, + pmo_used := '0'B, + pccn_sending := '0'B, + ccn_meas_rep := ccn_meas_rep, + rel_additions := omit + } + } + }; + + /* TS 44.060 sec 11.2.3a */ + template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_EUTRAN(uint5_t tfi, + uint16_t earfcn, + uint9_t phys_layer_cell_id, + template (value) CCNMeasReport ccn_meas_rep := ccn_meas_rep_def) + := { + msg_type := PACKET_CELL_CHANGE_NOTIFICATION, + u := { + cell_chg_notif := { + gtfi := { + is_dl_tfi := false, + tfi := tfi + }, + u := { + u110 := { + tag := '110'B, + arfcn_bsic_presence := '0'B, + arfcn := omit, + bsic := omit, + + utran_target_cell_presence := '0'B, + utran_target_cell := omit, + + eutran_target_cell_presence := '1'B, + eutran_target_cell := { + earfcn := earfcn, + meas_bandwidth_presence := '0'B, + meas_bandwidth := omit, + phys_layer_cell_id := phys_layer_cell_id, + reporting_quantity := 1 + }, + eutran_ccn_meas_rep_presence := '1'B, + eutran_ccn_meas_rep := { + utran_ba_used := 0, + n_eutran := 1, + cells := {{frequency_list_index := 1, cell_identity := phys_layer_cell_id, reporting_quantity := 1}} + } + } + }, + ba_psi3_presence := '0'B, + ba_used := '0'B, + psi3_change_mark := omit, + pmo_used := '0'B, + pccn_sending := '0'B, + ccn_meas_rep := ccn_meas_rep, + rel_additions := omit + } + } + }; + /* TS 44.060 sec 11.2.2a */ template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE(template GlobalTfi tfi := ?) := { diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn index 440d133..1fe2a26 100644 --- a/pcu/PCU_Tests.ttcn +++ b/pcu/PCU_Tests.ttcn @@ -5332,6 +5332,51 @@ } }
+/* Start NACC from MS side, propose an E-UTRAN cell */ +private function f_outbound_nacc_success_utran_eutran(inout GprsMS ms, PCUIF_info_ind info_ind, + boolean exp_rac_ci_query := true, boolean exp_si_query := true, + boolean skip_final_ctrl_ack := false, + boolean use_old_ctrl_iface := false, + boolean eutran := false) +runs on RAW_PCU_Test_CT { + var template (value) RlcmacUlCtrlMsg cell_chg_notif; + var template RlcmacDlCtrlMsg cell_chg_cont; + var RlcmacDlBlock dl_block; + var uint32_t sched_fn; + + /* Start NACC from MS side */ + if (eutran) { + var uint16_t req_earfcn := 1234; + var uint9_t phys_layer_cell_id := 456; + cell_chg_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_EUTRAN(ms.ul_tbf.tfi, req_earfcn, phys_layer_cell_id); + } else { + var uint14_t req_uarfcn := 1234; + var uint10_t req_scrambling_code := 456; + cell_chg_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_UTRAN(ms.ul_tbf.tfi, req_uarfcn, req_scrambling_code); + } + + log("======================================"); + log(cell_chg_notif); + + f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chg_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms)); + + /* Obtain a Downlink block and make sure it is a PacketCellChangeContine. We also make sure that this + * PacketCellChangeContine message does not contain any ARFCN/BSIC. */ + f_rx_rlcmac_dl_block(dl_block, sched_fn); + cell_chg_cont := tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE + cell_chg_cont.u.cell_chg_continue.arfcn_bsic_presence := '0'B + if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, cell_chg_cont))) { + setverdict(fail, "Rx unexpected DL block: ", dl_block); + f_shutdown(__BFILE__, __LINE__); + } + + /* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */ + if (not skip_final_ctrl_ack and dl_block.ctrl.mac_hdr.rrbp_valid) { + sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp); + f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn); + } +} + /* Start NACC from MS side, propose a GERAN cell */ private function f_outbound_nacc_success(inout GprsMS ms, PCUIF_info_ind info_ind, boolean exp_rac_ci_query := true, boolean exp_si_query := true, @@ -5382,7 +5427,7 @@ }
/* Verify PCU handles outbound Network Assisted Cell Change Cell Change (NACC, TS 44.060 sec 8.8). */ -testcase TC_nacc_outbound_success() runs on RAW_PCU_Test_CT { +function f_TC_nacc_outbound_success(integer ran_type) runs on RAW_PCU_Test_CT { var PollFnCtx pollctx; var GprsMS ms; var PCUIF_info_ind info_ind := valueof(ts_PCUIF_INFO_default); @@ -5415,11 +5460,32 @@ f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), pollctx.fn, nr := pollctx.tstrxbts);
/* Start NACC from MS side */ - f_outbound_nacc_success(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface); + if (ran_type == 0) { + /* GERAN */ + f_outbound_nacc_success(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface); + } else if (ran_type == 1) { + /* UTRAN */ + f_outbound_nacc_success_utran_eutran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface, eutran := false); + } else if (ran_type == 2) { + /* EUTRAN */ + f_outbound_nacc_success_utran_eutran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface, eutran := true); + }
f_shutdown(__BFILE__, __LINE__, final := true); }
+testcase TC_nacc_outbound_success() runs on RAW_PCU_Test_CT { + f_TC_nacc_outbound_success(0); +} + +testcase TC_nacc_outbound_success_utran() runs on RAW_PCU_Test_CT { + f_TC_nacc_outbound_success(1); +} + +testcase TC_nacc_outbound_success_eutran() runs on RAW_PCU_Test_CT { + f_TC_nacc_outbound_success(2); +} + /* Verify Pkt Cell Change Continue is retransmitted if not CTRL ACKed */ testcase TC_nacc_outbound_success_no_ctrl_ack() runs on RAW_PCU_Test_CT { var PollFnCtx pollctx; @@ -7224,6 +7290,8 @@
execute( TC_pcuif_info_ind_subsequent() ); execute( TC_nacc_outbound_success() ); + execute( TC_nacc_outbound_success_utran() ); + execute( TC_nacc_outbound_success_eutran() ); execute( TC_nacc_outbound_success_no_ctrl_ack() ); execute( TC_nacc_outbound_success_twice() ); execute( TC_nacc_outbound_success_twice_nocache() );