Change in osmo-ttcn3-hacks[master]: BTS: reproduce a race condition described in OS#5245

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

fixeria gerrit-no-reply at lists.osmocom.org
Sun Oct 3 09:24:36 UTC 2021


fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25670 )


Change subject: BTS: reproduce a race condition described in OS#5245
......................................................................

BTS: reproduce a race condition described in OS#5245

Change-Id: I3b602ac9dbe0ab3e80eb30de573c9b48a79872d8
Depends: Idb1ef445bc14a6312f08a83ecacc3a938b0e1d70
Related: OS#5245
---
M bts/BTS_Tests.ttcn
1 file changed, 68 insertions(+), 0 deletions(-)



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

diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 44d9de4..6753eec 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -6281,6 +6281,72 @@
 	vc_conn.done;
 }
 
+/* Reproduce a race condition described in OS#5245 */
+private function f_rsl_chan_act_deact(charstring id) runs on ConnHdlr {
+	f_rsl_chan_act(g_pars.chan_mode);
+	f_sleep(1.0);
+	f_rsl_chan_deact();
+	setverdict(pass);
+}
+testcase TC_dyn_osmo_pdch_tchh_race_act() runs on test_CT {
+	var ConnHdlrPars pars[2];
+	var ConnHdlr vc_conn[2];
+	var TrxcMessage rsp;
+
+	f_init();
+
+	/* Configure an artificial delay of 200 ms for TRXC RSP messages */
+	rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,
+				 ts_TRXC_FAKE_TRXC_DELAY(200));
+
+	/* Activate all sub-channels of TCH/H on TS4 immediately in hope that the second
+	 * CHANnel ACTIVation message will be handled before the PHY responds to 'SETSLOT' */
+	for (var integer i := 0; i < sizeof(pars); i := i + 1) {
+		/* TS4 is an Osmocom style dynamic timeslot, we want it to be TCH/H */
+		pars[i] := valueof(t_Pars(t_RslChanNr_Lm(4, i), ts_RSL_ChanMode_SIGN));
+		vc_conn[i] := f_start_handler(refers(f_rsl_chan_act_deact),
+					      pars[i], l1ctl := false);
+	}
+
+	/* Wait for all components to finish */
+	for (var integer i := 0; i < sizeof(pars); i := i + 1) {
+		vc_conn[i].done;
+	}
+
+	/* Disable the artificial delay for TRXC RSP messages */
+	rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,
+				 ts_TRXC_FAKE_TRXC_DELAY(0));
+}
+testcase TC_dyn_osmo_pdch_sdcch8_race_act() runs on test_CT {
+	var ConnHdlrPars pars[8];
+	var ConnHdlr vc_conn[8];
+	var TrxcMessage rsp;
+
+	f_init();
+
+	/* Configure an artificial delay of 200 ms for TRXC RSP messages */
+	rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,
+				 ts_TRXC_FAKE_TRXC_DELAY(200));
+
+	/* Activate all sub-channels of SDCCH/8 on TS4 immediately in hope that subsequent
+	 * CHANnel ACTIVation messages will be handled before the PHY responds to 'SETSLOT' */
+	for (var integer i := 0; i < sizeof(pars); i := i + 1) {
+		/* TS4 is an Osmocom style dynamic timeslot, we want it to be SDCCH/8 */
+		pars[i] := valueof(t_Pars(t_RslChanNr_SDCCH8(4, i), ts_RSL_ChanMode_SIGN));
+		vc_conn[i] := f_start_handler(refers(f_rsl_chan_act_deact),
+					      pars[i], l1ctl := false);
+	}
+
+	/* Wait for all components to finish */
+	for (var integer i := 0; i < sizeof(pars); i := i + 1) {
+		vc_conn[i].done;
+	}
+
+	/* Disable the artificial delay for TRXC RSP messages */
+	rsp := f_TRXC_transceive(BTS_TRXC, g_bts_trxc_conn_id,
+				 ts_TRXC_FAKE_TRXC_DELAY(0));
+}
+
 /***********************************************************************
  * IPA Style Dynamic Timeslot Support
  ***********************************************************************/
@@ -7915,6 +7981,8 @@
 	execute( TC_dyn_osmo_pdch_tchf_act() );
 	execute( TC_dyn_osmo_pdch_tchh_act() );
 	execute( TC_dyn_osmo_pdch_sdcch8_act() );
+	execute( TC_dyn_osmo_pdch_tchh_race_act() );
+	execute( TC_dyn_osmo_pdch_sdcch8_race_act() );
 	execute( TC_dyn_ipa_pdch_tchf_act() );
 	execute( TC_dyn_ipa_pdch_tchf_act_pdch_act_nack() );
 

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25670
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: I3b602ac9dbe0ab3e80eb30de573c9b48a79872d8
Gerrit-Change-Number: 25670
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211003/346371a0/attachment.htm>


More information about the gerrit-log mailing list