aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-09-23 14:16:58 +0200
committerpespin <pespin@sysmocom.de>2020-09-25 20:37:58 +0000
commit6ed083c6c8c6b15b8aeecfe078f252e181e0904e (patch)
treec865cc6144afbaf9f26441f24f77eeca4545a43a
parent535aea686e24c4be67e1cd16ce85ea75925859f5 (diff)
bsc: Call f_shutdown_helper() on all tests missing it
This should hopefully avoid sporadic errors during tear down of tests such as TC_si_acc_rotate. Change-Id: I8c8a1061b546576b7a5c4b11f20dfc887aaab6e0
-rw-r--r--bsc/BSC_Tests.ttcn198
1 files changed, 145 insertions, 53 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 9e0fae38..7f670d20 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1148,7 +1148,7 @@ testcase TC_chan_act_noreply() runs on test_CT {
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);
+ f_shutdown_helper();
}
/* verify if the "chreq:total" counter increments as expected */
@@ -1164,7 +1164,7 @@ testcase TC_chan_act_counter() runs on test_CT {
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);
- setverdict(pass);
+ f_shutdown_helper();
}
/* CHAN RQD -> CHAN ACT -> CHAN ACT ACK -> RF CHAN REL */
@@ -1177,7 +1177,7 @@ private function f_TC_chan_act_ack_noest(OCT1 ra := '23'O) runs on test_CT {
/* expect BSC to disable the channel again if there's no RLL EST IND */
rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Normal variant */
@@ -1236,7 +1236,7 @@ testcase TC_chan_act_ack_est_ind_noreply() runs on test_CT {
/* expect BSC to disable the channel again if there's no response from MSC */
/* MS waits 20s (T3210) at LU; 10s (T3230) at CM SERV REQ and 5s (T3220) AT detach */
f_expect_chan_rel(0, chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior if MSC answers with CREF to CR */
@@ -1257,7 +1257,7 @@ testcase TC_chan_act_ack_est_ind_refused() runs on test_CT {
/* expect BSC to disable the channel */
f_expect_chan_rel(0, chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* CHAN RQD -> CHAN ACT -> CHAN ACT NACK -> RF CHAN REL */
@@ -1280,7 +1280,7 @@ testcase TC_chan_act_nack() runs on test_CT {
f_ctrl_get_exp_ratectr_abs(IPA_CTRL, "bts", 0, "chan_act:nack", chact_nack+1);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test for channel exhaustion due to RACH overload */
@@ -1329,6 +1329,7 @@ testcase TC_chan_exhaustion() runs on test_CT {
}
[] IPA_RSL[0].receive { repeat; }
}
+ f_shutdown_helper();
}
/* Test channel deactivation due to silence from MS */
@@ -1360,6 +1361,7 @@ testcase TC_chan_deact_silence() runs on test_CT {
setverdict(fail, "Unexpected RSL message!");
}
}
+ f_shutdown_helper();
}
/***********************************************************************
@@ -1374,7 +1376,7 @@ testcase TC_outbound_connect(integer bssap_idx := 0) runs on test_CT {
BSSAP.send(ts_BSSAP_CONNECT_req(g_bssap[bssap_idx].sccp_addr_peer, g_bssap[bssap_idx].sccp_addr_own,
2342, ts_BSSMAP_AssignmentReq));
BSSAP.receive(tr_BSSAP_DISC_ind(2342, ?, ?));
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior if MSC answers with CREF to CR */
@@ -1405,6 +1407,7 @@ testcase TC_assignment_cic_only(integer bssap_idx := 0) runs on test_CT {
}
[] BSSAP.receive { repeat; }
}
+ f_shutdown_helper();
}
/* generate an assignment request for either AoIP or SCCPlite */
@@ -1492,6 +1495,7 @@ testcase TC_assignment_csd() runs on test_CT {
ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeCSD);
//exp_fail.pdu.bssmap.assignmentFailure.cause.causeValue := int2bit(enum2int(GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_UNAVAIL), 7);
f_assignment_exp(ass_cmd, exp_fail, "BSC accepted Assignment for CSD");
+ f_shutdown_helper();
}
testcase TC_assignment_ctm() runs on test_CT {
@@ -1500,6 +1504,7 @@ testcase TC_assignment_ctm() runs on test_CT {
ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeCTM);
//exp_fail.pdu.bssmap.assignmentFailure.cause.causeValue := int2bit(enum2int(GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_UNAVAIL), 7);
f_assignment_exp(ass_cmd, exp_fail, "BSC accepted Assignment for Speech+CTM");
+ f_shutdown_helper();
}
type record DchanTuple {
@@ -1577,7 +1582,7 @@ testcase TC_chan_rel_rll_rel_ind() runs on test_CT {
/* wait for SCCP emulation to do its job */
f_sleep(1.0);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior of channel release after CONN FAIL IND from BTS */
@@ -1606,7 +1611,7 @@ testcase TC_chan_rel_conn_fail() runs on test_CT {
/* wait for SCCP emulation to do its job */
f_sleep(1.0);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior of early CONN FAIL IND from BTS (before EST IND!) */
@@ -1629,7 +1634,7 @@ testcase TC_early_conn_fail() runs on test_CT {
/* BTS<-BSC: respond with CHAN REL ACK */
f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr));
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior of late CONN FAIL IND from BTS (ater REL IND!) */
@@ -1662,7 +1667,7 @@ testcase TC_late_conn_fail() runs on test_CT {
/* BSC<-MSC: MSC disconnects as requested. */
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
- setverdict(pass);
+ f_shutdown_helper();
}
function f_expect_chan_rel(integer bts_nr, RslChannelNr rsl_chan_nr,
@@ -1797,7 +1802,7 @@ testcase TC_chan_rel_hard_clear() runs on test_CT {
}
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior of channel release after Clear Command with CSFB indicator from MSC */
@@ -1820,7 +1825,7 @@ testcase TC_chan_rel_hard_clear_csfb() runs on test_CT {
}
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false, is_csfb := true);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior of channel release after hard RLSD from MSC */
@@ -1835,7 +1840,7 @@ testcase TC_chan_rel_hard_rlsd() runs on test_CT {
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior of channel release after hard RLSD from MSC and MS is not responding to RLL REL REQ */
@@ -1850,7 +1855,7 @@ testcase TC_chan_rel_hard_rlsd_ms_dead() runs on test_CT {
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior of channel release after BSSMAP RESET from MSC */
@@ -1872,7 +1877,7 @@ testcase TC_chan_rel_a_reset() runs on test_CT {
}
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Verify T(iar) triggers and releases the channel */
@@ -1889,7 +1894,7 @@ testcase TC_chan_rel_sccp_tiar_timeout() runs on test_CT {
dt := f_est_dchan('23'O, 23, '00010203040506'O);
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
private function f_tc_chan_rel_rr_cause(myBSSMAP_Cause clear_cmd_cause, template RR_Cause expect_rr_cause)
@@ -1905,7 +1910,7 @@ runs on test_CT
}
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false, expect_rr_cause := expect_rr_cause);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test that Clear Command cause codes affect the RR Channel Release cause code */
@@ -1940,7 +1945,7 @@ testcase TC_rll_est_ind_inact_lchan() runs on test_CT {
[] T.timeout {}
}
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior if RSL EST IND for invalid SAPI */
@@ -1965,7 +1970,7 @@ testcase TC_rll_est_ind_inval_sapi1() runs on test_CT {
[] T.timeout {}
}
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior if RSL EST IND for invalid SAPI */
@@ -1989,7 +1994,7 @@ testcase TC_rll_est_ind_inval_sapi3() runs on test_CT {
[] T.timeout {}
}
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test behavior if RSL EST IND for invalid SACCH */
@@ -2013,7 +2018,7 @@ testcase TC_rll_est_ind_inval_sacch() runs on test_CT {
[] T.timeout {}
}
- setverdict(pass);
+ f_shutdown_helper();
}
private function f_exp_sapi_n_reject(template (present) GsmSapi sapi := ?,
@@ -2070,7 +2075,7 @@ testcase TC_rll_rel_ind_sapi_n_reject() runs on test_CT {
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Check if we get SAPI N Reject on receipt of unexpected RLL ERROR INDication */
@@ -2098,7 +2103,7 @@ testcase TC_rll_err_ind_sapi_n_reject() runs on test_CT {
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Check if we get SAPI N Reject due to a SAPI=3 link establishment timeout */
@@ -2124,12 +2129,13 @@ testcase TC_rll_timeout_sapi_n_reject() runs on test_CT {
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
- setverdict(pass);
+ f_shutdown_helper();
}
testcase TC_si_default() runs on test_CT {
f_init(0);
f_init_bts_and_check_sysinfo(0, expect_si := SystemInformationConfig_default);
+ f_shutdown_helper();
}
/* We're testing SI2quater with lists of EARFCNs. Instead of just incrementing EARFCNs, also pick some from the edges of
@@ -2239,46 +2245,57 @@ private function f_tc_si2quater_n_earfcns(integer n) runs on test_CT
testcase TC_si2quater_2_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(2);
+ f_shutdown_helper();
}
testcase TC_si2quater_3_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(3);
+ f_shutdown_helper();
}
testcase TC_si2quater_4_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(4);
+ f_shutdown_helper();
}
testcase TC_si2quater_5_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(5);
+ f_shutdown_helper();
}
testcase TC_si2quater_6_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(6);
+ f_shutdown_helper();
}
testcase TC_si2quater_12_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(12);
+ f_shutdown_helper();
}
testcase TC_si2quater_23_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(23);
+ f_shutdown_helper();
}
testcase TC_si2quater_32_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(32);
+ f_shutdown_helper();
}
testcase TC_si2quater_33_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(33);
+ f_shutdown_helper();
}
testcase TC_si2quater_42_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(42);
+ f_shutdown_helper();
}
testcase TC_si2quater_48_earfcns() runs on test_CT {
f_tc_si2quater_n_earfcns(48);
+ f_shutdown_helper();
}
/* verify the VTY error response when adding too many EARFCNs, and showing that osmo-bsc still sends 16 SI2quater with
@@ -2312,6 +2329,7 @@ testcase TC_si2quater_49_earfcns() runs on test_CT {
for (var integer i := 1; i < 48; i := i + 1) {
f_bts_0_cfg(BSCVTY, {"si2quater neighbor-list del earfcn " & int2str(f_test_si2quater_earfcn_by_idx(i))});
}
+ f_shutdown_helper();
}
private function f_acc09_count_allowed(AccessControlClass acc) return uint8_t
@@ -2398,6 +2416,7 @@ testcase TC_si_acc_rotate() runs on test_CT {
f_bts_0_cfg(BSCVTY, {"access-control-class-rotate 10",
"rach access-control-class 5 allowed"});
+ f_shutdown_helper();
}
/* verify ACC startup ramp+rotate feature */
@@ -2458,6 +2477,7 @@ testcase TC_si_acc_ramp_rotate() runs on test_CT {
f_bts_0_cfg(BSCVTY, {"access-control-class-rotate 10",
"rach access-control-class 4 allowed",
"no access-control-class-ramping"});
+ f_shutdown_helper();
}
testcase TC_ctrl_msc_connection_status() runs on test_CT {
@@ -2467,7 +2487,7 @@ testcase TC_ctrl_msc_connection_status() runs on test_CT {
/* See https://osmocom.org/issues/2729 */
f_ctrl_get_exp(IPA_CTRL, "msc_connection_status", "connected");
- setverdict(pass);
+ f_shutdown_helper();
}
testcase TC_ctrl_msc0_connection_status() runs on test_CT {
@@ -2476,7 +2496,7 @@ testcase TC_ctrl_msc0_connection_status() runs on test_CT {
f_init(1);
f_ctrl_get_exp(IPA_CTRL, "msc.0.connection_status", "connected");
- setverdict(pass);
+ f_shutdown_helper();
}
testcase TC_ctrl() runs on test_CT {
@@ -2508,7 +2528,7 @@ testcase TC_ctrl() runs on test_CT {
f_ctrl_get_exp_ratectr_abs(IPA_CTRL, "bsc", 0, "paging:attempted", 0);
- setverdict(pass);
+ f_shutdown_helper();
}
/* Verify that Upon receival of SET "location", BSC forwards a TRAP
@@ -2534,7 +2554,7 @@ testcase TC_ctrl_location() runs on test_CT {
/* should match the one from config */
f_ctrl_set(SCCPLITE_IPA_CTRL, "rf_locked", "0");
- setverdict(pass);
+ f_shutdown_helper();
}
@@ -2935,7 +2955,7 @@ testcase TC_paging_resp_unsol() runs on test_CT {
}
}
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test RSL link drop causes counter increment */
@@ -2950,7 +2970,7 @@ testcase TC_rsl_drop_counter() runs on test_CT {
f_ctrl_get_exp_ratectr_abs(IPA_CTRL, "bts", 0, "rsl_fail", rsl_fail+1);
- setverdict(pass);
+ f_shutdown_helper();
}
/* TODO: Test OML link drop causes counter increment */
@@ -2996,6 +3016,7 @@ testcase TC_rsl_unknown_unit_id() runs on test_CT {
} else {
setverdict(fail, "Timeout RSL waiting for connection to close");
}
+ f_shutdown_helper();
}
@@ -3006,6 +3027,7 @@ testcase TC_oml_unknown_unit_id() runs on test_CT {
} else {
setverdict(fail, "Timeout OML waiting for connection to close");
}
+ f_shutdown_helper();
}
@@ -3083,6 +3105,7 @@ testcase TC_ciph_mode_a5_0() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_ciph_mode_a5), pars);
vc_conn.done;
+ f_shutdown_helper();
}
testcase TC_ciph_mode_a5_1() runs on test_CT {
var MSC_ConnHdlr vc_conn;
@@ -3093,6 +3116,7 @@ testcase TC_ciph_mode_a5_1() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_ciph_mode_a5), pars);
vc_conn.done;
+ f_shutdown_helper();
}
testcase TC_ciph_mode_a5_3() runs on test_CT {
var MSC_ConnHdlr vc_conn;
@@ -3103,6 +3127,7 @@ testcase TC_ciph_mode_a5_3() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_ciph_mode_a5), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/* establish initial channel, enable ciphering followed by assignment to ciphered channel */
@@ -3122,6 +3147,7 @@ testcase TC_assignment_aoip_tla_v6() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_assignment_aoip_tla_v6), pars);
vc_conn.done;
+ f_shutdown_helper();
}
@@ -3144,6 +3170,7 @@ testcase TC_assignment_fr_a5_0() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5), pars);
vc_conn.done;
+ f_shutdown_helper();
}
testcase TC_assignment_fr_a5_1() runs on test_CT {
var MSC_ConnHdlr vc_conn;
@@ -3154,6 +3181,7 @@ testcase TC_assignment_fr_a5_1() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5), pars);
vc_conn.done;
+ f_shutdown_helper();
}
testcase TC_assignment_fr_a5_3() runs on test_CT {
var MSC_ConnHdlr vc_conn;
@@ -3164,6 +3192,7 @@ testcase TC_assignment_fr_a5_3() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/* Expect ASSIGNMENT FAIL if mandatory IE is missing */
@@ -3186,6 +3215,7 @@ testcase TC_assignment_fr_a5_1_codec_missing() runs on test_CT {
vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_1_codec_missing));
vc_conn.done;
+ f_shutdown_helper();
}
private function f_tc_assignment_fr_a5_4(charstring id) runs on MSC_ConnHdlr {
@@ -3209,6 +3239,7 @@ testcase TC_assignment_fr_a5_4() runs on test_CT {
vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_4));
vc_conn.done;
+ f_shutdown_helper();
}
@@ -3238,6 +3269,7 @@ testcase TC_assignment_sign() runs on test_CT {
vc_conn := f_start_handler(refers(f_tc_assignment_sign));
vc_conn.done;
+ f_shutdown_helper();
}
/***********************************************************************
@@ -3448,6 +3480,7 @@ testcase TC_assignment_codec_fr() runs on test_CT {
pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
vc_conn.done;
+ f_shutdown_helper();
}
testcase TC_assignment_codec_hr() runs on test_CT {
@@ -3460,6 +3493,7 @@ testcase TC_assignment_codec_hr() runs on test_CT {
pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecHR}));
vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
vc_conn.done;
+ f_shutdown_helper();
}
testcase TC_assignment_codec_efr() runs on test_CT {
@@ -3472,6 +3506,7 @@ testcase TC_assignment_codec_efr() runs on test_CT {
pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecEFR}));
vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/* Allow 5,90k only (current default config) */
@@ -3529,6 +3564,7 @@ testcase TC_assignment_codec_amr_f() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
vc_conn.done;
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_h() runs on test_CT {
@@ -3553,6 +3589,7 @@ testcase TC_assignment_codec_amr_h() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
vc_conn.done;
+ f_shutdown_helper();
}
function f_TC_assignment_codec_amr(boolean fr, octetstring mrconf, bitstring s8_s0, bitstring exp_s8_s0)
@@ -3616,56 +3653,67 @@ runs on test_CT {
* set. */
testcase TC_assignment_codec_amr_f_S1() runs on test_CT {
f_TC_assignment_codec_amr(true, '289520882208'O, '00000010'B, '00000010'B);
+ f_shutdown_helper();
}
/* Set S1, we expect an AMR multirate configuration IE with the lower three
* rates set. */
testcase TC_assignment_codec_amr_h_S1() runs on test_CT {
f_TC_assignment_codec_amr(false, '2815208820'O, '00000010'B, '00000010'B);
+ f_shutdown_helper();
}
/* Set S1 and two other rates, we expect an AMR MULTIRATE CONFIGURATION IE with
* all four rates (and only S1 set in the ASSIGNMENT COMPLETE) */
testcase TC_assignment_codec_amr_f_S124() runs on test_CT {
f_TC_assignment_codec_amr(true, '289520882208'O, '00010110'B, '00000010'B);
+ f_shutdown_helper();
}
/* Set S1 and two other rates, we expect an AMR MULTIRATE CONFIGURATION IE with
* all four rates (and only S1 set in the ASSIGNMENT COMPLETE) */
testcase TC_assignment_codec_amr_h_S124() runs on test_CT {
f_TC_assignment_codec_amr(false, '2815208820'O, '00010110'B, '00000010'B);
+ f_shutdown_helper();
}
/* The following block of tests selects more and more rates until all four
* possible rates are in the active set (full rate) */
testcase TC_assignment_codec_amr_f_S0() runs on test_CT {
f_TC_assignment_codec_amr(true, '2801'O, '00000001'B, '00000001'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_f_S02() runs on test_CT {
f_TC_assignment_codec_amr(true, '28052080'O, '00000101'B, '00000101'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_f_S024() runs on test_CT {
f_TC_assignment_codec_amr(true, '2815208820'O, '00010101'B, '00010101'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_f_S0247() runs on test_CT {
f_TC_assignment_codec_amr(true, '289520882208'O, '10010101'B, '10010101'B);
+ f_shutdown_helper();
}
/* The following block of tests selects more and more rates until all three
* possible rates are in the active set (half rate) */
testcase TC_assignment_codec_amr_h_S0() runs on test_CT {
f_TC_assignment_codec_amr(false, '2801'O, '00000001'B, '00000001'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_h_S02() runs on test_CT {
f_TC_assignment_codec_amr(false, '28052080'O, '00000101'B, '00000101'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_h_S024() runs on test_CT {
f_TC_assignment_codec_amr(false, '2815208820'O, '00010101'B, '00010101'B);
+ f_shutdown_helper();
}
/* The following block tests what happens when the MSC does offer rate
@@ -3678,6 +3726,7 @@ testcase TC_assignment_codec_amr_h_S0247() runs on test_CT {
/* Try to include 12,2k in into the active set even though the channel
* is half rate only. The BSC is expected to remove the 12,0k */
f_TC_assignment_codec_amr(false, '2815208820'O, '10010101'B, '00010101'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_f_S01234567() runs on test_CT {
@@ -3685,6 +3734,7 @@ testcase TC_assignment_codec_amr_f_S01234567() runs on test_CT {
* Also S1 is selected, this setting will be prefered and we should
* get 12.2k, 7,40k, 5,90k, and 4,75k in the active set. */
f_TC_assignment_codec_amr(true, '289520882208'O, '11111111'B, '00000010'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_f_S0234567() runs on test_CT {
@@ -3692,21 +3742,25 @@ testcase TC_assignment_codec_amr_f_S0234567() runs on test_CT {
* select the currently supported rates, which are also 12.2k, 7,40k,
* 5,90k, and 4,75k, into the active set. */
f_TC_assignment_codec_amr(true, '289520882208'O, '11111101'B, '10010101'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_f_zero() runs on test_CT {
/* Try to select no rates at all */
f_TC_assignment_codec_amr_fail(true, '00000000'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_f_unsupp() runs on test_CT {
/* Try to select only unsupported rates */
f_TC_assignment_codec_amr_fail(true, '01101000'B);
+ f_shutdown_helper();
}
testcase TC_assignment_codec_amr_h_S7() runs on test_CT {
/* Try to select 12,2k for half rate */
f_TC_assignment_codec_amr_fail(false, '10000000'B);
+ f_shutdown_helper();
}
private function f_disable_all_tch_f() runs on test_CT {
@@ -3841,7 +3895,7 @@ testcase TC_assignment_codec_fr_exhausted_req_hr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_xr_exhausted_req_hr));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a FR channel while all FR channels are exhausted, this is expected
@@ -3855,7 +3909,7 @@ testcase TC_assignment_codec_fr_exhausted_req_fr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_xr_exhausted_req_fr_fail));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a FR (prefered) or alternatively a HR channel while all FR channels
@@ -3869,7 +3923,7 @@ testcase TC_assignment_codec_fr_exhausted_req_fr_hr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_fr_exhausted_req_fr_hr));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a HR (prefered) or alternatively a FR channel while all FR channels
@@ -3883,7 +3937,7 @@ testcase TC_assignment_codec_fr_exhausted_req_hr_fr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_fr_exhausted_req_hr_fr));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a FR channel while all HR channels are exhausted, this is expected
@@ -3897,7 +3951,7 @@ testcase TC_assignment_codec_hr_exhausted_req_fr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_xr_exhausted_req_fr));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a HR channel while all HR channels are exhausted, this is expected
@@ -3911,7 +3965,7 @@ testcase TC_assignment_codec_hr_exhausted_req_hr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_xr_exhausted_req_hr_fail));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a HR (prefered) or alternatively a FR channel while all HR channels
@@ -3925,7 +3979,7 @@ testcase TC_assignment_codec_hr_exhausted_req_hr_fr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_hr_exhausted_req_hr_fr));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a FR (prefered) or alternatively a HR channel while all HR channels
@@ -3939,7 +3993,7 @@ testcase TC_assignment_codec_hr_exhausted_req_fr_hr() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec_hr_exhausted_req_fr_hr));
vc_conn.done;
f_enable_all_tch();
- setverdict(pass);
+ f_shutdown_helper();
}
/* Allow FR and HR, but prefer HR */
@@ -3977,7 +4031,7 @@ testcase TC_assignment_codec_req_hr_fr() runs on test_CT {
f_enable_all_tch();
vc_conn := f_start_handler(refers(f_TC_assignment_codec_req_hr_fr));
vc_conn.done;
- setverdict(pass);
+ f_shutdown_helper();
}
/* Request a FR (prefered) or alternatively a HR channel, it is expected that
@@ -3989,7 +4043,7 @@ testcase TC_assignment_codec_req_fr_hr() runs on test_CT {
f_enable_all_tch();
vc_conn := f_start_handler(refers(f_TC_assignment_codec_req_fr_hr));
vc_conn.done;
- setverdict(pass);
+ f_shutdown_helper();
}
testcase TC_assignment_osmux() runs on test_CT {
@@ -4015,6 +4069,7 @@ testcase TC_assignment_osmux() runs on test_CT {
vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/* test the procedure of the MSC requesting a Classmark Update:
@@ -4040,6 +4095,7 @@ testcase TC_classmark() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_classmark));
vc_conn.done;
+ f_shutdown_helper();
}
/* Send a CommonID from the simulated MSC and verify that the information is used to
@@ -4067,6 +4123,7 @@ testcase TC_common_id() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_common_id));
vc_conn.done;
+ f_shutdown_helper();
}
private function f_est_single_l3(template PDU_ML3_MS_NW l3) runs on MSC_ConnHdlr {
@@ -4105,6 +4162,7 @@ testcase TC_unsol_ass_fail() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_unsol_ass_fail));
vc_conn.done;
+ f_shutdown_helper();
}
@@ -4119,6 +4177,7 @@ testcase TC_unsol_ass_compl() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_unsol_ass_compl));
vc_conn.done;
+ f_shutdown_helper();
}
@@ -4133,6 +4192,7 @@ testcase TC_unsol_ho_fail() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_unsol_ho_fail));
vc_conn.done;
+ f_shutdown_helper();
}
@@ -4153,6 +4213,7 @@ testcase TC_err_82_short_msg() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_err_82_short_msg));
vc_conn.done;
+ f_shutdown_helper();
}
@@ -4174,6 +4235,7 @@ testcase TC_err_84_unknown_msg() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_err_84_unknown_msg));
vc_conn.done;
+ f_shutdown_helper();
}
/***********************************************************************
@@ -4286,6 +4348,7 @@ testcase TC_ho_int() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:attempted");
f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:completed");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
/* Expecting MGCP to DLCX the endpoint's two connections: towards BTS and towards MSC */
@@ -4395,6 +4458,7 @@ testcase TC_ho_out_of_this_bsc() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:completed");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
/* BSC asks for inter-BSC HO, but the MSC decides that it won't happen and
@@ -4452,6 +4516,7 @@ testcase TC_ho_out_fail_no_msc_response() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
/* BSC asks for inter-BSC HO, receives BSSMAP Handover Command, but MS reports
@@ -4546,6 +4611,7 @@ testcase TC_ho_out_fail_rr_ho_failure() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:failed");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
/* BSC asks for inter-BSC-out HO, receives BSSMAP Handover Command, but then no reply is received about HO outcome
@@ -4643,6 +4709,7 @@ testcase TC_ho_out_fail_no_result_after_ho_cmd() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_into_this_bsc(charstring id) runs on MSC_ConnHdlr {
@@ -4732,12 +4799,14 @@ function f_tc_ho_into_this_bsc_main(TestHdlrParams pars) runs on test_CT {
testcase TC_ho_into_this_bsc() runs on test_CT {
var TestHdlrParams pars := f_gen_test_hdlr_pars();
f_tc_ho_into_this_bsc_main(pars);
+ f_shutdown_helper();
}
testcase TC_ho_into_this_bsc_tla_v6() runs on test_CT {
var TestHdlrParams pars := f_gen_test_hdlr_pars();
pars.host_aoip_tla := "::6";
f_tc_ho_into_this_bsc_main(pars);
+ f_shutdown_helper();
}
private function f_tc_ho_in_fail_msc_clears(charstring id) runs on MSC_ConnHdlr {
@@ -4819,6 +4888,7 @@ testcase TC_ho_in_fail_msc_clears() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:stopped");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_in_fail_msc_clears_after_ho_detect(charstring id) runs on MSC_ConnHdlr {
@@ -4884,7 +4954,6 @@ private function f_tc_ho_in_fail_msc_clears_after_ho_detect(charstring id) runs
BSSAP.send(ts_BSSMAP_ClearCommand(cause));
f_expect_dlcx_conns();
- setverdict(pass);
f_sleep(1.0);
}
testcase TC_ho_in_fail_msc_clears_after_ho_detect() runs on test_CT {
@@ -4907,6 +4976,7 @@ testcase TC_ho_in_fail_msc_clears_after_ho_detect() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:stopped");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
/* The new BSS's lchan times out before the MSC decides that handover failed. */
@@ -4971,10 +5041,7 @@ private function f_tc_ho_in_fail_no_detect(charstring id) runs on MSC_ConnHdlr {
BSSAP.send(ts_BSSMAP_ClearCommand(cause));
f_expect_dlcx_conns();
- setverdict(pass);
f_sleep(1.0);
-
- setverdict(pass);
}
testcase TC_ho_in_fail_no_detect() runs on test_CT {
var MSC_ConnHdlr vc_conn;
@@ -4996,6 +5063,7 @@ testcase TC_ho_in_fail_no_detect() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:error");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
/* Same as f_tc_ho_in_fail_no_detect, but MSC fails to send a Clear Command */
@@ -5052,7 +5120,6 @@ private function f_tc_ho_in_fail_no_detect2(charstring id) runs on MSC_ConnHdlr
BSSAP.send(ts_BSSMAP_ClearCommand(cause));
};
f_expect_dlcx_conns();
- setverdict(pass);
f_sleep(1.0);
}
testcase TC_ho_in_fail_no_detect2() runs on test_CT {
@@ -5075,6 +5142,7 @@ testcase TC_ho_in_fail_no_detect2() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:error");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
type record of charstring Commands;
@@ -5291,6 +5359,7 @@ testcase TC_ho_neighbor_config_1() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:failed");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_neighbor_config_2(charstring id) runs on MSC_ConnHdlr {
@@ -5340,6 +5409,7 @@ testcase TC_ho_neighbor_config_2() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "handover:error");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_neighbor_config_3(charstring id) runs on MSC_ConnHdlr {
@@ -5388,6 +5458,7 @@ testcase TC_ho_neighbor_config_3() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:failed");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_neighbor_config_4(charstring id) runs on MSC_ConnHdlr {
@@ -5443,6 +5514,7 @@ testcase TC_ho_neighbor_config_4() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_neighbor_config_5(charstring id) runs on MSC_ConnHdlr {
@@ -5484,6 +5556,7 @@ testcase TC_ho_neighbor_config_5() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_neighbor_config_6(charstring id) runs on MSC_ConnHdlr {
@@ -5524,6 +5597,7 @@ testcase TC_ho_neighbor_config_6() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "handover:error");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
private function f_tc_ho_neighbor_config_7(charstring id) runs on MSC_ConnHdlr {
@@ -5577,6 +5651,7 @@ testcase TC_ho_neighbor_config_7() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
f_ctrs_bsc_and_bts_verify();
+ f_shutdown_helper();
}
/* OS#3041: Open and close N connections in a normal fashion, and expect no
@@ -5830,7 +5905,7 @@ testcase TC_dyn_pdch_ipa_act_deact() runs on test_CT {
/* clean up config */
f_ts_set_chcomb(0, 0, 6, "PDCH");
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test IPA PDCH activation NACK */
@@ -5867,7 +5942,7 @@ testcase TC_dyn_pdch_ipa_act_nack() runs on test_CT {
/* clean up config */
f_ts_set_chcomb(0, 0, 6, "PDCH");
- setverdict(pass);
+ f_shutdown_helper();
}
@@ -5936,7 +6011,7 @@ testcase TC_dyn_pdch_osmo_act_deact() runs on test_CT {
/* clean up config */
f_ts_set_chcomb(0, 0, 6, "PDCH");
- setverdict(pass);
+ f_shutdown_helper();
}
/* Test Osmocom dyn PDCH activation NACK behavior */
@@ -5965,7 +6040,7 @@ testcase TC_dyn_pdch_osmo_act_nack() runs on test_CT {
/* clean up config */
f_ts_set_chcomb(0, 0, 6, "PDCH");
- setverdict(pass);
+ f_shutdown_helper();
}
testcase TC_chopped_ipa_ping() runs on test_CT {
@@ -5973,6 +6048,7 @@ testcase TC_chopped_ipa_ping() runs on test_CT {
for (var integer i := 0; i < lengthof(bsc_ipa_ports); i := i + 1) {
IPA_Testing.f_run_TC_chopped_ipa_ping(mp_bsc_ip, bsc_ipa_ports[i], CONNECT_TO_SERVER);
}
+ f_shutdown_helper();
}
testcase TC_chopped_ipa_payload() runs on test_CT {
@@ -5981,6 +6057,7 @@ testcase TC_chopped_ipa_payload() runs on test_CT {
for (var integer i := 0; i < lengthof(bsc_ipa_ports); i := i + 1) {
IPA_Testing.f_run_TC_chopped_ipa_payload(mp_bsc_ip, bsc_ipa_ports[i], CONNECT_TO_SERVER);
}
+ f_shutdown_helper();
}
/* Verify the BSC sends the MS Power Parameters IE during CHAN ACT to make sure
@@ -5995,6 +6072,7 @@ testcase TC_assignment_verify_ms_power_params_ie() runs on test_CT {
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/***********************************************************************
@@ -6144,6 +6222,7 @@ testcase TC_mscpool_L3Compl_on_1_msc() runs on test_CT {
vc_conn.done;
f_ctrs_msc_expect(0, "mscpool:subscr:new", 4);
+ f_shutdown_helper();
}
/* Three Layer 3 Complete by IMSI are round-robin'ed across two connected MSCs */
@@ -6184,6 +6263,7 @@ testcase TC_mscpool_L3Complete_by_imsi_round_robin() runs on test_CT {
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(0, "mscpool:subscr:new");
+ f_shutdown_helper();
}
/* Three LU by TMSI are round-robin'ed across two connected MSCs, because they contain the NULL-NRI 0
@@ -6225,6 +6305,7 @@ testcase TC_mscpool_LU_by_tmsi_null_nri_0_round_robin() runs on test_CT {
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(0, "mscpool:subscr:reattach");
+ f_shutdown_helper();
}
/* Three LU by TMSI are round-robin'ed across two connected MSCs, because they contain the NULL-NRI 1
@@ -6267,6 +6348,7 @@ testcase TC_mscpool_LU_by_tmsi_null_nri_1_round_robin() runs on test_CT {
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(0, "mscpool:subscr:reattach");
+ f_shutdown_helper();
}
/* Three Layer 3 Complete by TMSI are round-robin'ed across two connected MSCs, because they contain an NRI not
@@ -6311,6 +6393,7 @@ testcase TC_mscpool_L3Complete_by_tmsi_unassigned_nri_round_robin() runs on test
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(0, "mscpool:subscr:new");
+ f_shutdown_helper();
}
/* Three Layer 3 Complete by TMSI are round-robin'ed across two connected MSCs, because they contain an NRI
@@ -6361,6 +6444,7 @@ testcase TC_mscpool_L3Complete_by_tmsi_valid_nri_msc_not_connected_round_robin()
f_ctrs_msc_add(2, "mscpool:subscr:attach_lost");
f_ctrs_msc_add(0, "mscpool:subscr:new");
f_ctrs_msc_verify();
+ f_shutdown_helper();
}
/* Three Layer 3 Complete by TMSI with valid NRI for the second MSC are all directed to the second MSC (configured in
@@ -6404,6 +6488,7 @@ testcase TC_mscpool_L3Complete_by_tmsi_valid_nri_1() runs on test_CT {
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(1, "mscpool:subscr:known");
+ f_shutdown_helper();
}
/* Layer 3 Complete by TMSI with valid NRI for the third MSC are directed to the third MSC (configured in osmo-bsc.cfg),
@@ -6447,6 +6532,7 @@ testcase TC_mscpool_L3Complete_by_tmsi_valid_nri_2() runs on test_CT {
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(1, "mscpool:subscr:new");
+ f_shutdown_helper();
}
/* LU with a TMSI but indicating a different PLMN in its previous LAI: ignore the NRI. */
@@ -6480,6 +6566,7 @@ testcase TC_mscpool_LU_by_tmsi_from_other_PLMN() runs on test_CT {
vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
vc_conn2.done;
f_ctrs_msc_expect(2, "mscpool:subscr:known");
+ f_shutdown_helper();
}
/* Make sure that whichever MSC paged a subscriber will also get the Paging Response. Page by IMSI, which would be
@@ -6509,7 +6596,6 @@ private function f_tc_mscpool_paging_imsi(charstring id) runs on MSC_ConnHdlr {
/* Despite the round robin pointing at the second MSC ('roundrobin next 1'), the earlier Paging for the same IMSI
* causes this Paging Response to go to the first MSC (bssap_idx := 0). */
f_perform_compl_l3(RSL, ts_PAG_RESP(valueof(ts_MI_IMSI_LV(imsi))) );
- setverdict(pass);
f_sleep(1.0);
}
testcase TC_mscpool_paging_and_response_imsi() runs on test_CT {
@@ -6530,6 +6616,7 @@ testcase TC_mscpool_paging_and_response_imsi() runs on test_CT {
vc_conn1 := f_start_handler(refers(f_tc_mscpool_paging_imsi), pars1);
vc_conn1.done;
f_ctrs_msc_expect(0, "mscpool:subscr:paged");
+ f_shutdown_helper();
}
/* Make sure that whichever MSC paged a subscriber will also get the Paging Response. Page by TMSI with an NRI value
@@ -6561,7 +6648,6 @@ private function f_tc_mscpool_paging_tmsi(charstring id) runs on MSC_ConnHdlr {
* third MSC ('roundrobin next 2'), the earlier Paging for the same TMSI causes this Paging Response to go to
* the first MSC (bssap_idx := 0). */
f_perform_compl_l3(RSL, ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(nri_v))) );
- setverdict(pass);
f_sleep(1.0);
}
testcase TC_mscpool_paging_and_response_tmsi() runs on test_CT {
@@ -6582,6 +6668,7 @@ testcase TC_mscpool_paging_and_response_tmsi() runs on test_CT {
vc_conn1 := f_start_handler(refers(f_tc_mscpool_paging_tmsi), pars1);
vc_conn1.done;
f_ctrs_msc_expect(0, "mscpool:subscr:paged");
+ f_shutdown_helper();
}
/* For round-robin, skip an MSC that has 'no allow-attach' set. */
@@ -6623,6 +6710,7 @@ testcase TC_mscpool_no_allow_attach_round_robin() runs on test_CT {
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(0, "mscpool:subscr:new");
+ f_shutdown_helper();
}
/* An MSC that has 'no allow-attach' set should still serve subscribers that are already attached according to their
@@ -6666,6 +6754,7 @@ testcase TC_mscpool_no_allow_attach_valid_nri() runs on test_CT {
vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
vc_conn3.done;
f_ctrs_msc_expect(2, "mscpool:subscr:new");
+ f_shutdown_helper();
}
/* Allow/Deny emergency calls globally via VTY */
@@ -6769,6 +6858,7 @@ testcase TC_assignment_emerg_setup_allow() runs on test_CT {
f_vty_allow_emerg_bts(true, 0);
vc_conn := f_start_handler(refers(f_TC_assignment_emerg_setup_allow), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/* EMERGENCY CALL situation #2, forbidden globally but allowed by BTS */
@@ -6783,6 +6873,7 @@ testcase TC_assignment_emerg_setup_deny_msc() runs on test_CT {
f_vty_allow_emerg_bts(true, 0);
vc_conn := f_start_handler(refers(f_TC_assignment_emerg_setup_deny), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/* EMERGENCY CALL situation #3, allowed globally but forbidden by BTS */
@@ -6802,6 +6893,7 @@ testcase TC_assignment_emerg_setup_deny_bts() runs on test_CT {
f_vty_allow_emerg_bts(false, 0);
vc_conn := f_start_handler(refers(f_TC_assignment_emerg_setup_deny), pars);
vc_conn.done;
+ f_shutdown_helper();
}
/* Test what happens when an emergency call arrives while all TCH channels are
@@ -6843,7 +6935,7 @@ testcase TC_emerg_premption() runs on test_CT {
f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 33));
rx_rsl := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));
- setverdict(pass);
+ f_shutdown_helper();
}
/* Hopping parameters per a timeslot */