<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19930">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  neels: Looks good to me, approved
  fixeria: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Fix race condition waiting for RESET-ACK<br><br>This scenario appeared in jenkins runs of BSC_Tests making<br>TC_ctrl_msc_connection_status fail (the first test in the suite). I<br>could however not reproduce it on my local docker setup because it<br>really seems like a timing race condition.<br><br>The scenario is:<br>TTCN3 -> BSC: RESET<br>TTCN3 <- BSC: RESET<br>TTCN3 -> BSC: RESET-ACK<br><br>In there, TTCN3's f_legacy_bssap_reset() expected a RESET-ACK to be<br>received, but it may well be that the other end never saw the RESET and<br>hence it will never sent the RESET-ACK, since it indicated it became<br>available afterwards. In that case (RESET received), let's not fail if a<br>RESET-ACK is never received, since the connection is actually in the<br>desired state and this scenario can happen and it's all fine.<br><br>Change-Id: Ic92e0fb7033e5134b66e485a11371394adaba78a<br>---<br>M bsc/BSC_Tests.ttcn<br>1 file changed, 12 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index d32f202..4c45028 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -744,6 +744,7 @@</span><br><span> </span><br><span> private function f_legacy_bssap_reset(integer bssap_idx := 0) runs on test_CT {</span><br><span>     var BSSAP_N_UNITDATA_ind ud_ind;</span><br><span style="color: hsl(120, 100%, 40%);">+      var boolean reset_received := false;</span><br><span>         timer T := 5.0;</span><br><span>      BSSAP.send(ts_BSSAP_UNITDATA_req(g_bssap[bssap_idx].sccp_addr_peer, g_bssap[bssap_idx].sccp_addr_own,</span><br><span>                                         ts_BSSMAP_Reset(0, g_osmux_enabled)));</span><br><span>@@ -757,10 +758,20 @@</span><br><span>              log("Respoding to inbound RESET with RESET-ACK");</span><br><span>          BSSAP.send(ts_BSSAP_UNITDATA_req(ud_ind.callingAddress, ud_ind.calledAddress,</span><br><span>                           ts_BSSMAP_ResetAck(g_osmux_enabled)));</span><br><span style="color: hsl(120, 100%, 40%);">+             reset_received := true;</span><br><span>              repeat;</span><br><span>              }</span><br><span>    [] BSSAP.receive { repeat; }</span><br><span style="color: hsl(0, 100%, 40%);">-    [] T.timeout { setverdict(fail, "Waiting for RESET-ACK after sending RESET"); }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                        log("Timeout waiting for RESET-ACK after sending RESET");</span><br><span style="color: hsl(120, 100%, 40%);">+                   /* If we received a RESET after ours was sent, it</span><br><span style="color: hsl(120, 100%, 40%);">+                        may be a race condition where the other peer beacame</span><br><span style="color: hsl(120, 100%, 40%);">+                          available after we sent it, but we are in a desired</span><br><span style="color: hsl(120, 100%, 40%);">+                           state anyway, so go forward. */</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (not reset_received) {</span><br><span style="color: hsl(120, 100%, 40%);">+                             setverdict(fail);</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19930">change 19930</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19930"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ic92e0fb7033e5134b66e485a11371394adaba78a </div>
<div style="display:none"> Gerrit-Change-Number: 19930 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>