Change in osmo-ttcn3-hacks[master]: bts: Fix race condition in f_dyn_ipa_pdch_(de)act

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

Pau Espin Pedrol gerrit-no-reply at lists.osmocom.org
Mon Feb 18 21:06:41 UTC 2019


Pau Espin Pedrol has uploaded this change for review. ( https://gerrit.osmocom.org/12949


Change subject: bts: Fix race condition in f_dyn_ipa_pdch_(de)act
......................................................................

bts: Fix race condition in f_dyn_ipa_pdch_(de)act

Test BTS_Tests.TC_dyn_osmo_pdch_act_deact was sporadically failing due
to receiving IND_INFO on the PCU port with pdch_mask related TS bit set
to 0 after sending a PDCH ACT. That happened due to a race condition
because PCU send IND_INFO periodically. As a result, it can happen that
BTS sends an IND_INFO after PCU.clear was called and before the PDCH ACT
is handled.

Change-Id: If11ef05d97aa5f6caaa731f3817c1fecfc3edf7c
---
M bts/BTS_Tests.ttcn
1 file changed, 18 insertions(+), 2 deletions(-)



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

diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index f7caac2..230d3b6 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -3182,13 +3182,21 @@
 	PCU.clear;
 	RSL.send(ts_RSL_IPA_PDCH_ACT(g_chan_nr));
 	/* expect INFO_IND on PCU interface listing TS as PDCH */
+	timer T_wait := 2.0;
+	T_wait.start;
 	alt {
 	[] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {
 		if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) {
-			Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT");
+			log("PCUIF_INFO_IND PDCH_MASK not yet '1' after PDCH ACT on TS", g_chan_nr.tn,
+			    " mask:", sd.data.u.info_ind.trx[trx_nr].pdch_mask);
+			repeat;
 		}
 		}
 	[] PCU.receive { repeat; }
+	[] T_wait.timeout {
+	        Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+			log2str("Timeout waiting for PCUIF_INFO_IND PDCH_MASK to be '1' on TS", g_chan_nr.tn));
+	        }
 	}
 	/* try to activate this PDCH from the PCU point of view */
 	PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_ACT_REQ(bts_nr, trx_nr, g_chan_nr.tn)));
@@ -3204,13 +3212,21 @@
 	RSL.send(ts_RSL_IPA_PDCH_DEACT(g_chan_nr));
 	PCU.clear;
 	/* expect BTS to ask PCU to deactivate the channel */
+	timer T_wait := 2.0;
+	T_wait.start;
 	alt {
 	[] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {
 		if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) {
-			Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT");
+			log("PCUIF_INFO_IND PDCH_MASK not yet '0' after PDCH DEACT on TS", g_chan_nr.tn,
+			    " mask:", sd.data.u.info_ind.trx[trx_nr].pdch_mask);
+			repeat;
 		}
 		}
 	[] PCU.receive { repeat; }
+	[] T_wait.timeout {
+	        Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+			log2str("Timeout waiting for PCUIF_INFO_IND PDCH_MASK to be '0' on TS", g_chan_nr.tn));
+	        }
 	}
 	/* Emulate PCU asking BTS to deactivate PDCH */
 	PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_DEACT_REQ(bts_nr, trx_nr, g_chan_nr.tn)));

-- 
To view, visit https://gerrit.osmocom.org/12949
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: If11ef05d97aa5f6caaa731f3817c1fecfc3edf7c
Gerrit-Change-Number: 12949
Gerrit-PatchSet: 1
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190218/c0e3dea5/attachment.htm>


More information about the gerrit-log mailing list