[PATCH] osmo-ttcn3-hacks[master]: bts: Add TC_sacch_info_mod and TC_sacch_filling

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/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Mon Mar 12 14:07:46 UTC 2018


Review at  https://gerrit.osmocom.org/7251

bts: Add TC_sacch_info_mod and TC_sacch_filling

Change-Id: I38b3e302eddb699b2dbdae06fc929dd59de7b2dc
---
M bts/BTS_Tests.ttcn
M library/RSL_Types.ttcn
2 files changed, 118 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/51/7251/1

diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index dcdf32b..5e0b3fb 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -636,8 +636,111 @@
 	f_shutdown();
 }
 
+private function f_sacch_present(template octetstring l3_exp) runs on ConnHdlr {
+	var L1ctlDlMessage dl;
+	/* check that the specified SI5 value is actually sent */
+	timer T_sacch := 3.0;
+	L1CTL.clear;
+	T_sacch.start;
+	alt {
+	[] 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(pass);
+		} else {
+			repeat;
+		}
+		}
+	[] L1CTL.receive { repeat; }
+	[] T_sacch.timeout {
+		setverdict(fail, "Timeout waiting for SACCH ", l3_exp);
+		self.stop;
+		}
+	}
+}
+
 /* Test for default SACCH FILL transmitted in DL SACCH (all channel types) */
+private function f_TC_sacch_filling(charstring id) runs on ConnHdlr {
+	/* Set a known default SACCH filling for SI5 */
+	var octetstring si5 := f_rnd_octstring(19);
+	RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_5, si5));
+
+	f_l1_tune(L1CTL);
+	RSL.clear;
+
+	/* activate the logical channel */
+	f_est_dchan();
+
+	/* check that the specified SI5 value is actually sent */
+	f_sacch_present(si5);
+
+	/* release the channel */
+	RSL.clear;
+	f_rsl_chan_deact();
+	f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
+}
+testcase TC_sacch_filling() 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_filling), pars);
+		vc_conn.done;
+	}
+	/* TODO: do the above in parallel, rather than sequentially? */
+	f_shutdown();
+}
+
 /* Test for lchan-specific SACCH INFO MODIFY (TS 48.058 4.12) */
+private function f_TC_sacch_info_mod(charstring id) runs on ConnHdlr {
+	/* Set a known default SACCH filling for SI5 */
+	var octetstring si5 := f_rnd_octstring(19);
+	var octetstring si5_diff := f_rnd_octstring(19);
+	RSL.send(ts_RSL_SACCH_FILL(RSL_SYSTEM_INFO_5, si5));
+
+	f_l1_tune(L1CTL);
+	RSL.clear;
+
+	log("Activating channel, expecting standard SI5");
+	/* activate the logical channel */
+	f_est_dchan();
+	/* check that the specified SI5 value is actually sent */
+	f_sacch_present(si5);
+
+	/* set channel-specific different SI5 */
+	log("Setting channel specific SACCH INFO, expecting it");
+	RSL.send(ts_RSL_SACCH_INF_MOD(g_chan_nr, RSL_SYSTEM_INFO_5, si5_diff))
+	/* check that the specified lchan-specific value is now used */
+	f_sacch_present(si5_diff);
+
+	/* deactivate the channel and re-activate it, this should result in default SI5  */
+	log("De-activating and re-activating channel, expecting standard SI5");
+	f_rsl_chan_deact();
+	f_rsl_chan_act(valueof(ts_RSL_ChanMode_SIGN));
+	/* Verify that the TRX-wide default SACCH filling is present again */
+	f_sacch_present(si5);
+
+	/* release the channel */
+	RSL.clear;
+	f_rsl_chan_deact();
+	f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
+}
+testcase TC_sacch_info_mod() 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_info_mod), pars);
+		vc_conn.done;
+	}
+	/* TODO: do the above in parallel, rather than sequentially? */
+	f_shutdown();
+}
+
 /* Test for SACCH transmission rules in the context of special CHAN ACT (HO) */
 
 
@@ -2427,6 +2530,8 @@
 	execute( TC_chan_deact_not_active() );
 	execute( TC_chan_act_wrong_nr() );
 	execute( TC_deact_sacch() );
+	execute( TC_sacch_filling() );
+	execute( TC_sacch_info_mod() );
 	execute( TC_rach_content() );
 	execute( TC_rach_count() );
 	execute( TC_rach_max_ta() );
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 3c2db73..f8b66c6 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -1140,6 +1140,19 @@
 		}
 	}
 
+	/* 8.6.20 BTS <- BSC */
+	template RSL_Message ts_RSL_SACCH_INF_MOD(RslChannelNr chan_nr, RSL_IE_SysinfoType si_type,
+						  octetstring l3_info) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
+		msg_type := RSL_MT_SACCH_INFO_MODIFY,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_SYSINFO_TYPE, RSL_IE_Body:{sysinfo_type := si_type}),
+			t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+		}
+	}
+
+
 	/* COMMON CHANNEL MANAGEMENT MESSAGES */
 
 	/* 8.5.1 BTS <- BSC */

-- 
To view, visit https://gerrit.osmocom.org/7251
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I38b3e302eddb699b2dbdae06fc929dd59de7b2dc
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list