bts: Add TC_sacch_multi to test for scheduling of multiple SI on SACCH
Change-Id: I2b9a68a0dc004c2ebc8a39f0c7b7aad690675a2d
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 15d5f6d..bc295c7 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -742,7 +742,51 @@
f_shutdown();
}
-/* Test for SACCH transmission rules in the context of special CHAN ACT (HO) */
+/* Test SACCH scheduling of multiple different SI message types */
+private function f_TC_sacch_multi(charstring id) runs on ConnHdlr {
+ var octetstring si5 := f_rnd_octstring(19);
+ var octetstring si5bis := f_rnd_octstring(19);
+ var octetstring si5ter := f_rnd_octstring(19);
+ var octetstring si6 := f_rnd_octstring(19);
+
+ RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_5, si5));
+ RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_5bis, si5bis));
+ RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_5ter, si5ter));
+ RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_6, si6));
+
+ f_l1_tune(L1CTL);
+ RSL.clear;
+
+ /* activate the logical channel */
+ f_est_dchan();
+ L1CTL.clear;
+
+ /* check that SACCH actually are received as expected */
+ f_sacch_present(si5);
+ f_sacch_present(si5bis);
+ f_sacch_present(si5ter);
+ f_sacch_present(si6);
+
+ /* release the channel */
+ f_rsl_chan_deact();
+ f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
+}
+testcase TC_sacch_multi() runs on test_CT {
+ var ConnHdlr vc_conn;
+ var ConnHdlrPars pars;
+ f_init();
+ for (var integer i := 0; i < sizeof(g_AllChannels); i := i+1) {
+ pars := valueof(t_Pars(g_AllChannels[i], ts_RSL_ChanMode_SIGN));
+ log(testcasename(), ": Starting for ", g_AllChannels[i]);
+ vc_conn := f_start_handler(refers(f_TC_sacch_multi), pars);
+ vc_conn.done;
+ }
+ /* TODO: do the above in parallel, rather than sequentially? */
+ f_shutdown();
+}
+
+/* TODO: Test for SACCH information present in RSL CHAN ACT (overrides FILLING) */
+/* TODO: Test for SACCH transmission rules in the context of special CHAN ACT (HO) */
/***********************************************************************
@@ -2533,6 +2577,7 @@
execute( TC_deact_sacch() );
execute( TC_sacch_filling() );
execute( TC_sacch_info_mod() );
+ execute( TC_sacch_multi() );
execute( TC_rach_content() );
execute( TC_rach_count() );
execute( TC_rach_max_ta() );