From 211169d7948f81ca5507ceaeab6576e9d974c39e Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Wed, 7 Nov 2018 00:37:29 +0100 Subject: bsc: handle RR Release messages Receive RR Release messages if they happen during lchan release. Add RR Release to the alt{}s in both f_expect_chan_rel() to cover a whole bunch of test cases, and in f_tc_ho_out_fail_no_ho_detect() which has its own release expectations. Before this, RR Release messages would typically be lost in the RSL.clear recently removed by Ie1be30c3f109dda8c58c523df508211f8e20aad3. However, I still expect tests to pass after this, since the current osmo-bsc master has a bug that omits RR Release messages (since [1]). By applying this patch, both the buggy osmo-bsc (omitting RR Release) and the fix of that [2] should pass the BSC tests. So far by accepting whatever comes along, and not complaining if it doesn't come along. A subsequent patch will more precisely ensure that exactly the expected messages will be sent by osmo-bsc (Ibc64058f1e214bea585f4e8dcb66f3df8ead3845). [1] osmo-bsc I4fd582b41ba4599af704d670af83651d2450b1db commit 8b818a01b00ea3daad4ad58c162ac52b4f08a5cb "subscr conn: properly forget lchan before release" [2] osmo-bsc I666b3b4f45706d898d664d380bd0fd2b018be358 "fix: send RR Release (e.g. after BSSMAP Clear Cmd" Related: OS#3413 Change-Id: I4e6d266d091b140f56b28312cb3c5d67ffcc3a59 --- bsc/BSC_Tests.ttcn | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index a2a33783..fcccad08 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -820,12 +820,16 @@ function f_expect_chan_rel(integer bts_nr, RslChannelNr rsl_chan_nr, boolean handle_rll_rel := true) runs on test_CT { var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); + var octetstring l3_rr_chan_rel := '060D00'O; alt { /* ignore DEACTIVATE SACCH (if any) */ [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DEACT_SACCH(rsl_chan_nr))) { repeat; } + [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, l3_rr_chan_rel))) { + repeat; + } /* acknowledge RLL release (if any)*/ [handle_rll_rel] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_REL_REQ(rsl_chan_nr, ?))) { @@ -2441,7 +2445,11 @@ private function f_tc_ho_out_fail_no_ho_detect(charstring id) runs on MSC_ConnHd * RR should be released and Clear Request should go to the MSC. */ var MgcpCommand mgcp; + var octetstring l3_rr_chan_rel := '060D00'O; interleave { + [] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, l3_rr_chan_rel)) { + log("Got RR Release"); + } [] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) { log("Got RF Chan Rel"); RSL.send(ts_RSL_RF_CHAN_REL_ACK(g_chan_nr)); -- cgit v1.2.3