|
|
|
@ -228,7 +228,7 @@ runs on test_CT { |
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[i].receive(tr_ASP_IPA_EV(ASP_IPA_EVENT_ID_ACK)) { |
|
|
|
|
T.stop; |
|
|
|
|
IPA_RSL[i].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_PAGING_LOAD_IND(23))); |
|
|
|
|
IPA_RSL[i].send(ts_ASP_RSL_UD(ts_RSL_PAGING_LOAD_IND(23))); |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[i].receive(ASP_IPA_Event:?) { repeat } |
|
|
|
|
[] IPA_RSL[i].receive { repeat } |
|
|
|
@ -398,7 +398,7 @@ runs on test_CT return RSL_Message { |
|
|
|
|
|
|
|
|
|
T.start; |
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(sid, t_rx)) -> value rx_rsl_ud { |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(t_rx, sid)) -> value rx_rsl_ud { |
|
|
|
|
T.stop; |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[bts_nr].receive { repeat; } |
|
|
|
@ -413,7 +413,7 @@ runs on test_CT return RSL_Message { |
|
|
|
|
/* helper function to transmit RSL on a given BTS/stream */ |
|
|
|
|
function f_ipa_tx(integer bts_nr, template RSL_Message t_tx, IpaStreamId sid := IPAC_PROTO_RSL_TRX0) |
|
|
|
|
runs on test_CT { |
|
|
|
|
IPA_RSL[bts_nr].send(ts_ASP_RSL_UD(sid, t_tx)); |
|
|
|
|
IPA_RSL[bts_nr].send(ts_ASP_RSL_UD(t_tx, sid)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -424,7 +424,7 @@ testcase TC_chan_act_noreply() runs on test_CT { |
|
|
|
|
|
|
|
|
|
f_init(1); |
|
|
|
|
|
|
|
|
|
IPA_RSL[0].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_CHAN_RQD('23'O, 23))); |
|
|
|
|
IPA_RSL[0].send(ts_ASP_RSL_UD(ts_RSL_CHAN_RQD('23'O, 23))); |
|
|
|
|
rsl_unused := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); |
|
|
|
|
setverdict(pass); |
|
|
|
|
} |
|
|
|
@ -438,7 +438,7 @@ testcase TC_chan_act_counter() runs on test_CT { |
|
|
|
|
f_init(1); |
|
|
|
|
|
|
|
|
|
chreq_total := f_ctrl_get_ratectr_abs(IPA_CTRL, "bts", 0, "chreq:total"); |
|
|
|
|
IPA_RSL[0].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_CHAN_RQD('23'O, 23))); |
|
|
|
|
IPA_RSL[0].send(ts_ASP_RSL_UD(ts_RSL_CHAN_RQD('23'O, 23))); |
|
|
|
|
rsl_unused := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); |
|
|
|
|
f_ctrl_get_exp_ratectr_abs(IPA_CTRL, "bts", 0, "chreq:total", chreq_total+1); |
|
|
|
|
|
|
|
|
@ -554,11 +554,10 @@ testcase TC_chan_exhaustion() runs on test_CT { |
|
|
|
|
f_ipa_tx(0, ts_RSL_CHAN_RQD('42'O, 42)); |
|
|
|
|
|
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, |
|
|
|
|
tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV))) { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV))) { |
|
|
|
|
setverdict(fail, "Received CHAN ACT ACK without resources?!?"); |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_IMM_ASSIGN(?))) -> value rsl_ud { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_IMM_ASSIGN(?))) -> value rsl_ud { |
|
|
|
|
var GsmRrMessage rr; |
|
|
|
|
/* match on IMM ASS REJ */ |
|
|
|
|
rr := dec_GsmRrMessage(rsl_ud.rsl.ies[1].body.full_imm_ass_info.payload); |
|
|
|
@ -590,13 +589,11 @@ testcase TC_chan_deact_silence() runs on test_CT { |
|
|
|
|
|
|
|
|
|
/* Expect CHANnel RELease */ |
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, |
|
|
|
|
tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { |
|
|
|
|
log("Received CHANnel RELease"); |
|
|
|
|
setverdict(pass); |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, |
|
|
|
|
tr_RSL_IMM_ASSIGN(?))) { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_IMM_ASSIGN(?))) { |
|
|
|
|
/* See OS#3709, OsmoBSC should not send Immediate |
|
|
|
|
* Assignment Reject since a dedicated channel was |
|
|
|
|
* already allocated, and Immediate Assignment was |
|
|
|
@ -926,21 +923,19 @@ function f_expect_chan_rel(integer bts_nr, RslChannelNr rsl_chan_nr, |
|
|
|
|
log("f_expect_chan_rel() expecting: expect_deact_sacch=", expect_deact_sacch, " expect_rr_chan_rel=", expect_rr_chan_rel, |
|
|
|
|
" expect_rll_rel_req=", expect_rll_rel_req); |
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, |
|
|
|
|
tr_RSL_DEACT_SACCH(rsl_chan_nr))) { |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(tr_RSL_DEACT_SACCH(rsl_chan_nr))) { |
|
|
|
|
got_deact_sacch := true; |
|
|
|
|
repeat; |
|
|
|
|
} |
|
|
|
|
[is_csfb] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE_CSFB))) { |
|
|
|
|
[is_csfb] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE_CSFB))) { |
|
|
|
|
got_rr_chan_rel := true; |
|
|
|
|
repeat; |
|
|
|
|
} |
|
|
|
|
[not is_csfb] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE))) { |
|
|
|
|
[not is_csfb] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE))) { |
|
|
|
|
got_rr_chan_rel := true; |
|
|
|
|
repeat; |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, |
|
|
|
|
tr_RSL_REL_REQ(rsl_chan_nr, ?))) { |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(tr_RSL_REL_REQ(rsl_chan_nr, ?))) { |
|
|
|
|
got_rll_rel_req := true; |
|
|
|
|
/* FIXME: Why are we getting this for LinkID SACCH? */ |
|
|
|
|
if (handle_rll_rel) { |
|
|
|
@ -948,13 +943,12 @@ function f_expect_chan_rel(integer bts_nr, RslChannelNr rsl_chan_nr, |
|
|
|
|
} |
|
|
|
|
repeat; |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, |
|
|
|
|
tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { |
|
|
|
|
/* respond with CHAN REL ACK */ |
|
|
|
|
f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(rsl_chan_nr)); |
|
|
|
|
} |
|
|
|
|
/* ignore any user data */ |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_MsgTypeR(?))) { |
|
|
|
|
[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(tr_RSL_MsgTypeR(?))) { |
|
|
|
|
repeat; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -1348,7 +1342,7 @@ private function f_pageing_helper(hexstring imsi, |
|
|
|
|
} |
|
|
|
|
T.start; |
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[i].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(mi))) { |
|
|
|
|
[] IPA_RSL[i].receive(tr_ASP_RSL_UD(tr_RSL_PAGING_CMD(mi))) { |
|
|
|
|
setverdict(fail, "Paging on BTS ", i, " which is not part of ", bts_ids); |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[i].receive { repeat; } |
|
|
|
@ -1524,7 +1518,7 @@ testcase TC_paging_imsi_load() runs on test_CT { |
|
|
|
|
T.start; |
|
|
|
|
T_retrans.start; |
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
setverdict(fail, "Received PAGING after LOAD_IND(0)"); |
|
|
|
|
mtc.stop; |
|
|
|
|
} |
|
|
|
@ -1607,15 +1601,15 @@ testcase TC_paging_imsi_a_reset() runs on test_CT { |
|
|
|
|
/* Wait for 3 seconds if any more PAGING CMD are received on RSL */ |
|
|
|
|
T.start; |
|
|
|
|
alt { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
setverdict(fail, "Received PAGING after A-RESET"); |
|
|
|
|
mtc.stop; |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[1].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
setverdict(fail, "Received PAGING after A-RESET"); |
|
|
|
|
mtc.stop; |
|
|
|
|
} |
|
|
|
|
[] IPA_RSL[2].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
[] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr_RSL_PAGING_CMD(?))) { |
|
|
|
|
setverdict(fail, "Received PAGING after A-RESET"); |
|
|
|
|
mtc.stop; |
|
|
|
|
} |
|
|
|
|