diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2023-08-22 17:28:00 +0200 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2023-09-19 13:10:25 +0200 |
commit | 4222f479a2c1e7a046e88aaeb393a5aa7bc1a667 (patch) | |
tree | abb2fc31f215d28184b0574e63cc6d54a4181fe1 | |
parent | fb7f43b8ada9a82554b22e4c07315403fc261970 (diff) |
PCU_Tests: use PCUIF v.11 exclusively
OsmoPCU has support for PCUIF v.11 for quite some time now. Let's
upgrade the testsuite as well.
Related: OS#5927
Change-Id: I6c4042f2224cd48aecc1b1499226f7d23caddd4f
-rw-r--r-- | pcu/GPRS_Components.ttcn | 30 | ||||
-rw-r--r-- | pcu/PCU_Tests.ttcn | 17 |
2 files changed, 29 insertions, 18 deletions
diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn index 4b8ca5b8..983ae8f5 100644 --- a/pcu/GPRS_Components.ttcn +++ b/pcu/GPRS_Components.ttcn @@ -628,7 +628,7 @@ runs on MS_BTS_IFACE_CT { ms.ul_tbf := f_ultbf_new_from_rr_imm_ass(rr_imm_ass); } -function f_ms_exp_dl_tbf_ass_ccch(inout GprsMS ms, template PCUIF_Sapi sapi := PCU_IF_SAPI_PCH, +function f_ms_exp_dl_tbf_ass_ccch(inout GprsMS ms, template PCUIF_Sapi sapi := PCU_IF_SAPI_PCH_2, template GsmRrMessage t_imm_ass := tr_IMM_TBF_ASS(true, ?, ?), template (present) TsTrxBtsNum nr := tr_TsTrxBtsNum) runs on MS_BTS_IFACE_CT { @@ -882,20 +882,18 @@ function f_egprs_acknackdesc_ack_block(inout EgprsAckNackDescription desc, Rlcma /* This function can be used to send DATA.cnf in response to the IUT originated DATA.req. */ function f_pcuif_tx_data_cnf(in BTS_CCCH_Block data_msg) runs on MS_BTS_IFACE_CT { + var PCUIF_data_cnf cnf := { + sapi := data_msg.raw.sapi, + msg_id := data_msg.msg_id + }; + var PCUIF_Message pcu_msg_cnf := { - msg_type := PCU_IF_MSG_DATA_CNF, + msg_type := PCU_IF_MSG_DATA_CNF_2, bts_nr := data_msg.bts_nr, spare := '0000'O, - u := { data_cnf := data_msg.raw } + u := { data_cnf2 := cnf} }; - /* PCU wants DATA.cnf containing basically everything that was in DATA.req, - * but PCU_IF_SAPI_PCH is a special case - paging group shall be excluded. */ - if (data_msg.raw.sapi == PCU_IF_SAPI_PCH) { - pcu_msg_cnf.u.data_cnf.data := substr(data_msg.raw.data, 3, - data_msg.raw.len - 3); - } - BTS.send(pcu_msg_cnf); } @@ -1061,7 +1059,7 @@ runs on MS_BTS_IFACE_CT { } } -altstep as_ms_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH, +altstep as_ms_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH_2, template GsmRrMessage t_imm_ass := ?, template (present) TsTrxBtsNum nr := ts_TsTrxBtsNum, out GsmRrMessage rr_imm_ass) @@ -1073,14 +1071,12 @@ runs on MS_BTS_IFACE_CT { rr_imm_ass := data_msg.rr_msg; log("Rx Immediate Assignment: ", rr_imm_ass); /* Send DATA.cnf back to the IUT (only needed for PCH) */ - if (data_msg.raw.sapi == PCU_IF_SAPI_PCH) { - f_pcuif_tx_data_cnf(data_msg); - } + f_pcuif_tx_data_cnf(data_msg); setverdict(pass); } } -function f_pcuif_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH, +function f_pcuif_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH_2, template GsmRrMessage t_imm_ass := ?, template (present) TsTrxBtsNum nr := tr_TsTrxBtsNum) runs on MS_BTS_IFACE_CT return GsmRrMessage { @@ -1131,7 +1127,7 @@ runs on MS_BTS_IFACE_CT return GsmRrMessage { if (is_11bit != 0) { ra := 127; } /* Expect Immediate (TBF) Assignment on the same TS/TRX/BTS */ - return f_pcuif_rx_imm_ass(PCU_IF_SAPI_AGCH, tr_IMM_TBF_ASS(false, ra, fn), nr); + return f_pcuif_rx_imm_ass(PCU_IF_SAPI_AGCH_2, tr_IMM_TBF_ASS(false, ra, fn), nr); } /* Enqueue DATA.ind (both TDMA frame and block numbers to be patched) */ @@ -1174,7 +1170,7 @@ runs on MS_BTS_IFACE_CT return GsmRrMessage { var BTS_CCCH_Block data_msg; BTS.receive(tr_PCUIF_DATA_RR(nr.bts_nr, - tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PCH), + tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PCH_2), tr_PAG_REQ1(tr_MI_LV(mi1)))) -> value data_msg; rr_pag_req1 := data_msg.rr_msg; log("Rx Paging Request Type1: ", rr_pag_req1); diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn index d8447369..9829edb1 100644 --- a/pcu/PCU_Tests.ttcn +++ b/pcu/PCU_Tests.ttcn @@ -4858,7 +4858,22 @@ testcase TC_pcuif_fh_imm_ass_dl() runs on RAW_PCU_Test_CT { /* SGSN sends some DL data, PCU will page on CCCH (PCH) */ BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, f_rnd_octstring(12))); - f_ms_exp_dl_tbf_ass_ccch(ms); + + /* The PCU will send an IMMEDIATE ASSIGNMENT message on the AGCH. It + * should be noted that IMMEDIATE ASSIGNMENT messages for DL TBFs are + * commonly sent on the PCH. However in this case the IMSI is not + * known to the PCU and hence no paging group can be calculated. The + * PCU is then forced to use the AGCH. + * + * As a background information to this it should be noted that this + * works because the IMSI is commonly unknown during a GMM ATTACH + * REQUEST. In this phase the MS is in non-DRX mode, which means that + * it listens on all CCCH blocks (PCH and AGCH) + * + * See also: 3gpp TS 44.060, section 5.5.1.5 and + * 3gpp TS 45.002, section 6.5.3, 6.5.6 + */ + f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_AGCH_2); f_TC_pcuif_fh_check_imm_ass(valueof(info_ind), ms.dl_tbf.rr_imm_ass); f_shutdown(__BFILE__, __LINE__, final := true); |