From c4324ffb64843dde2c64e546a6b71861e60610ef Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Fri, 22 May 2020 21:53:58 +0700 Subject: [PATCH] PCU: introduce TC_egprs_pkt_chan_req_reject_exhaustion Send 7 RACH indications to the IUT with EGPRS Packet Channel Request. Since we have only one timeslot (and USF value '111'B is reserved), the 8-th indication should be properly rejected by the IUT. Change-Id: Ie6e5fc68e1591c57e21541ba16fbdcd3fe477ac7 Related: OS#1548 --- pcu/PCU_Tests.ttcn | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn index 999ece01d..8a1a4256c 100644 --- a/pcu/PCU_Tests.ttcn +++ b/pcu/PCU_Tests.ttcn @@ -1861,6 +1861,39 @@ testcase TC_egprs_pkt_chan_req_reject_emergency() runs on RAW_PCU_Test_CT { f_shutdown(__BFILE__, __LINE__, final := true); } +/* Make sure that IUT responds with RR Immediate Assignment Reject due to exhaustion. */ +testcase TC_egprs_pkt_chan_req_reject_exhaustion() runs on RAW_PCU_Test_CT { + var template IARRestOctets rest; + var BIT11 ra11; + + /* Initialize the PCU interface abstraction */ + f_init_raw(testcasename()); + + var EGPRSPktChRequest req := { + one_phase := { + tag := '0'B, + multislot_class := '10101'B, + priority := '01'B, + random_bits := '101'B + } + }; + + /* We send 7 requests, the IUT gives us all available USFs (0..6). + * TODO: make it configurable: usf_max := mp_pdch_ts_num * 7. */ + for (var integer i := 0; i < 7; i := i + 1) { + req.one_phase.random_bits := int2bit(f_rnd_int(8), 3); + f_TC_egprs_pkt_chan_req(req, tr_IMM_TBF_ASS); + } + + ra11 := enc_EGPRSPktChRequest2bits(req); + rest := tr_IARRestOctets({ *, tr_ExtRAOpt(substr(ra11, 6, 5)), * }); + + /* At this point, the IUT should run out of free USFs */ + f_TC_egprs_pkt_chan_req_reject(ra11, 1870, rest); + + f_shutdown(__BFILE__, __LINE__, final := true); +} + control { execute( TC_pcuif_suspend() ); execute( TC_ta_ptcch_idle() ); @@ -1895,6 +1928,7 @@ control { execute( TC_egprs_pkt_chan_req_two_phase() ); execute( TC_egprs_pkt_chan_req_reject_content() ); execute( TC_egprs_pkt_chan_req_reject_emergency() ); + execute( TC_egprs_pkt_chan_req_reject_exhaustion() ); execute( TC_mo_ping_pong_with_ul_racap_egprs_only() ); }