Change in osmo-ttcn3-hacks[master]: bsc: Call f_shutdown_helper() on all tests missing it

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Fri Sep 25 20:37:58 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20257 )

Change subject: bsc: Call f_shutdown_helper() on all tests missing it
......................................................................

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
---
M bsc/BSC_Tests.ttcn
1 file changed, 145 insertions(+), 53 deletions(-)

Approvals:
  laforge: Looks good to me, but someone else must approve
  fixeria: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 9e0fae3..7f670d2 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1148,7 +1148,7 @@
 
 	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 @@
 	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 @@
 	/* 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 @@
 	/* 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 @@
 
 	/* 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 @@
 
 	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 @@
 		}
 	[] IPA_RSL[0].receive { repeat; }
 	}
+	f_shutdown_helper();
 }
 
 /* Test channel deactivation due to silence from MS */
@@ -1360,6 +1361,7 @@
 		setverdict(fail, "Unexpected RSL message!");
 		}
 	}
+	f_shutdown_helper();
 }
 
 /***********************************************************************
@@ -1374,7 +1376,7 @@
 	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 @@
 		}
 	[] BSSAP.receive { repeat; }
 	}
+	f_shutdown_helper();
 }
 
 /* generate an assignment request for either AoIP or SCCPlite */
@@ -1492,6 +1495,7 @@
 	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 @@
 	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 @@
 	/* 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 @@
 	/* 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 @@
 	/* 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 @@
 	/* 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 @@
 	}
 
 	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 @@
 	}
 
 	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 @@
 	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 @@
 	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 @@
 	}
 
 	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 @@
 
 	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 @@
 	}
 
 	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 @@
 	[] T.timeout {}
 	}
 
-	setverdict(pass);
+	f_shutdown_helper();
 }
 
 /* Test behavior if RSL EST IND for invalid SAPI */
@@ -1965,7 +1970,7 @@
 	[] T.timeout {}
 	}
 
-	setverdict(pass);
+	f_shutdown_helper();
 }
 
 /* Test behavior if RSL EST IND for invalid SAPI */
@@ -1989,7 +1994,7 @@
 	[] T.timeout {}
 	}
 
-	setverdict(pass);
+	f_shutdown_helper();
 }
 
 /* Test behavior if RSL EST IND for invalid SACCH */
@@ -2013,7 +2018,7 @@
 	[] T.timeout {}
 	}
 
-	setverdict(pass);
+	f_shutdown_helper();
 }
 
 private function f_exp_sapi_n_reject(template (present) GsmSapi sapi := ?,
@@ -2070,7 +2075,7 @@
 	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 @@
 	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 @@
 	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 @@
 
 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 @@
 	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 @@
 
 	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 @@
 	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 @@
 
 	/* 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 @@
 	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 @@
 
 	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 @@
 	/* should match the one from  config */
 	f_ctrl_set(SCCPLITE_IPA_CTRL, "rf_locked", "0");
 
-	setverdict(pass);
+	f_shutdown_helper();
 }
 
 
@@ -2935,7 +2955,7 @@
 		}
 	}
 
-	setverdict(pass);
+	f_shutdown_helper();
 }
 
 /* Test RSL link drop causes counter increment */
@@ -2950,7 +2970,7 @@
 
 	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 @@
 	} else {
 		setverdict(fail, "Timeout RSL waiting for connection to close");
 	}
+	f_shutdown_helper();
 }
 
 
@@ -3006,6 +3027,7 @@
 	} else {
 		setverdict(fail, "Timeout OML waiting for connection to close");
 	}
+	f_shutdown_helper();
 }
 
 
@@ -3083,6 +3105,7 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 
 	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 @@
 
 	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_4));
 	vc_conn.done;
+	f_shutdown_helper();
 }
 
 
@@ -3238,6 +3269,7 @@
 
 	vc_conn := f_start_handler(refers(f_tc_assignment_sign));
 	vc_conn.done;
+	f_shutdown_helper();
 }
 
 /***********************************************************************
@@ -3448,6 +3480,7 @@
 	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 @@
 	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 @@
 	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 @@
 
 	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 @@
 
 	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 @@
  * 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 @@
 	/* 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 @@
 	* 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 @@
 	* 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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 		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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	/* 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 @@
 	/* clean up config */
 	f_ts_set_chcomb(0, 0, 6, "PDCH");
 
-	setverdict(pass);
+	f_shutdown_helper();
 }
 
 
@@ -5936,7 +6011,7 @@
 	/* 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 @@
 	/* 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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	/* 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 @@
 	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 @@
 	 * 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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 */

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20257
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I8c8a1061b546576b7a5c4b11f20dfc887aaab6e0
Gerrit-Change-Number: 20257
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200925/fdeb5811/attachment.htm>


More information about the gerrit-log mailing list