diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn index ada9ae3b4..6f0df0632 100644 --- a/pcu/PCU_Tests.ttcn +++ b/pcu/PCU_Tests.ttcn @@ -5945,6 +5945,53 @@ testcase TC_rim_ran_info_req_single_rep_no_si() runs on RAW_PCU_Test_CT { f_shutdown(__BFILE__, __LINE__, final := true); } +/* Verify TRX!=C0 don't schedule rlcmac blocks if no TBF attached to it. See OS#4772, SYS#4919 */ +testcase TC_pdch_energy_saving() runs on RAW_PCU_Test_CT { + var PCUIF_info_ind info_ind; + var template (value) TsTrxBtsNum nr; + var RlcmacDlBlock dl_block; + var BTS_PDTCH_Block data_msg; + timer T; + + /* Initialize NS/BSSGP side */ + f_init_bssgp(); + + info_ind := valueof(ts_PCUIF_INFO_default); + /* The 2 first TRX are enabled. */ + f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (2 .. 7)); + f_PCUIF_PDCHMask_set(info_ind, '00000001'B, 0); + f_PCUIF_PDCHMask_set(info_ind, '00000001'B, 1); + + /* Initialize the PCU interface abstraction */ + f_init_raw(testcasename(), info_ind); + + /* Establish BSSGP connection to the PCU */ + f_bssgp_establish(); + + /* Verify C0 gets always dummy blocks: */ + nr := ts_TsTrxBtsNum(ts_nr := 7, trx_nr := 0, bts_nr := 0, blk_nr := 0); + f_rx_rlcmac_dl_block_exp_dummy(dl_block, nr := nr); + + /* TRX1 doesn't send dummy blocks when not needed, in order to honour energy saving: */ + nr.trx_nr := 1; + BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr, + sapi := PCU_IF_SAPI_PDTCH, fn := 0, + arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)), block_nr := nr.blk_nr)); + T.start(0.5); + alt { + [] as_rx_fail_dummy(nr); + [] BTS.receive { + setverdict(fail, "Unexpected block from BTS"); + f_shutdown(__BFILE__, __LINE__); + } + [] T.timeout { + setverdict(pass); + } + } + + f_shutdown(__BFILE__, __LINE__, final := true); +} + control { execute( TC_pcuif_suspend() ); execute( TC_pcuif_suspend_active_tbf() ); @@ -6049,6 +6096,8 @@ control { execute( TC_rim_ran_info_req_single_rep() ); execute( TC_rim_ran_info_req_single_rep_eutran() ); execute( TC_rim_ran_info_req_single_rep_no_si() ); + + execute (TC_pdch_energy_saving() ); } }