BTS_Tests: Ensure mtc.stop is called after setverdict(fail, ...)
This will prevent subsequent failures from overwriting the verdict so we can easily see the root cause of the test failure. Change-Id: Iba59a69127e845cadbe9aaa1dabd87ff5ce8b43b
This commit is contained in:
parent
8273fb9ceb
commit
17ddd852b0
|
@ -257,7 +257,7 @@ private altstep as_pcu_info_ind(PCUIF_CODEC_PT pt, integer pcu_conn_id,
|
|||
}
|
||||
[] pt.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(?, ?, ?))) -> value sd {
|
||||
setverdict(fail, "Invalid PCU Version/BTS Number received");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -276,7 +276,7 @@ private function f_init_pcu(PCUIF_CODEC_PT pt, charstring id,
|
|||
[] as_pcu_info_ind(pt, pcu_conn_id, pcu_last_info);
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for PCU INFO_IND");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -316,7 +316,7 @@ function f_init(charstring id := "BTS-Test") runs on test_CT {
|
|||
[] RSL_CCHAN.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_UP});
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for ASP_IPA_EVENT_UP");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
f_sleep(0.5); /* workaround for OS#3000 */
|
||||
|
@ -389,7 +389,7 @@ template ASP_RSL_Unitdata tr_RSL_UD(template RSL_Message rsl,
|
|||
private altstep as_Tguard() runs on ConnHdlr {
|
||||
[] g_Tguard.timeout {
|
||||
setverdict(fail, "Tguard timeout");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -404,7 +404,7 @@ private function f_trxc_connect() runs on ConnHdlr {
|
|||
"", -1, -1, {udp:={}}, {});
|
||||
if (not ispresent(res.connId)) {
|
||||
setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
g_bb_trxc_conn_id := res.connId;
|
||||
}
|
||||
|
@ -455,14 +455,14 @@ runs on ConnHdlr return RSL_Message {
|
|||
}
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout expecting " & id);
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[not ignore_other] as_l1_sacch();
|
||||
[not ignore_other] as_meas_res();
|
||||
[not ignore_other] as_l1_dcch();
|
||||
[not ignore_other] RSL.receive {
|
||||
setverdict(fail, "Unexpected RSL message received");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[ignore_other] RSL.receive { repeat; }
|
||||
}
|
||||
|
@ -550,6 +550,7 @@ function f_TC_chan_act_react(charstring id) runs on ConnHdlr {
|
|||
alt {
|
||||
[] RSL.receive(tr_RSL_CHAN_ACT_ACK(g_chan_nr)) {
|
||||
setverdict(fail, "Unexpected CHAN ACT ACK on double activation");
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL.receive(tr_RSL_CHAN_ACT_NACK(g_chan_nr)) {
|
||||
setverdict(pass);
|
||||
|
@ -577,6 +578,7 @@ function f_TC_chan_deact_not_active(charstring id) runs on ConnHdlr {
|
|||
}
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout expecting RF_CHAN_REL_ACK");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -594,6 +596,7 @@ function f_TC_chan_act_wrong_nr(charstring id) runs on ConnHdlr {
|
|||
alt {
|
||||
[] RSL.receive(tr_RSL_CHAN_ACT_ACK(g_chan_nr)) {
|
||||
setverdict(fail, "Unexpected CHAN ACT ACK");
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL.receive(tr_RSL_CHAN_ACT_NACK(g_chan_nr)) {
|
||||
setverdict(pass);
|
||||
|
@ -667,6 +670,7 @@ private function f_exp_sacch(boolean exp) runs on ConnHdlr {
|
|||
alt {
|
||||
[not exp] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, tr_RslLinkID_SACCH(0))) {
|
||||
setverdict(fail, "Received SACCH when not expecting it");
|
||||
mtc.stop;
|
||||
}
|
||||
[not exp] T_sacch.timeout {
|
||||
setverdict(pass);
|
||||
|
@ -676,6 +680,7 @@ private function f_exp_sacch(boolean exp) runs on ConnHdlr {
|
|||
}
|
||||
[exp] T_sacch.timeout {
|
||||
setverdict(fail, "Timeout waiting for SACCH on ", g_chan_nr);
|
||||
mtc.stop;
|
||||
}
|
||||
[] L1CTL.receive { repeat; }
|
||||
[] RSL.receive { repeat; }
|
||||
|
@ -740,7 +745,7 @@ private function f_sacch_present(template octetstring l3_exp) runs on ConnHdlr {
|
|||
[] L1CTL.receive { repeat; }
|
||||
[] T_sacch.timeout {
|
||||
setverdict(fail, "Timeout waiting for SACCH ", l3_exp);
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -986,7 +991,7 @@ testcase TC_rach_content() runs on test_CT {
|
|||
var GsmFrameNumber fn := f_L1CTL_RACH(L1CTL, oct2int(ra));
|
||||
if (fn == fn_last) {
|
||||
setverdict(fail, "Two RACH in same FN?!?");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
fn_last := fn;
|
||||
|
||||
|
@ -998,12 +1003,12 @@ testcase TC_rach_content() runs on test_CT {
|
|||
}
|
||||
[] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_CHAN_RQD(?, ?, ?))) {
|
||||
setverdict(fail, "Unexpected CHAN RQD");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL_CCHAN.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for CHAN RQD");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1024,7 +1029,7 @@ testcase TC_rach_count() runs on test_CT {
|
|||
var GsmFrameNumber fn := f_L1CTL_RACH(L1CTL, oct2int(ra));
|
||||
if (fn == fn_last) {
|
||||
setverdict(fail, "Two RACH in same FN?!?");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
fn_last := fn;
|
||||
}
|
||||
|
@ -1055,7 +1060,7 @@ private function f_main_trxc_connect() runs on test_CT {
|
|||
"", -1, -1, {udp:={}}, {});
|
||||
if (not ispresent(res.connId)) {
|
||||
setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
g_bb_trxc_conn_id := res.connId;
|
||||
}
|
||||
|
@ -1079,6 +1084,7 @@ private function f_rach_toffs(int16_t toffs256, boolean expect_pass) runs on tes
|
|||
}
|
||||
[not expect_pass] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_CHAN_RQD(ra, fn))) {
|
||||
setverdict(fail, "RACH passed but was expected to be dropped: ", toffs256);
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL_CCHAN.receive { repeat; }
|
||||
[not expect_pass] T.timeout {
|
||||
|
@ -1086,6 +1092,7 @@ private function f_rach_toffs(int16_t toffs256, boolean expect_pass) runs on tes
|
|||
}
|
||||
[expect_pass] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for CHAN RQD");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1287,16 +1294,16 @@ altstep as_meas_res() runs on ConnHdlr {
|
|||
repeat;
|
||||
} else {
|
||||
setverdict(fail, "Received unspecific MEAS RES ", rsl);
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
[] RSL.receive(tr_RSL_MEAS_RES(?)) -> value rsl {
|
||||
setverdict(fail, "Received unexpected MEAS RES ", rsl);
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[g_Tmeas_exp.running] g_Tmeas_exp.timeout {
|
||||
setverdict(fail, "Didn't receive expected measurement result")
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1312,7 +1319,7 @@ private function f_alg_id_to_l1ctl(RSL_AlgId rsl_alg_id) return uint8_t {
|
|||
case (RSL_ALG_ID_A5_7) { return 7; }
|
||||
case else {
|
||||
setverdict(fail, "Unknwon Algorithm ID");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1328,7 +1335,7 @@ private function f_alg_id_to_l3(RSL_AlgId rsl_alg_id) return BIT3 {
|
|||
case (RSL_ALG_ID_A5_7) { return '110'B; }
|
||||
case else {
|
||||
setverdict(fail, "Unknwon Algorithm ID");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1405,12 +1412,13 @@ function f_TC_meas_res_periodic(charstring id) runs on ConnHdlr {
|
|||
[] as_l1_dcch();
|
||||
[] L1CTL.receive { repeat; }
|
||||
[g_Tmeas_exp.running] T.timeout {
|
||||
/* as_meas_res() would have done setverdict(fail) / self.stop in case
|
||||
/* as_meas_res() would have done setverdict(fail) / mtc.stop in case
|
||||
* of any earlier errors, so if we reach this timeout, we're good */
|
||||
setverdict(pass);
|
||||
}
|
||||
[] T.timeout {
|
||||
setverdict(fail, "No MEAS RES received at all");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
f_rsl_chan_deact();
|
||||
|
@ -1494,6 +1502,7 @@ private function f_TC_conn_fail_crit(charstring id) runs on ConnHdlr {
|
|||
[] RSL.receive { repeat };
|
||||
[] T.timeout {
|
||||
setverdict(fail, "No CONN FAIL IND received");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
f_rsl_chan_deact();
|
||||
|
@ -1639,6 +1648,7 @@ private function f_TC_paging(PagingTestCfg cfg) runs on test_CT return PagingTes
|
|||
}
|
||||
[not cfg.exp_overload] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND(0))) {
|
||||
setverdict(fail, "Unexpected PCH Overload");
|
||||
mtc.stop;
|
||||
}
|
||||
[cfg.exp_load_ind] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND)) {
|
||||
log("Rx LOAD_IND");
|
||||
|
@ -1664,6 +1674,7 @@ private function f_TC_paging(PagingTestCfg cfg) runs on test_CT return PagingTes
|
|||
[] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND)) { repeat; }
|
||||
[] T_wait.timeout {
|
||||
setverdict(fail, "Waiting for empty paging queue");
|
||||
mtc.stop;
|
||||
}
|
||||
[] as_rsl_res_ind();
|
||||
}
|
||||
|
@ -1830,7 +1841,7 @@ private function f_TC_imm_ass(integer num_total, float sleep_s, float exp_pass)
|
|||
if (not match(rr, tr_IMM_ASS(42, ?, 5, ?, ?))) {
|
||||
/* FIXME: Why are we seeing paging requests on PCH/AGCH? */
|
||||
//setverdict(fail, "Unexpected IMM-ASS values on AGCH: ", rr);
|
||||
//self.stop;
|
||||
//mtc.stop;
|
||||
} else {
|
||||
num_rx := num_rx+1;
|
||||
}
|
||||
|
@ -1843,6 +1854,7 @@ private function f_TC_imm_ass(integer num_total, float sleep_s, float exp_pass)
|
|||
log("AGCH test: " & res_str);
|
||||
if (num_rx + num_del != num_tx) {
|
||||
setverdict(fail, "RX + DEL != TX ?!?: " & res_str);
|
||||
mtc.stop
|
||||
}
|
||||
rx_ratio := int2float(num_rx) / int2float(num_tx);
|
||||
if (rx_ratio < exp_pass*0.8 or rx_ratio > exp_pass*1.2) {
|
||||
|
@ -1850,6 +1862,7 @@ private function f_TC_imm_ass(integer num_total, float sleep_s, float exp_pass)
|
|||
} else {
|
||||
setverdict(pass);
|
||||
}
|
||||
f_shutdown();
|
||||
}
|
||||
|
||||
/* send a long burst of 1000 IMM.ASS with 20ms spacing (50 per s); expect 75% of them to be deleted */
|
||||
|
@ -1903,6 +1916,7 @@ function f_si_vecslot_contains(SystemInformationVector arr, RrMessageType key, b
|
|||
function f_ensure_si_vec_contains(SystemInformationVectorPerTc arr, integer tc, RrMessageType key, boolean ext_bcch := false) {
|
||||
if (not f_si_vecslot_contains(arr[tc], key, ext_bcch)) {
|
||||
setverdict(fail, "No ", key, " in TC=", tc, "!");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1922,7 +1936,7 @@ function f_si_vecslot_contains_n_of_m(SystemInformationVector arr, RrMessageType
|
|||
var integer count := 0;
|
||||
if (sizeof(arr) < m) {
|
||||
setverdict(fail, "Error: Insufficient SI in array");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
for (var integer i:= 0; i < m; i := i + 1) {
|
||||
var integer fn_mod51 := arr[i].frame_number mod 51;
|
||||
|
@ -1944,6 +1958,7 @@ function f_si_vecslot_contains_n_of_m(SystemInformationVector arr, RrMessageType
|
|||
function f_ensure_si_vec_contains_n_of_m(SystemInformationVectorPerTc arr, integer tc, RrMessageType key, boolean ext_bcch := false, integer n, integer m) {
|
||||
if (not f_si_vecslot_contains_n_of_m(arr[tc], key, ext_bcch, n, m)) {
|
||||
setverdict(fail, "Not ", n, "/", m, " of ", key, " in TC=", tc, "!");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1965,6 +1980,7 @@ function f_si_vecslot_contains_only(SystemInformationVector arr, RrMessageType k
|
|||
function f_ensure_si_vec_contains_only(SystemInformationVectorPerTc arr, integer tc, RrMessageType key, boolean ext_bcch := false) {
|
||||
if (not f_si_vecslot_contains_only(arr[tc], key, ext_bcch)) {
|
||||
setverdict(fail, "Not all ", key, " in TC=", tc, "!");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1994,6 +2010,7 @@ function f_validate_si_scheduling(SystemInformationConfig cfg, SystemInformation
|
|||
for (i := 0; i < sizeof(si_per_tc); i := i + 1) {
|
||||
if (sizeof(si_per_tc[i]) == 0) {
|
||||
setverdict(fail, "No SI messages for TC=", i);
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
if (cfg.si1_present) {
|
||||
|
@ -2076,6 +2093,7 @@ function f_validate_si_scheduling(SystemInformationConfig cfg, SystemInformation
|
|||
}
|
||||
if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_13alt)) {
|
||||
setverdict(fail, "Cannot have SI13alt and SI13");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
if (cfg.si16_present or cfg.si17_present) {
|
||||
|
@ -2086,6 +2104,7 @@ function f_validate_si_scheduling(SystemInformationConfig cfg, SystemInformation
|
|||
}
|
||||
if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_22)) {
|
||||
setverdict(fail, "Cannot have SI16/SI17 and SI22!");
|
||||
mtc.stop;
|
||||
}
|
||||
if (not cfg.bcch_extended) {
|
||||
testcase.stop("Error: SI16/SI17 requires BCCH Extd!");
|
||||
|
@ -2131,6 +2150,7 @@ function f_validate_si_scheduling(SystemInformationConfig cfg, SystemInformation
|
|||
}
|
||||
if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_13)) {
|
||||
setverdict(fail, "Cannot have SI13alt and SI13");
|
||||
mtc.stop;
|
||||
}
|
||||
if (not cfg.bcch_extended) {
|
||||
f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_13alt, false, 1, 4);
|
||||
|
@ -2162,6 +2182,7 @@ function f_validate_si_scheduling(SystemInformationConfig cfg, SystemInformation
|
|||
f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_21, true, 1, 4);
|
||||
if (f_si_vecslot_contains(si_per_tc[4], SYSTEM_INFORMATION_TYPE_21)) {
|
||||
setverdict(fail, "Cannot have SI21 on BCCH Norm if BCCH Extd enabled!");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2176,6 +2197,7 @@ function f_validate_si_scheduling(SystemInformationConfig cfg, SystemInformation
|
|||
if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_16) or
|
||||
f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_17)) {
|
||||
setverdict(fail, "Cannot have SI16/SI17 and SI22!");
|
||||
mtc.stop;
|
||||
}
|
||||
if (not cfg.bcch_extended) {
|
||||
testcase.stop("Error: SI22 requires BCCH Extd!");
|
||||
|
@ -2337,12 +2359,14 @@ private function f_exp_err_rep(template RSL_Cause cause) runs on test_CT {
|
|||
}
|
||||
[] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_ERROR_REPORT(?))) {
|
||||
setverdict(fail, "Wrong cause in RSL ERR REP");
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL_CCHAN.receive {
|
||||
repeat;
|
||||
}
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for RSL ERR REP");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2489,7 +2513,7 @@ runs on test_CT {
|
|||
alt {
|
||||
[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_RTS_REQ(bts_nr))) {
|
||||
setverdict(fail, "PCU RTS.req before PDCH active?");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
[] T.timeout { }
|
||||
|
@ -2507,15 +2531,16 @@ runs on test_CT {
|
|||
[not exp_success] PCU.receive(t_SD_PCUIF(g_pcu_conn_id,
|
||||
tr_PCUIF_RTS_REQ(bts_nr, trx_nr, ts_nr))) {
|
||||
setverdict(fail, "Unexpected RTS.req for supposedly failing activation");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_RTS_REQ)) {
|
||||
setverdict(fail, "RTS.req for wrong TRX/TS");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
[exp_success] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for PCU RTS.req");
|
||||
mtc.stop;
|
||||
}
|
||||
[not exp_success] T.timeout {
|
||||
setverdict(pass);
|
||||
|
@ -2536,7 +2561,7 @@ runs on test_CT {
|
|||
alt {
|
||||
[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_RTS_REQ(bts_nr, trx_nr, ts_nr))) {
|
||||
setverdict(fail, "Received unexpected PCU RTS.req");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
[] T.timeout {
|
||||
|
@ -2607,7 +2632,7 @@ testcase TC_pcu_ver_si13() runs on test_CT {
|
|||
[] PCU.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for SI13");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2641,6 +2666,7 @@ runs on test_CT
|
|||
[] PCU.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for RTS.ind");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2714,6 +2740,7 @@ testcase TC_pcu_data_req_agch() runs on test_CT {
|
|||
[] L1CTL.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for PCU-originated AGCH block on Um");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2738,6 +2765,7 @@ testcase TC_pcu_data_req_imm_ass_pch() runs on test_CT {
|
|||
[] L1CTL.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for PCU-originated AGCH block on Um");
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2754,7 +2782,7 @@ testcase TC_pcu_rach_content() runs on test_CT {
|
|||
var GsmFrameNumber fn := f_L1CTL_RACH(L1CTL, oct2int(ra));
|
||||
if (fn == fn_last) {
|
||||
setverdict(fail, "Two RACH in same FN?!?");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
fn_last := fn;
|
||||
|
||||
|
@ -2766,12 +2794,12 @@ testcase TC_pcu_rach_content() runs on test_CT {
|
|||
}
|
||||
[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_RACH_IND)) {
|
||||
setverdict(fail, "Unexpected RACH IND");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for RACH IND");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2810,12 +2838,12 @@ testcase TC_pcu_paging_from_rsl() runs on test_CT {
|
|||
}
|
||||
[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_PAG_REQ)) {
|
||||
setverdict(fail, "Unexpected PAGING REQ");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for PAGING REQ");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2837,7 +2865,7 @@ runs on ConnHdlr {
|
|||
[] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {
|
||||
if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) {
|
||||
setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
|
@ -2858,7 +2886,7 @@ runs on ConnHdlr {
|
|||
[] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {
|
||||
if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) {
|
||||
setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
|
@ -3021,7 +3049,7 @@ runs on ConnHdlr {
|
|||
[] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {
|
||||
if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) {
|
||||
setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
|
@ -3044,7 +3072,7 @@ runs on ConnHdlr {
|
|||
[] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {
|
||||
if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) {
|
||||
setverdict(fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
[] PCU.receive { repeat; }
|
||||
|
@ -3130,7 +3158,7 @@ function f_TC_dyn_ipa_pdch_tchf_act_pdch_act_nack(charstring id) runs on ConnHdl
|
|||
[] RSL.receive(tr_RSL_IPA_PDCH_ACT_NACK(g_chan_nr, ?));
|
||||
[] RSL.receive(tr_RSL_IPA_PDCH_ACT_ACK(g_chan_nr, ?)) {
|
||||
setverdict(fail, "Unexpected PDCH ACT ACK");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL.receive { repeat; }
|
||||
}
|
||||
|
@ -3254,6 +3282,7 @@ private function f_TC_rll_est_ind(charstring id) runs on ConnHdlr {
|
|||
setverdict(pass);
|
||||
} else {
|
||||
setverdict(fail, "Unexpected EST IND with L3 in ", tc);
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
[tc.l3 == ''O] RSL.receive(tr_RSL_EST_IND_NOL3(g_chan_nr, tc.link_id)) {
|
||||
|
@ -3261,10 +3290,12 @@ private function f_TC_rll_est_ind(charstring id) runs on ConnHdlr {
|
|||
setverdict(pass);
|
||||
} else {
|
||||
setverdict(fail, "Unexpected EST IND without L3 in ", tc);
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
[tc.exp] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for EST IND");
|
||||
mtc.stop;
|
||||
}
|
||||
[not tc.exp] T.timeout {
|
||||
setverdict(pass);
|
||||
|
@ -3326,7 +3357,7 @@ private function f_TC_rll_est_req(charstring id) runs on ConnHdlr {
|
|||
[] L1CTL.receive { repeat; }
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for SABM");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3381,7 +3412,7 @@ private function f_l1_exp_lapdm(template LapdmFrame exp, float t := 3.0) runs on
|
|||
alt {
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for LAPDm ", exp);
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] as_l1_exp_lapdm(exp);
|
||||
}
|
||||
|
@ -3397,7 +3428,7 @@ private function f_est_rll_mo(uint3_t sapi, RslLinkId link_id, octetstring l3) r
|
|||
[l3 == ''O] RSL.receive(tr_RSL_EST_IND_NOL3(g_chan_nr, link_id));
|
||||
[] RSL.receive(tr_RSL_ERROR_IND(g_chan_nr, link_id, ?)) {
|
||||
setverdict(fail, "Failing due to RSL_ERROR_IND");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL.receive { repeat; }
|
||||
}
|
||||
|
@ -3613,6 +3644,7 @@ function f_unitdata_mo(RslLinkId link_id, octetstring l3) runs on ConnHdlr {
|
|||
}
|
||||
[] T.timeout {
|
||||
setverdict(fail, "Timeout waiting for UNIT_DATA_IND");
|
||||
mtc.stop;
|
||||
}
|
||||
[] RSL.receive { repeat; }
|
||||
}
|
||||
|
@ -3723,12 +3755,13 @@ private function f_assert_lapdm(octetstring enc, template LapdmFrame exp_match,
|
|||
lf.ab := dec_LapdmFrameAB(enc);
|
||||
} else {
|
||||
setverdict(fail, "unsupported frame type");
|
||||
self.stop;
|
||||
mtc.stop;
|
||||
}
|
||||
|
||||
/* check if decoder result matches expectation */
|
||||
if (not match(lf, exp_match)) {
|
||||
setverdict(fail, name, ": decoded LAPDm doesn't match");
|
||||
mtc.stop;
|
||||
} else {
|
||||
log(name, ": matched");
|
||||
setverdict(pass);
|
||||
|
@ -3738,6 +3771,7 @@ private function f_assert_lapdm(octetstring enc, template LapdmFrame exp_match,
|
|||
reenc := enc_LapdmFrame(lf);
|
||||
if (enc != reenc) {
|
||||
setverdict(fail, name, ": re-encoded LAPDm frame doesn't match");
|
||||
mtc.stop;
|
||||
} else {
|
||||
setverdict(pass);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue