bts: Add f_shutdown() for clean shutdown; use it from tests
Change-Id: I225d2363c77dce969bda95ff27506bece586a34a
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 8d789bd..a345d75 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -280,6 +280,12 @@
}
}
+function f_shutdown() runs on test_CT {
+ /* shut down all "externally interfaced" components first to avoid unclean shutdown */
+ vc_IPA.stop;
+ vc_RSL.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);
@@ -442,6 +448,7 @@
f_init(testcasename());
vc_conn := f_start_handler(refers(f_TC_chan_act_stress), pars);
vc_conn.done;
+ f_shutdown();
}
/* Test if re-activation of an already active channel fails as expected */
@@ -462,9 +469,10 @@
testcase TC_chan_act_react() runs on test_CT {
var ConnHdlr vc_conn;
var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));
- f_init(testcasename());
+ f_init();
vc_conn := f_start_handler(refers(f_TC_chan_act_react), pars);
vc_conn.done;
+ f_shutdown();
}
/* Attempt to de-activate a channel that's not active */
@@ -483,9 +491,10 @@
}
testcase TC_chan_deact_not_active() runs on test_CT {
var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));
- f_init(testcasename());
+ f_init();
var ConnHdlr vc_conn := f_start_handler(refers(f_TC_chan_deact_not_active), pars);
vc_conn.done;
+ f_shutdown();
}
/* attempt to activate channel with wrong RSL Channel Nr IE; expect NACK */
@@ -514,7 +523,7 @@
var ConnHdlr vc_conn;
var ConnHdlrPars pars;
- f_init(testcasename());
+ f_init();
var WrongChanNrCases wrong := {
valueof(t_WCN(t_RslChanNr_RACH(0), "RACH is not a dedicated channel")),
@@ -537,6 +546,7 @@
vc_conn := f_start_handler(refers(f_TC_chan_act_wrong_nr), pars);
vc_conn.done;
}
+ f_shutdown();
}
/***********************************************************************
@@ -603,12 +613,14 @@
}
}
setverdict(pass);
+ f_shutdown();
}
/* Send 1000 RACH Requests (flood ~ 89/s) and count if count(Abis) == count(Um) */
testcase TC_rach_count() runs on test_CT {
- f_init(testcasename());
+ f_init();
f_init_l1ctl();
+ f_sleep(1.0);
f_l1_tune(L1CTL);
var GsmFrameNumber fn_last := 0;
@@ -638,6 +650,7 @@
} else {
setverdict(fail, "Received only ", rsl_chrqd, " out of 1000 RACH");
}
+ f_shutdown();
}
private function f_main_trxc_connect() runs on test_CT {
@@ -700,6 +713,7 @@
/* more than 63 bits is not legal / permitted */
f_rach_toffs(64*256, false);
f_rach_toffs(127*256, false);
+ f_shutdown();
}
/***********************************************************************
@@ -968,6 +982,7 @@
vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars);
vc_conn.done;
}
+ f_shutdown();
}
testcase TC_meas_res_sign_tchh() runs on test_CT {
var ConnHdlr vc_conn;
@@ -978,6 +993,7 @@
vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars);
vc_conn.done;
}
+ f_shutdown();
}
testcase TC_meas_res_sign_sdcch4() runs on test_CT {
var ConnHdlr vc_conn;
@@ -988,6 +1004,7 @@
vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars);
vc_conn.done;
}
+ f_shutdown();
}
testcase TC_meas_res_sign_sdcch8() runs on test_CT {
var ConnHdlr vc_conn;
@@ -998,6 +1015,7 @@
vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars);
vc_conn.done;
}
+ f_shutdown();
}
testcase TC_meas_res_sign_tchh_toa256() runs on test_CT {
var ConnHdlr vc_conn;
@@ -1010,6 +1028,7 @@
vc_conn := f_start_handler(refers(f_TC_meas_res_periodic), pars);
vc_conn.done;
}
+ f_shutdown();
}
@@ -1205,6 +1224,8 @@
[] as_rsl_res_ind();
}
+ f_shutdown();
+
log("num_paging_sent=", st.num_paging_sent, " rcvd_msgs=", st.num_paging_rcv_msgs,
" rcvd_ids=", st.num_paging_rcv_ids);
return st;
@@ -1317,6 +1338,7 @@
/* FIXME: check if imm.ass arrive on Um side */
/* FIXME: check for DELETE INDICATION */
f_sleep(100.0);
+ f_shutdown();
}
/***********************************************************************
@@ -1697,6 +1719,7 @@
f_init();
/* 2+3+4 are mandatory and set in f_init() */
f_TC_si_sched();
+ f_shutdown();
}
testcase TC_si_sched_1() runs on test_CT {
@@ -1704,6 +1727,7 @@
si_cfg.si1_present := true;
f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_1, '5506198fb38000000000000000000000000000e504002b'O);
f_TC_si_sched();
+ f_shutdown();
}
testcase TC_si_sched_2bis() runs on test_CT {
@@ -1711,6 +1735,7 @@
si_cfg.si2bis_present := true;
f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2bis, '550602bfe809b3ff00000000000000000000007900002b'O);
f_TC_si_sched();
+ f_shutdown();
}
testcase TC_si_sched_2ter() runs on test_CT {
@@ -1718,6 +1743,7 @@
si_cfg.si2ter_present := true;
f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2ter, '010603bf66b0aa0a00000002000000000000002b2b2b2b'O);
f_TC_si_sched();
+ f_shutdown();
}
testcase TC_si_sched_2ter_2bis() runs on test_CT {
@@ -1727,6 +1753,7 @@
si_cfg.si2ter_present := true;
f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2ter, '010603bf66b0aa0a00000002000000000000002b2b2b2b'O);
f_TC_si_sched();
+ f_shutdown();
}
testcase TC_si_sched_2quater() runs on test_CT {
@@ -1734,6 +1761,7 @@
si_cfg.si2quater_present := true;
f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2quater, '050607a8a0364aa698d72ff424feee0506d5e7fff02043'O);
f_TC_si_sched();
+ f_shutdown();
}
testcase TC_si_sched_13() runs on test_CT {
@@ -1741,6 +1769,7 @@
si_cfg.si13_present := true;
//f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme);
f_TC_si_sched();
+ f_shutdown();
}
testcase TC_si_sched_13_2bis_2ter_2quater() runs on test_CT {
@@ -1754,6 +1783,7 @@
si_cfg.si13_present := true;
//f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme);
f_TC_si_sched();
+ f_shutdown();
}
@@ -1763,6 +1793,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();
}
/***********************************************************************