Harald Welte has submitted this change and it was merged. ( 
https://gerrit.osmocom.org/12820 )

Change subject: bsc: Test CSFB "Fast Return" in new TC_chan_rel_hard_clear_csfb
......................................................................

bsc: Test CSFB "Fast Return" in new TC_chan_rel_hard_clear_csfb

When a MSC releases a connection using the BSSMAP CLEAR CMD, it can
specify that this call was part of CSFB.

The BSC is then supposed to add a special IE to the RR RELEASE
message which will help the phone to switch back to LTE as soon
as possible.

This commit adds a new test case testing for exactly that behavior.

The test does *not* verify if the EARFCN information contained is
actually correct, only that the IE is present in the RR RELEASE.

Change-Id: I7501fb25578412c882ff92da5d388f3079bbce7f
Requires: osmo-bsc Ibfbb87e2e16b05032ad1cb91c11fad1b2f76d755
Related: OS#3777
---
M bsc/BSC_Tests.ttcn
M library/BSSMAP_Templates.ttcn
M library/L3_Templates.ttcn
3 files changed, 56 insertions(+), 2 deletions(-)

Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved



diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 555aac8..5d8f375 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -856,7 +856,8 @@
                           boolean expect_deact_sacch := true,
                           boolean expect_rr_chan_rel := true,
                           boolean expect_rll_rel_req := true,
-                          boolean handle_rll_rel := true
+                          boolean handle_rll_rel := true,
+                          boolean is_csfb := false
                           ) runs on test_CT {

        var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));
@@ -871,7 +872,11 @@
                got_deact_sacch := true;
                repeat;
        }
-       [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, 
tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE))) {
+       [is_csfb] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, 
tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE_CSFB))) {
+               got_rr_chan_rel := true;
+               repeat;
+       }
+       [not is_csfb] 
IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, 
tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE))) {
                got_rr_chan_rel := true;
                repeat;
        }
@@ -932,6 +937,29 @@
        setverdict(pass);
 }
 
+/* Test behavior of channel release after Clear Command with CSFB indicator 
from MSC */
+testcase TC_chan_rel_hard_clear_csfb() runs on test_CT {
+       var BSSAP_N_DATA_ind rx_di;
+       var DchanTuple dt;
+
+       f_init(1);
+
+       dt := f_est_dchan('23'O, 23, '00010203040506'O);
+
+       /* Instruct BSC to clear channel */
+       var BssmapCause cause := 0;
+       BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, 
ts_BSSMAP_ClearCommandCSFB(cause)));
+
+       /* expect Clear Complete from BSC on A */
+       BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, 
tr_BSSMAP_ClearComplete)) {
+               /* release the SCCP connection */
+               BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
+       }
+
+       f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false, 
is_csfb := true);
+       setverdict(pass);
+}
+
 /* Test behavior of channel release after hard RLSD from MSC */
 testcase TC_chan_rel_hard_rlsd() runs on test_CT {
        var DchanTuple dt;
@@ -3697,6 +3725,7 @@
        execute( TC_chan_rel_rll_rel_ind() );
        execute( TC_chan_rel_conn_fail() );
        execute( TC_chan_rel_hard_clear() );
+       execute( TC_chan_rel_hard_clear_csfb() );
        execute( TC_chan_rel_hard_rlsd() );
        execute( TC_chan_rel_hard_rlsd_ms_dead() );
        execute( TC_chan_rel_a_reset() );
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index ff151f0..a30b8e7 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -612,6 +612,18 @@
                }
        }
 }
+template (value) PDU_BSSAP ts_BSSMAP_ClearCommandCSFB(BssmapCause cause)
+modifies ts_BSSMAP_ClearCommand := {
+       pdu := {
+               bssmap := {
+                       clearCommand := {
+                               cSFB_Indication := {
+                                       elementIdentifier := '8F'O
+                               }
+                       }
+               }
+       }
+}

 template PDU_BSSAP tr_BSSMAP_ClearCommand modifies tr_BSSAP_BSSMAP := {
        pdu := {
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 0b714d3..6099303 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -692,6 +692,19 @@
        }
 }

+template PDU_ML3_NW_MS tr_RRM_RR_RELEASE_CSFB(template OCT1 cause := ?) 
modifies tr_RRM_RR_RELEASE := {
+       msgs := {
+               rrm := {
+                       channelRelease := {
+                               cellSelectionIndicator := {
+                                       elementIdentifier := '77'O,
+                                       lengthIndicator := ?,
+                                       cellSelectionIndicatorValue := ?
+                               }
+                       }
+               }
+       }
+}

 template PDU_ML3_MS_NW ts_ML3_MO := {
        discriminator := '0000'B,

-- 
To view, visit https://gerrit.osmocom.org/12820
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I7501fb25578412c882ff92da5d388f3079bbce7f
Gerrit-Change-Number: 12820
Gerrit-PatchSet: 2
Gerrit-Owner: Harald Welte <[email protected]>
Gerrit-Reviewer: Harald Welte <[email protected]>
Gerrit-Reviewer: Jenkins Builder (1000002)

Reply via email to