pcu: Introduce test TC_ul_tbf_reestablish_with_pkt_resource_req

Related: OS#4657
Change-Id: Ic251339afb9caa23d9a4e7bdb135d42a36a203d5
This commit is contained in:
Pau Espin 2020-07-07 20:20:42 +02:00 committed by pespin
parent 630c1cf9c6
commit cdbe90306b
2 changed files with 68 additions and 3 deletions

View File

@ -647,13 +647,14 @@ runs on MS_BTS_IFACE_CT {
}
}
function f_rx_rlcmac_dl_block_exp_ack_nack(out RlcmacDlBlock dl_block, out uint32_t poll_fn)
function f_rx_rlcmac_dl_block_exp_ack_nack(out RlcmacDlBlock dl_block, out uint32_t poll_fn,
template RlcmacDlBlock acknack_tmpl := (tr_RLCMAC_UL_ACK_NACK_GPRS(ul_tfi := ?),
tr_RLCMAC_UL_ACK_NACK_EGPRS(ul_tfi := ?)))
runs on MS_BTS_IFACE_CT {
var uint32_t dl_fn;
f_rx_rlcmac_dl_block(dl_block, dl_fn);
if (match(dl_block, tr_RLCMAC_UL_ACK_NACK_GPRS(ul_tfi := ?)) or
match(dl_block, tr_RLCMAC_UL_ACK_NACK_EGPRS(ul_tfi := ?))) {
if (match(dl_block, acknack_tmpl)) {
poll_fn := f_rrbp_ack_fn(dl_fn, dl_block.ctrl.mac_hdr.rrbp);
return;
}

View File

@ -1592,6 +1592,70 @@ testcase TC_ul_flow_multiple_llc_blocks() runs on RAW_PCU_Test_CT {
f_shutdown(__BFILE__, __LINE__, final := true);
}
/* Test scenario where MS wants to request a new TBF once the current one is
* ending, by means of sending a Packet Resource Request on ul slot provided by
* last Pkt Ul ACK's RRBP.
* See 3GPP TS 44.060 sec 9.3.2.4.2 "Non-extended uplink TBF mode" */
testcase TC_ul_tbf_reestablish_with_pkt_resource_req() runs on RAW_PCU_Test_CT {
var CodingScheme exp_cs_mcs := CS_1;
var RlcmacDlBlock dl_block;
var octetstring data := f_rnd_octstring(10);
var uint32_t sched_fn;
var uint32_t dl_fn;
var template RlcmacDlBlock acknack_tmpl;
var GprsMS ms;
/* Initialize NS/BSSGP side */
f_init_bssgp();
/* Initialize GPRS MS side */
f_init_gprs_ms();
ms := g_ms[0]; /* We only use first MS in this test */
/* Initialize the PCU interface abstraction */
f_init_raw(testcasename());
/* Establish BSSGP connection to the PCU */
f_bssgp_establish();
f_bssgp_client_llgmm_assign('FFFFFFFF'O, ms.tlli);
/* Establish an Uplink TBF */
f_ms_establish_ul_tbf(ms);
/* Send one UL block (with TLLI since we are in One-Phase Access
contention resoultion) and make sure it is ACKED fine */
f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := true);
/* UL block should be received in SGSN */
BSSGP[0].receive(tr_BSSGP_UL_UD(ms.tlli, mp_gb_cfg.cell_id));
acknack_tmpl := tr_RLCMAC_UL_ACK_NACK_GPRS(ms.ul_tbf.tfi,
tr_UlAckNackGprs(ms.tlli,
tr_AckNackDescription(final_ack := '1'B),
tr_UlAckNackGprsAdditionsRel99(tbf_est := true)))
f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn, acknack_tmpl);
/* TODO: verify TBF_EST and FinalACK are both '1' above */
/* Send PACKET RESOURCE REQUEST to request a new UL TBF */
f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(valueof(ts_RlcMacUlCtrl_PKT_RES_REQ(ms.tlli, omit))), sched_fn);
f_ms_rx_imm_ass_pacch(ms, sched_fn, tr_RLCMAC_UL_PACKET_ASS);
/* DL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
/* Send one UL block (without TLLI since we are in Second-Phase Access)
and make sure it is ACKED fine */
f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := false); /* TODO: send using cs_mcs */
/* UL block should be received in SGSN */
BSSGP[0].receive(tr_BSSGP_UL_UD(ms.tlli, mp_gb_cfg.cell_id));
f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn, acknack_tmpl);
/* ACK the ACK */
f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
f_shutdown(__BFILE__, __LINE__, final := true);
}
private function f_pkt_paging_match_imsi(in PacketPagingReq req, hexstring imsi)
runs on RAW_PCU_Test_CT {
var MobileIdentityLV_Paging mi_lv := req.repeated_pageinfo.cs.mobile_identity;