Change in osmo-ttcn3-hacks[master]: bts: Add TC_sms_cb_cmd_cbch_sdcch{4, 8}_default_only

Harald Welte gerrit-no-reply at lists.osmocom.org
Mon May 20 13:16:17 UTC 2019


Harald Welte has uploaded this change for review. ( https://gerrit.osmocom.org/14102


Change subject: bts: Add TC_sms_cb_cmd_cbch_sdcch{4,8}_default_only
......................................................................

bts: Add TC_sms_cb_cmd_cbch_sdcch{4,8}_default_only

Add a most basic CBCH DEFAULT message test: Ensure *only* the
default message is sent if a default is set.

Related: OS#4011
Change-Id: Iab03fa88b759759a493516d43090c4df63f7b06f
---
M bts/BTS_Tests_SMSCB.ttcn
1 file changed, 101 insertions(+), 12 deletions(-)



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

diff --git a/bts/BTS_Tests_SMSCB.ttcn b/bts/BTS_Tests_SMSCB.ttcn
index c27eae6..b33159b 100644
--- a/bts/BTS_Tests_SMSCB.ttcn
+++ b/bts/BTS_Tests_SMSCB.ttcn
@@ -85,10 +85,15 @@
 	mtc.stop;
 }
 
+private function f_cbch_fn2tb(uint32_t fn) return integer
+{
+	return (fn/51) mod 8; /* TS 05.02 Section 6.5.4 */
+}
+
 /* Verify the CBCH TB scheduling rules of TS 05.02 Section 6.5.4 */
 private function f_cbch_fn_verify(uint32_t fn, CBCH_Block cb)
 {
-	var integer tb := (fn/51) mod 8; /* TS 05.02 Section 6.5.4 */
+	var integer tb := f_cbch_fn2tb(fn);
 	if (cb.block_type.seq_nr == 15 /* null */) {
 		/* always permitted */
 		return;
@@ -103,12 +108,8 @@
 	}
 }
 
-/* shared function doing the heavy lifting for most CBCH tests */
-private function f_TC_smscb(CbchTestPars pars) runs on test_CT {
-	var L1ctlDlMessage dl;
-	var boolean cmd_seen_once := false;
-	var integer i, j;
-	timer T := 5.0;
+private function f_smscb_setup(inout CbchTestPars pars) runs on test_CT {
+	var integer i;
 
 	f_cbch_compute_exp_blocks(pars);
 
@@ -140,6 +141,24 @@
 					valueof(ts_RSL_IE_CbCmdType(msg.rsl_cb_cmd, rsl_last_block));
 		RSL_CCHAN.send(ts_RSL_UD(ts_RSL_SMSCB_CMD(cmd_type, msg.payload)));
 	}
+}
+
+private function f_smscb_cleanup() runs on test_CT {
+	/* reset timeslot 0 channel combination to default */
+	f_vty_config2(BSCVTY, {"network", "bts 0", "trx 0", "timeslot 0"},
+				"phys_chan_config CCCH+SDCCH4");
+	f_vty_config2(BSCVTY, {"network", "bts 0", "trx 0", "timeslot 6"},
+				"phys_chan_config SDCCH8");
+}
+
+/* shared function doing the heavy lifting for most CBCH tests */
+private function f_TC_smscb(CbchTestPars pars) runs on test_CT {
+	var L1ctlDlMessage dl;
+	var integer i, j;
+	timer T := 5.0 * int2float(lengthof(pars.msgs));
+
+	f_smscb_setup(pars);
+
 	T.start;
 	/* Expect this to show up exactly once on the basic CBCH (four blocks) */
 	alt {
@@ -188,11 +207,55 @@
 		}
 	}
 
