PCU: fix f_tc_paging_ps_from_sgsn(): also match received MI
Change-Id: Ia8c25ee74c711d8abc84b7d164b3d41abafc1da4
This commit is contained in:
parent
a9a198dbd1
commit
9c51313c71
|
@ -366,27 +366,42 @@ runs on RAW_PCU_Test_CT {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Expect a Paging Request Type 1 from PCU on PCUIF on specified sapi. */
|
/* Expect a Paging Request Type 1 from PCU on PCUIF on specified sapi. */
|
||||||
private function f_pcuif_rx_pch_pag_req1(out integer imsi_suff_rx, out GsmRrMessage rr_pag_req1)
|
private function f_pcuif_rx_pch_pag_req1(template MobileIdentityV mi1 := ?,
|
||||||
runs on RAW_PCU_Test_CT {
|
template integer pag_group := ?)
|
||||||
|
runs on RAW_PCU_Test_CT return GsmRrMessage {
|
||||||
|
var GsmRrMessage rr_pag_req1;
|
||||||
var PCUIF_Message pcu_msg;
|
var PCUIF_Message pcu_msg;
|
||||||
var octetstring imsi_suff_octstr;
|
var octetstring imsi_suff_octstr;
|
||||||
|
var integer pag_group_rx;
|
||||||
var octetstring macblock;
|
var octetstring macblock;
|
||||||
|
|
||||||
BTS.receive(tr_PCUIF_DATA_REQ(bts_nr := 0, trx_nr := 0, ts_nr := 0,
|
BTS.receive(tr_PCUIF_DATA_REQ(bts_nr := 0, trx_nr := 0, ts_nr := 0,
|
||||||
sapi := PCU_IF_SAPI_PCH)) -> value pcu_msg;
|
sapi := PCU_IF_SAPI_PCH)) -> value pcu_msg;
|
||||||
|
|
||||||
/* First 3 bytes contain IMSI suffix to calculate paging group: */
|
/* First 3 bytes contain IMSI suffix to calculate paging group: */
|
||||||
imsi_suff_octstr := substr(pcu_msg.u.data_req.data, 0, 3);
|
imsi_suff_octstr := substr(pcu_msg.u.data_req.data, 0, 3);
|
||||||
imsi_suff_rx := str2int(oct2char(imsi_suff_octstr[0])) * 100 +
|
pag_group_rx := str2int(oct2char(imsi_suff_octstr[0])) * 100 +
|
||||||
str2int(oct2char(imsi_suff_octstr[1])) * 10 +
|
str2int(oct2char(imsi_suff_octstr[1])) * 10 +
|
||||||
str2int(oct2char(imsi_suff_octstr[2]));
|
str2int(oct2char(imsi_suff_octstr[2]));
|
||||||
|
|
||||||
|
/* Make sure we've got RR Paging Request Type 1 for a given MI */
|
||||||
macblock := substr(pcu_msg.u.data_req.data, 3, pcu_msg.u.data_req.len - 3);
|
macblock := substr(pcu_msg.u.data_req.data, 3, pcu_msg.u.data_req.len - 3);
|
||||||
rr_pag_req1 := dec_GsmRrMessage(macblock);
|
rr_pag_req1 := dec_GsmRrMessage(macblock);
|
||||||
if (not match(rr_pag_req1, tr_PAG_REQ1())) {
|
if (not match(rr_pag_req1, tr_PAG_REQ1(tr_MI_LV(mi1)))) {
|
||||||
setverdict(fail, "Failed to match Paging Request Type 1: ", rr_pag_req1);
|
setverdict(fail, "Failed to match Paging Request Type 1: ", rr_pag_req1);
|
||||||
mtc.stop;
|
mtc.stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Make sure that received paging froup matches the expected one */
|
||||||
|
if (not match(pag_group_rx, pag_group)) {
|
||||||
|
setverdict(fail, "Paging group", pag_group_rx, " does not match expected ", pag_group);
|
||||||
|
mtc.stop;
|
||||||
|
}
|
||||||
|
|
||||||
BTS.send(ts_PCUIF_DATA_CNF(bts_nr := 0, trx_nr := 0, ts_nr := 0, block_nr := 0,
|
BTS.send(ts_PCUIF_DATA_CNF(bts_nr := 0, trx_nr := 0, ts_nr := 0, block_nr := 0,
|
||||||
fn := pcu_msg.u.data_req.fn, arfcn := 871, sapi := PCU_IF_SAPI_PCH, data := macblock));
|
fn := pcu_msg.u.data_req.fn, arfcn := 871, sapi := PCU_IF_SAPI_PCH, data := macblock));
|
||||||
|
|
||||||
|
return rr_pag_req1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function f_tx_rlcmac_ul_block(template (value) RlcmacUlBlock ul_data, int16_t lqual_cb := 0, uint32_t fn := 0)
|
private function f_tx_rlcmac_ul_block(template (value) RlcmacUlBlock ul_data, int16_t lqual_cb := 0, uint32_t fn := 0)
|
||||||
|
@ -1502,12 +1517,9 @@ testcase TC_paging_cs_from_sgsn_ptp() runs on RAW_PCU_Test_CT {
|
||||||
*/
|
*/
|
||||||
private function f_tc_paging_ps_from_sgsn(Nsvci bvci, boolean use_ptmsi := false)
|
private function f_tc_paging_ps_from_sgsn(Nsvci bvci, boolean use_ptmsi := false)
|
||||||
runs on RAW_PCU_Test_CT {
|
runs on RAW_PCU_Test_CT {
|
||||||
var GsmRrMessage rr_pag_req1;
|
|
||||||
var OCT4 tlli := '00000001'O;
|
var OCT4 tlli := '00000001'O;
|
||||||
var integer imsi_suff_rx;
|
|
||||||
var integer imsi_suff_tx := 423;
|
var integer imsi_suff_tx := 423;
|
||||||
var hexstring imsi := f_gen_imsi(imsi_suff_tx);
|
var hexstring imsi := f_gen_imsi(imsi_suff_tx);
|
||||||
var GsmTmsi tmsi;
|
|
||||||
|
|
||||||
/* Initialize NS/BSSGP side */
|
/* Initialize NS/BSSGP side */
|
||||||
f_init_bssgp();
|
f_init_bssgp();
|
||||||
|
@ -1519,22 +1531,17 @@ runs on RAW_PCU_Test_CT {
|
||||||
f_bssgp_establish();
|
f_bssgp_establish();
|
||||||
f_bssgp_client_llgmm_assign('FFFFFFFF'O, tlli);
|
f_bssgp_client_llgmm_assign('FFFFFFFF'O, tlli);
|
||||||
|
|
||||||
/* Send paging request with or without TMSI */
|
/* Send BSSGP PAGING-PS (with or without TMSI), wait for RR Paging Request Type 1.
|
||||||
|
* Make sure that both paging group (IMSI suffix) and Mobile Identity match. */
|
||||||
if (use_ptmsi) {
|
if (use_ptmsi) {
|
||||||
tmsi := oct2int(f_rnd_octstring(4)); /* Random P-TMSI */
|
var OCT4 tmsi := f_rnd_octstring(4); /* Random P-TMSI */
|
||||||
BSSGP[0].send(ts_BSSGP_PS_PAGING_PTMSI(bvci, imsi, tmsi));
|
BSSGP[0].send(ts_BSSGP_PS_PAGING_PTMSI(bvci, imsi, oct2int(tmsi)));
|
||||||
|
f_pcuif_rx_pch_pag_req1(t_MI_TMSI(tmsi), imsi_suff_tx);
|
||||||
} else {
|
} else {
|
||||||
BSSGP[0].send(ts_BSSGP_PS_PAGING_IMSI(bvci, imsi));
|
BSSGP[0].send(ts_BSSGP_PS_PAGING_IMSI(bvci, imsi));
|
||||||
|
f_pcuif_rx_pch_pag_req1(tr_MI_IMSI(imsi), imsi_suff_tx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Receive it on BTS side towards MS */
|
|
||||||
f_pcuif_rx_pch_pag_req1(imsi_suff_rx, rr_pag_req1);
|
|
||||||
if (imsi_suff_rx != imsi_suff_tx) {
|
|
||||||
setverdict(fail, "Wrong IMSI suffix: expected ", imsi_suff_tx, " but received ", imsi_suff_rx);
|
|
||||||
mtc.stop;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO: match MI (P-TMSI/IMSI) of received RR Paging Request */
|
|
||||||
setverdict(pass);
|
setverdict(pass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue