summaryrefslogtreecommitdiffstats
path: root/bsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-11-07 00:37:29 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2018-11-14 16:17:39 +0000
commit211169d7948f81ca5507ceaeab6576e9d974c39e (patch)
treea80913fb662887ce31c68fe1d04febc7d0dc4d2e /bsc
parent4ed9edf5b906883d73de061442f139cd06dbb571 (diff)
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
Diffstat (limited to 'bsc')
-rw-r--r--bsc/BSC_Tests.ttcn8
1 files changed, 8 insertions, 0 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index a2a3378..fcccad0 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));