-	/* reset timeslot 0 channel combination to default */
-	f_vty_config2(BSCVTY, {"network", "bts 0", "trx 0", "timeslot 0"},
-				"phys_chan_config CCCH+SDCCH4");
-	f_vty_config2(BSCVTY, {"network", "bts 0", "trx 0", "timeslot 6"},
-				"phys_chan_config SDCCH8");
+	f_smscb_cleanup();
+}
+
+private function f_TC_smscb_default_only(CbchTestPars pars) runs on test_CT {
+	var L1ctlDlMessage dl;
+	timer T := 5.0;
+
+	f_smscb_setup(pars);
+
+	/* ensure whatever initial NULL messages have all been drained */
+	f_sleep(5.0);
+	L1CTL.clear;
+
+	T.start;
+	alt {
+	[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_CBCH(0))) -> value dl {
+		var integer tb := f_cbch_fn2tb(dl.dl_info.frame_nr);
+		log("CBCH: ", dl);
+		var CBCH_Block cb := dec_CBCH_Block(dl.payload.data_ind.payload);
+		/* detect the proper CBCH messages; check frame number */
+		f_cbch_fn_verify(dl.dl_info.frame_nr, cb);
+		if (tb >= 4) {
+			/* skip extended CBCH for now */
+			repeat;
+		}
+		if (not match(cb, tr_CBCH_Block)) {
+			setverdict(fail, "Illegal CBCH Block received: ", cb);
+		} else {
+			var uint4_t rx_seq_nr := cb.block_type.seq_nr;
+			var template CBCH_Block tr;
+			if (rx_seq_nr < lengthof(pars.msgs[0].blocks)) {
+				var CbchBlock b := pars.msgs[0].blocks[rx_seq_nr];
+				tr := tr_CBCH_Block(b.seq_nr, b.is_last, b.payload);
+			} else {
+				tr := tr_CBCH_Block(15, ?, ?);
+			}
+			if (match(cb, tr)) {
+				setverdict(pass); /* FIXME: check that all blocks are received? */
+				repeat;
+			} else {
+				setverdict(fail, "Unexpected CBCH block ", cb, ", expected ", tr);
+			}
+		}
+		}
+	[] L1CTL.receive { repeat; }
+	[] T.timeout {}
+	}
+
+	f_smscb_cleanup();
 }
 
 private const CbchTestMsgs msgs_1m_1b_norm := {
@@ -246,6 +309,13 @@
 	  omit }
 }
 
+private const CbchTestMsgs msgs_1m_3b_default := {
+	{ RSL_CB_CMD_DEFAULT, 2, '001000320f1141660c344dd3cba09a0c000000000000'O &
+				'000102030405060708090a0b0c0d0e0f101213141516'O &
+				'101112131415161718191a1b1c1d1e1f202223242526'O,
+	  omit }
+}
+
 /* transmit single-block SMSCB COMMAND */
 testcase TC_sms_cb_cmd_sdcch4_1block() runs on test_CT {
 	var CbchTestPars pars := {
@@ -342,6 +412,23 @@
 	f_TC_smscb(pars);
 }
 
+/* set a DEFAULT message; verify it gets transmitted all the time */
+testcase TC_sms_cb_cmd_sdcch4_default_only() runs on test_CT {
+	var CbchTestPars pars := {
+		use_sdcch4 := true,
+		msgs := msgs_1m_3b_default
+	};
+	f_TC_smscb_default_only(pars);
+}
+testcase TC_sms_cb_cmd_sdcch8_default_only() runs on test_CT {
+	var CbchTestPars pars := {
+		use_sdcch4 := true,
+		msgs := msgs_1m_3b_default
+	};
+	f_TC_smscb_default_only(pars);
+}
+
+
 /* SMSCB TODO:
    * multiple SMS BC CMD at the same time: Ensure all of them are sent exactly once
    * extended CBCH vs. normal CBCH
@@ -355,12 +442,14 @@
 	execute( TC_sms_cb_cmd_sdcch4_4block() );
 	execute( TC_sms_cb_cmd_sdcch4_multi() );
 	execute( TC_sms_cb_cmd_sdcch4_schedule() );
+	execute( TC_sms_cb_cmd_sdcch4_default_only() );
 	execute( TC_sms_cb_cmd_sdcch8_1block() );
 	execute( TC_sms_cb_cmd_sdcch8_2block() );
 	execute( TC_sms_cb_cmd_sdcch8_3block() );
 	execute( TC_sms_cb_cmd_sdcch8_4block() );
 	execute( TC_sms_cb_cmd_sdcch8_multi() );
 	execute( TC_sms_cb_cmd_sdcch8_schedule() );
+	execute( TC_sms_cb_cmd_sdcch8_default_only() );
 }
 
 

-- 
To view, visit https://gerrit.osmocom.org/14102
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iab03fa88b759759a493516d43090c4df63f7b06f
Gerrit-Change-Number: 14102
Gerrit-PatchSet: 1
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190520/aa9a882a/attachment.html>


More information about the gerrit-log mailing list