daniel has submitted this change and it was merged. ( https://gerrit.osmocom.org/11452 )
Change subject: BTS_Tests: Use Misc_Helpers.f_shutdown consistently ...................................................................... BTS_Tests: Use Misc_Helpers.f_shutdown consistently Replace all calls to setverdict(fail) with f_shutdown() since I'd rather fail and stop early in case we encounter an error. Only replace setverdict(pass) with f_shutdown() if it is followed by mtc.stop Remove internal function f_shutdown and use the one from Misc_Helpers Change-Id: Ia8b01a1876e969d6f0760ea625e4df83af4f54ca --- M bts/BTS_Tests.ttcn M bts/gen_links.sh 2 files changed, 131 insertions(+), 208 deletions(-) Approvals: Jenkins Builder: Verified Pau Espin Pedrol: Looks good to me, approved diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index fe0a933..5b073ef 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -1,5 +1,6 @@ module BTS_Tests { +import from Misc_Helpers all; import from General_Types all; import from GSM_Types all; import from GSM_RR_Types all; @@ -270,8 +271,7 @@ pcu_last_info := sd.data; } [] pt.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(?, ?, ?))) -> value sd { - setverdict(fail, "Invalid PCU Version/BTS Number received"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Invalid PCU Version/BTS Number received"); } } @@ -289,8 +289,7 @@ alt { [] as_pcu_info_ind(pt, pcu_conn_id, pcu_last_info); [] T.timeout { - setverdict(fail, "Timeout waiting for PCU INFO_IND"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for PCU INFO_IND"); } } } @@ -341,8 +340,7 @@ alt { [] RSL_CCHAN.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_UP}); [] T.timeout { - setverdict(fail, "Timeout waiting for ASP_IPA_EVENT_UP"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for ASP_IPA_EVENT_UP"); } } f_sleep(0.5); /* workaround for OS#3000 */ @@ -366,12 +364,6 @@ } } -function f_shutdown() runs on test_CT { - /* mtc.stop cleanly stops testcase execution to avoid unclean shutdown */ - all component.stop; - mtc.stop; -} - /* Attach L1CTL to master test_CT (classic tests, non-handler mode) */ function f_init_l1ctl() runs on test_CT { map(self:L1CTL, system:L1CTL); @@ -415,8 +407,7 @@ private altstep as_Tguard() runs on ConnHdlr { [] g_Tguard.timeout { - setverdict(fail, "Tguard timeout"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Tguard timeout"); } } @@ -430,8 +421,7 @@ res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port, "", -1, -1, {udp:={}}, {}); if (not ispresent(res.connId)) { - setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Could not connect to trx-control interface of trxcon, check your configuration"); } g_bb_trxc_conn_id := res.connId; } @@ -481,15 +471,13 @@ setverdict(pass); } [] T.timeout { - setverdict(fail, "Timeout expecting " & id); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout expecting " & id); } [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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected RSL message received"); } [ignore_other] RSL.receive { repeat; } } @@ -566,7 +554,7 @@ f_init(testcasename()); vc_conn := f_start_handler(refers(f_TC_chan_act_stress), pars); vc_conn.done; - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Test if re-activation of an already active channel fails as expected */ @@ -576,8 +564,7 @@ RSL.send(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode)); alt { [] RSL.receive(tr_RSL_CHAN_ACT_ACK(g_chan_nr)) { - setverdict(fail, "Unexpected CHAN ACT ACK on double activation"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected CHAN ACT ACK on double activation"); } [] RSL.receive(tr_RSL_CHAN_ACT_NACK(g_chan_nr)) { setverdict(pass); @@ -591,7 +578,7 @@ f_init(); vc_conn := f_start_handler(refers(f_TC_chan_act_react), pars); vc_conn.done; - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Attempt to de-activate a channel that's not active */ @@ -604,8 +591,7 @@ setverdict(pass); } [] T.timeout { - setverdict(fail, "Timeout expecting RF_CHAN_REL_ACK"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout expecting RF_CHAN_REL_ACK"); } } } @@ -614,7 +600,7 @@ f_init(); var ConnHdlr vc_conn := f_start_handler(refers(f_TC_chan_deact_not_active), pars); vc_conn.done; - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* attempt to activate channel with wrong RSL Channel Nr IE; expect NACK */ @@ -622,8 +608,7 @@ RSL.send(ts_RSL_CHAN_ACT(g_chan_nr, g_pars.chan_mode)); alt { [] RSL.receive(tr_RSL_CHAN_ACT_ACK(g_chan_nr)) { - setverdict(fail, "Unexpected CHAN ACT ACK"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected CHAN ACT ACK"); } [] RSL.receive(tr_RSL_CHAN_ACT_NACK(g_chan_nr)) { setverdict(pass); @@ -667,7 +652,7 @@ vc_conn := f_start_handler(refers(f_TC_chan_act_wrong_nr), pars); vc_conn.done; } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* execute the same callback function on a variety of logical channels */ @@ -684,7 +669,7 @@ vc_conn.done; } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /*********************************************************************** @@ -696,8 +681,7 @@ T_sacch.start; 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received SACCH when not expecting it"); } [not exp] T_sacch.timeout { setverdict(pass); @@ -706,8 +690,7 @@ setverdict(pass); } [exp] T_sacch.timeout { - setverdict(fail, "Timeout waiting for SACCH on ", g_chan_nr); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Timeout waiting for SACCH on ", g_chan_nr)); } [] L1CTL.receive { repeat; } [] RSL.receive { repeat; } @@ -750,7 +733,7 @@ vc_conn.done; } /* TODO: do the above in parallel, rather than sequentially? */ - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* verify that given SACCH payload is present */ @@ -771,8 +754,7 @@ } [] L1CTL.receive { repeat; } [] T_sacch.timeout { - setverdict(fail, "Timeout waiting for SACCH ", l3_exp); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Timeout waiting for SACCH ", l3_exp)); } } } @@ -788,8 +770,7 @@ [] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, tr_RslLinkID_SACCH(0))) -> value dl { var octetstring l3 := substr(dl.payload.data_ind.payload, 4, 19); if (match(l3, l3_exp)) { - setverdict(fail, "Received unexpected SACCH ", dl); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Received unexpected SACCH ", dl)); } else { repeat; } @@ -832,7 +813,7 @@ vc_conn.done; } /* TODO: do the above in parallel, rather than sequentially? */ - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Test for lchan-specific SACCH INFO MODIFY (TS 48.058 4.12) */ @@ -880,7 +861,7 @@ vc_conn.done; } /* TODO: do the above in parallel, rather than sequentially? */ - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Test SACCH scheduling of multiple different SI message types */ @@ -923,7 +904,7 @@ vc_conn.done; } /* TODO: do the above in parallel, rather than sequentially? */ - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Test if SACH information is modified as expected */ @@ -969,7 +950,7 @@ vc_conn.done; } /* TODO: do the above in parallel, rather than sequentially? */ - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* TODO: Test for SACCH information present in RSL CHAN ACT (overrides FILLING) */ @@ -1017,8 +998,7 @@ var OCT1 ra := f_rnd_ra_cs(); var GsmFrameNumber fn := f_L1CTL_RACH(L1CTL, oct2int(ra)); if (fn == fn_last) { - setverdict(fail, "Two RACH in same FN?!?"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Two RACH in same FN?!?"); } fn_last := fn; @@ -1029,18 +1009,16 @@ T.stop; } [] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_CHAN_RQD(?, ?, ?))) { - setverdict(fail, "Unexpected CHAN RQD"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected CHAN RQD"); } [] RSL_CCHAN.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for CHAN RQD"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for CHAN RQD"); } } } setverdict(pass); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Send 1000 RACH Requests (flood ~ 89/s) and count if count(Abis) == count(Um) */ @@ -1055,8 +1033,7 @@ var OCT1 ra := f_rnd_ra_cs(); var GsmFrameNumber fn := f_L1CTL_RACH(L1CTL, oct2int(ra)); if (fn == fn_last) { - setverdict(fail, "Two RACH in same FN?!?"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Two RACH in same FN?!?"); } fn_last := fn; } @@ -1075,9 +1052,9 @@ if (rsl_chrqd == 1000) { setverdict(pass); } else { - setverdict(fail, "Received only ", rsl_chrqd, " out of 1000 RACH"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Received only ", rsl_chrqd, " out of 1000 RACH")); } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } private function f_main_trxc_connect() runs on test_CT { @@ -1086,8 +1063,7 @@ res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port, "", -1, -1, {udp:={}}, {}); if (not ispresent(res.connId)) { - setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Could not connect to trx-control interface of trxcon, check your configuration"); } g_bb_trxc_conn_id := res.connId; } @@ -1110,16 +1086,14 @@ setverdict(pass); } [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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("RACH passed but was expected to be dropped: ", toffs256)); } [] RSL_CCHAN.receive { repeat; } [not expect_pass] T.timeout { setverdict(pass); } [expect_pass] T.timeout { - setverdict(fail, "Timeout waiting for CHAN RQD"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for CHAN RQD"); } } } @@ -1146,7 +1120,7 @@ /* more than 63 bits is not legal / permitted */ f_rach_toffs(64*256, false); f_rach_toffs(127*256, false); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /*********************************************************************** @@ -1322,17 +1296,14 @@ g_first_meas_res := false; repeat; } else { - setverdict(fail, "Received unspecific MEAS RES ", rsl); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Received unspecific MEAS RES ", rsl)); } } [] RSL.receive(tr_RSL_MEAS_RES(?)) -> value rsl { - setverdict(fail, "Received unexpected MEAS RES ", rsl); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Received unexpected MEAS RES ", rsl)); } [g_Tmeas_exp.running] g_Tmeas_exp.timeout { - setverdict(fail, "Didn't receive expected measurement result") - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Didn't receive expected measurement result") } } @@ -1347,7 +1318,9 @@ case (RSL_ALG_ID_A5_6) { return 6; } case (RSL_ALG_ID_A5_7) { return 7; } case else { - setverdict(fail, "Unknwon Algorithm ID"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unknwon Algorithm ID"); + /* Make compiler happy by calling mtc.stop here. It is already + * called in f_shutdown */ mtc.stop; } } @@ -1363,7 +1336,9 @@ case (RSL_ALG_ID_A5_6) { return '101'B; } case (RSL_ALG_ID_A5_7) { return '110'B; } case else { - setverdict(fail, "Unknwon Algorithm ID"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unknwon Algorithm ID"); + /* Make compiler happy by calling mtc.stop here. It is already + * called in f_shutdown */ mtc.stop; } } @@ -1435,13 +1410,12 @@ [] as_l1_dcch(); [] L1CTL.receive { repeat; } [g_Tmeas_exp.running] T.timeout { - /* as_meas_res() would have done setverdict(fail) / mtc.stop in case + /* as_meas_res() would have done Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail) 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "No MEAS RES received at all"); } } f_rsl_chan_deact(); @@ -1457,7 +1431,7 @@ vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars); vc_conn.done; } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_meas_res_sign_tchh() runs on test_CT { var ConnHdlr vc_conn; @@ -1468,7 +1442,7 @@ vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars); vc_conn.done; } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_meas_res_sign_sdcch4() runs on test_CT { var ConnHdlr vc_conn; @@ -1479,7 +1453,7 @@ vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars); vc_conn.done; } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_meas_res_sign_sdcch8() runs on test_CT { var ConnHdlr vc_conn; @@ -1490,7 +1464,7 @@ vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars); vc_conn.done; } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_meas_res_sign_tchh_toa256() runs on test_CT { var ConnHdlr vc_conn; @@ -1503,7 +1477,7 @@ vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars); vc_conn.done; } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } @@ -1524,8 +1498,7 @@ } [] RSL.receive { repeat }; [] T.timeout { - setverdict(fail, "No CONN FAIL IND received"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "No CONN FAIL IND received"); } } f_rsl_chan_deact(); @@ -1570,8 +1543,7 @@ fn_check.frame_nr := frame_nr_51; if (bs_ag_blks_res < 0 or bs_ag_blks_res > 7) { - setverdict(fail, "bs_ag_blks_res out of valid range (0..7)"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "bs_ag_blks_res out of valid range (0..7)"); return; } @@ -1600,8 +1572,7 @@ return; } - setverdict(fail, "received paging on AGCH"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "received paging on AGCH"); return; } @@ -1716,8 +1687,7 @@ repeat; } [not cfg.exp_overload] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND(0))) { - setverdict(fail, "Unexpected PCH Overload"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected PCH Overload"); } [cfg.exp_load_ind] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND)) { log("Rx LOAD_IND"); @@ -1775,8 +1745,7 @@ [] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND(65535))) { } [] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND)) { repeat; } [] T_wait.timeout { - setverdict(fail, "Waiting for empty paging queue"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Waiting for empty paging queue"); } [] as_rsl_res_ind(); } @@ -1802,12 +1771,12 @@ }; var PagingTestState st := f_TC_paging(cfg); if (st.num_paging_sent != st.num_paging_rcv_ids) { - setverdict(fail, "Expected ", st.num_paging_sent, " pagings but have ", - st.num_paging_rcv_ids); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Expected ", st.num_paging_sent, " pagings but have ", + st.num_paging_rcv_ids)); } else { setverdict(pass); } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Create ~ 80% paging load (TMSI only) sustained for about 20s, verifying that @@ -1826,12 +1795,12 @@ }; var PagingTestState st := f_TC_paging(cfg); if (st.num_paging_sent != st.num_paging_rcv_ids) { - setverdict(fail, "Expected ", st.num_paging_sent, " pagings but have ", - st.num_paging_rcv_ids); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Expected ", st.num_paging_sent, " pagings but have ", + st.num_paging_rcv_ids)); } else { setverdict(pass); } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Create ~ 200% paging load (IMSI only) sustained for about 20s, verifying that @@ -1853,11 +1822,11 @@ * slots and will fully drain that buffer before returning */ var template integer tpl := (st.num_paging_sent*78/100 .. st.num_paging_sent *85/100); if (not match(st.num_paging_rcv_ids, tpl)) { - setverdict(fail, "Expected ", tpl, " pagings but have ", st.num_paging_rcv_ids); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Expected ", tpl, " pagings but have ", st.num_paging_rcv_ids)); } else { setverdict(pass); } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* Create ~ 200% paging load (TMSI only) sustained for about 20s, verifying that @@ -1879,11 +1848,11 @@ * slots and will fully drain that buffer before returning */ var template integer tpl := (st.num_paging_sent*64/100 .. st.num_paging_sent *72/100); if (not match(st.num_paging_rcv_ids, tpl)) { - setverdict(fail, "Expected ", tpl, " pagings but have ", st.num_paging_rcv_ids); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Expected ", tpl, " pagings but have ", st.num_paging_rcv_ids)); } else { setverdict(pass); } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } @@ -1946,8 +1915,7 @@ var GsmRrMessage rr := dec_GsmRrMessage(l1_dl.payload.data_ind.payload); 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); - //mtc.stop; + //Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected IMM-ASS values on AGCH: ", rr)); } else { num_rx := num_rx+1; } @@ -1959,16 +1927,15 @@ res_str := f_fmt_ia_stats(num_tx, num_rx, num_del); log("AGCH test: " & res_str); if (num_rx + num_del != num_tx) { - setverdict(fail, "RX + DEL != TX ?!?: " & res_str); - mtc.stop + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "RX + DEL != TX ?!?: " & res_str); } rx_ratio := int2float(num_rx) / int2float(num_tx); if (rx_ratio < exp_pass*0.8 or rx_ratio > exp_pass*1.2) { - setverdict(fail, "RX ratio ("&float2str(rx_ratio)&") far from expected ("&float2str(exp_pass)&") " & res_str); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "RX ratio ("&float2str(rx_ratio)&") far from expected ("&float2str(exp_pass)&") " & res_str); } else { setverdict(pass); } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* send a long burst of 1000 IMM.ASS with 20ms spacing (50 per s); expect 75% of them to be deleted */ @@ -2021,8 +1988,7 @@ /* ensure a given TC slot of the SI vector contains given SI type at least once at TC */ 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No ", key, " in TC=", tc, "!")); } } @@ -2041,8 +2007,7 @@ function f_si_vecslot_contains_n_of_m(SystemInformationVector arr, RrMessageType key, boolean bcch_ext := false, integer n := 1, integer m := 4) return boolean { var integer count := 0; if (sizeof(arr) < m) { - setverdict(fail, "Error: Insufficient SI in array"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Error: Insufficient SI in array"); } for (var integer i:= 0; i < m; i := i + 1) { var integer fn_mod51 := arr[i].frame_number mod 51; @@ -2063,8 +2028,7 @@ /* ensure a given TC slot of the SI vector contains given SI type at least N out of M times at TC */ 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Not ", n, "/", m, " of ", key, " in TC=", tc, "!")); } } @@ -2085,8 +2049,7 @@ /* ensure a given TC slot of the SI vector contains only given SI type */ 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Not all ", key, " in TC=", tc, "!")); } } @@ -2115,8 +2078,7 @@ var integer i; 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No SI messages for TC=", i)); } } if (cfg.si1_present) { @@ -2198,8 +2160,7 @@ f_ensure_si_vec_contains(si_per_tc, 0, SYSTEM_INFORMATION_TYPE_13, true); } if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_13alt)) { - setverdict(fail, "Cannot have SI13alt and SI13"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Cannot have SI13alt and SI13"); } } if (cfg.si16_present or cfg.si17_present) { @@ -2209,8 +2170,7 @@ testcase.stop("Error: Cannot have SI16/SI17 and SI22!"); } if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_22)) { - setverdict(fail, "Cannot have SI16/SI17 and SI22!"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Cannot have SI16/SI17 and SI22!"); } if (not cfg.bcch_extended) { testcase.stop("Error: SI16/SI17 requires BCCH Extd!"); @@ -2255,8 +2215,7 @@ testcase.stop("Error: Cannot have SI13alt and SI13"); } if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_13)) { - setverdict(fail, "Cannot have SI13alt and SI13"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Cannot have SI13alt and SI13"); } if (not cfg.bcch_extended) { f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_13alt, false, 1, 4); @@ -2287,8 +2246,7 @@ } else { 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Cannot have SI21 on BCCH Norm if BCCH Extd enabled!"); } } } @@ -2302,8 +2260,7 @@ } 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; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Cannot have SI16/SI17 and SI22!"); } if (not cfg.bcch_extended) { testcase.stop("Error: SI22 requires BCCH Extd!"); @@ -2375,7 +2332,7 @@ f_init(); /* 2+3+4 are mandatory and set in f_init() */ f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_si_sched_1() runs on test_CT { @@ -2383,7 +2340,7 @@ si_cfg.si1_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_1, '5506198fb38000000000000000000000000000e504002b'O); f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_si_sched_2bis() runs on test_CT { @@ -2391,7 +2348,7 @@ si_cfg.si2bis_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2bis, '550602bfe809b3ff00000000000000000000007900002b'O); f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_si_sched_2ter() runs on test_CT { @@ -2399,7 +2356,7 @@ si_cfg.si2ter_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2ter, '010603bf66b0aa0a00000002000000000000002b2b2b2b'O); f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_si_sched_2ter_2bis() runs on test_CT { @@ -2409,7 +2366,7 @@ si_cfg.si2ter_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2ter, '010603bf66b0aa0a00000002000000000000002b2b2b2b'O); f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_si_sched_2quater() runs on test_CT { @@ -2417,7 +2374,7 @@ si_cfg.si2quater_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2quater, '050607a8a0364aa698d72ff424feee0506d5e7fff02043'O); f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_si_sched_13() runs on test_CT { @@ -2425,7 +2382,7 @@ si_cfg.si13_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, '0106009000185a6fc9e08410ab2b2b2b2b2b2b2b2b2b2b'O); f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } testcase TC_si_sched_13_2bis_2ter_2quater() runs on test_CT { @@ -2439,7 +2396,7 @@ si_cfg.si13_present := true; f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, '0106009000185a6fc9e08410ab2b2b2b2b2b2b2b2b2b2b'O); f_TC_si_sched(); - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } @@ -2449,7 +2406,7 @@ //ts_RSL_BCCH_INFO(si_type, info); /* expect no ERROR REPORT after either of them * /* negative test: ensure ERROR REPORT on unsupported types */ - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /*********************************************************************** @@ -2464,15 +2421,13 @@ setverdict(pass); } [] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_ERROR_REPORT(?))) { - setverdict(fail, "Wrong cause in RSL ERR REP"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Wrong cause in RSL ERR REP"); } [] RSL_CCHAN.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for RSL ERR REP"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for RSL ERR REP"); } } } @@ -2618,8 +2573,7 @@ T.start; alt { [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_RTS_REQ(bts_nr))) { - setverdict(fail, "PCU RTS.req before PDCH active?"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCU RTS.req before PDCH active?"); } [] PCU.receive { repeat; } [] T.timeout { } @@ -2636,17 +2590,14 @@ } [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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected RTS.req for supposedly failing activation"); } [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_RTS_REQ)) { - setverdict(fail, "RTS.req for wrong TRX/TS"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "RTS.req for wrong TRX/TS"); } [] PCU.receive { repeat; } [exp_success] T.timeout { - setverdict(fail, "Timeout waiting for PCU RTS.req"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for PCU RTS.req"); } [not exp_success] T.timeout { setverdict(pass); @@ -2666,8 +2617,7 @@ T.start; 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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received unexpected PCU RTS.req"); } [] PCU.receive { repeat; } [] T.timeout { @@ -2737,8 +2687,7 @@ } [] PCU.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for SI13"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for SI13"); } } } @@ -2771,8 +2720,7 @@ } [] PCU.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for RTS.ind"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for RTS.ind"); } } } @@ -2845,8 +2793,7 @@ } [] L1CTL.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for PCU-originated AGCH block on Um"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for PCU-originated AGCH block on Um"); } } } @@ -2870,8 +2817,7 @@ } [] L1CTL.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for PCU-originated AGCH block on Um"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for PCU-originated AGCH block on Um"); } } } @@ -2887,8 +2833,7 @@ var OCT1 ra := f_rnd_ra_ps(); var GsmFrameNumber fn := f_L1CTL_RACH(L1CTL, oct2int(ra)); if (fn == fn_last) { - setverdict(fail, "Two RACH in same FN?!?"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Two RACH in same FN?!?"); } fn_last := fn; @@ -2899,13 +2844,11 @@ T.stop; } [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_RACH_IND)) { - setverdict(fail, "Unexpected RACH IND"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected RACH IND"); } [] PCU.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for RACH IND"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for RACH IND"); } } } @@ -2943,13 +2886,11 @@ [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_PAG_REQ(0, t_mi_lv))) { } [] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_PAG_REQ)) { - setverdict(fail, "Unexpected PAGING REQ"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected PAGING REQ"); } [] PCU.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for PAGING REQ"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for PAGING REQ"); } } } @@ -2970,8 +2911,7 @@ alt { [] 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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT"); } } [] PCU.receive { repeat; } @@ -2991,8 +2931,7 @@ alt { [] 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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT"); } } [] PCU.receive { repeat; } @@ -3154,8 +3093,7 @@ alt { [] 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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT"); } } [] PCU.receive { repeat; } @@ -3177,8 +3115,7 @@ alt { [] 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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT"); } } [] PCU.receive { repeat; } @@ -3263,8 +3200,7 @@ alt { [] 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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected PDCH ACT ACK"); } [] RSL.receive { repeat; } } @@ -3373,7 +3309,7 @@ } } - f_shutdown(); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } /* test if SABM on Um triggers EST IND (TS 48.058 3.1) */ @@ -3395,23 +3331,20 @@ if (tc.exp) { setverdict(pass); } else { - setverdict(fail, "Unexpected EST IND with L3 in ", tc); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected EST IND with L3 in ", tc)); } } [tc.l3 == ''O] RSL.receive(tr_RSL_EST_IND_NOL3(g_chan_nr, tc.link_id)) { if (tc.exp) { setverdict(pass); } else { - setverdict(fail, "Unexpected EST IND without L3 in ", tc); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected EST IND without L3 in ", tc)); } } /* We also expect to receive the measurements */ [] as_meas_res(verify_meas := false); [tc.exp] T.timeout { - setverdict(fail, "Timeout waiting for EST IND"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for EST IND"); } [not tc.exp] T.timeout { setverdict(pass); @@ -3472,8 +3405,7 @@ } [] L1CTL.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for SABM"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for SABM"); } } @@ -3527,8 +3459,7 @@ T.start; alt { [] T.timeout { - setverdict(fail, "Timeout waiting for LAPDm ", exp); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Timeout waiting for LAPDm ", exp)); } [] as_l1_exp_lapdm(exp); } @@ -3543,8 +3474,7 @@ [l3 != ''O] RSL.receive(tr_RSL_EST_IND(g_chan_nr, link_id, l3)); [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"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Failing due to RSL_ERROR_IND"); } [] RSL.receive { repeat; } } @@ -3754,8 +3684,7 @@ private altstep as_rsl_any_ind(boolean exp_any) runs on ConnHdlr { [exp_any] RSL.receive { repeat; } [not exp_any] RSL.receive { - setverdict(fail, "Unexpected RSL message!"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected RSL message!"); } } @@ -3777,8 +3706,7 @@ [exp_sacch] as_meas_res(verify_meas := false); [] as_rsl_any_ind(exp_any); [] T.timeout { - setverdict(fail, "Timeout waiting for UNIT_DATA_IND"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for UNIT_DATA_IND"); } } } @@ -3802,8 +3730,7 @@ [exp_sacch] as_meas_res(verify_meas := false); [] as_rsl_any_ind(exp_any); [] T.timeout { - setverdict(fail, "Timeout waiting for DATA_IND"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for DATA_IND"); } } } @@ -3910,14 +3837,12 @@ if (ischosen(exp_match.ab)) { lf.ab := dec_LapdmFrameAB(enc); } else { - setverdict(fail, "unsupported frame type"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "unsupported frame type"); } /* check if decoder result matches expectation */ if (not match(lf, exp_match)) { - setverdict(fail, name, ": decoded LAPDm doesn't match"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str(name, ": decoded LAPDm doesn't match")); } else { log(name, ": matched"); setverdict(pass); @@ -3926,8 +3851,7 @@ /* test if re-encoded frame equals original input */ reenc := enc_LapdmFrame(lf); if (enc != reenc) { - setverdict(fail, name, ": re-encoded LAPDm frame doesn't match"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str(name, ": re-encoded LAPDm frame doesn't match")); } else { setverdict(pass); } @@ -4025,7 +3949,7 @@ T.stop; f_rsl_chan_deact(); f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr); - setverdict(fail, "Received fill frame on non-TCH/F channel; DTX is only allowed on TCH/F!"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received fill frame on non-TCH/F channel; DTX is only allowed on TCH/F!"); } if (fn > first_fn + frame_dtx_tchf_mod) { T.stop; @@ -4039,7 +3963,7 @@ if (nfill_frames_sacch + nfill_frames_nonsacch < expected_fill_frames) { log("received only ", nfill_frames_sacch, "+", nfill_frames_nonsacch, " (SACCH+other) out of ", expected_fill_frames, " expected fill frames"); - setverdict(fail, "Not enough fill frames received"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Not enough fill frames received"); } else { setverdict(pass); } @@ -4063,7 +3987,7 @@ " (mod ", block_dtx_tchf_mod, ": ", fn mod block_dtx_tchf_mod, ")"); f_rsl_chan_deact(); f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr); - setverdict(fail, "Unexpected L2 fill frame received on Um"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected L2 fill frame received on Um"); } } else { if (dl.dl_info.link_id.c == SACCH) { @@ -4086,7 +4010,7 @@ } else { f_rsl_chan_deact(); f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr); - setverdict(fail, "Unknown channel type"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unknown channel type"); } f_rsl_chan_deact(); @@ -4097,7 +4021,7 @@ } else { log("received only ", nfill_frames_sacch, "+", nfill_frames_nonsacch, " (SACCH+other) out of ", expected_fill_frames, " expected fill frames"); - setverdict(fail, "Not enough fill frames received"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Not enough fill frames received"); } } else { repeat; @@ -4108,8 +4032,7 @@ [] T.timeout { f_rsl_chan_deact(); f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr); - setverdict(fail, "Timeout waiting for L2 fill frames on Um"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for L2 fill frames on Um"); } } } diff --git a/bts/gen_links.sh b/bts/gen_links.sh index 1ec6153..2a07f16 100755 --- a/bts/gen_links.sh +++ b/bts/gen_links.sh @@ -33,7 +33,7 @@ gen_links $DIR $FILES DIR=../library -FILES="General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_VTY_Functions.ttcn GSM_SystemInformation.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn " +FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_VTY_Functions.ttcn GSM_SystemInformation.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn " #FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc " #FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn " FILES+="IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp IPA_CodecPort.ttcn RSL_Types.ttcn RSL_Emulation.ttcn " -- To view, visit https://gerrit.osmocom.org/11452 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: Ia8b01a1876e969d6f0760ea625e4df83af4f54ca Gerrit-Change-Number: 11452 Gerrit-PatchSet: 2 Gerrit-Owner: daniel <dwillm...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder (1000002) Gerrit-Reviewer: Pau Espin Pedrol <pes...@sysmocom.de> Gerrit-Reviewer: daniel <dwillm...@sysmocom.de>