bsc: Introduce test TC_paging_resp_unsol
With this test we want to verify that channels are released if BSC fails
to complete an L3 request, for instance because no pending Paging
CMD is found for a received Paging Response.
Related: OS#3680
Change-Id: Iabe8a51aa13d2fcfec4500cf7aab47d60cc138ce
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 9b445f5..a155fef 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1466,6 +1466,30 @@
f_shutdown_helper();
}
+/* Verify how we handle unsolicited Paging Response, for instance because we
+ * receive a Paging Response after T3113 expired (and subscriber information was
+ * dropped). See OS#3680.
+ */
+testcase TC_paging_resp_unsol() runs on test_CT {
+
+ f_init(1);
+
+ var BSSAP_N_CONNECT_ind rx_c_ind;
+ var DchanTuple dt;
+ var PDU_ML3_MS_NW l3 := valueof(ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010008880018'H))));
+
+ /* Send CHAN RQD and wait for allocation; acknowledge it */
+ dt.rsl_chan_nr := f_chreq_act_ack();
+
+ /* Send unsolicited Paging response (no matching Paging CMD stored in BSC) */
+ f_ipa_tx(0, ts_RSL_EST_IND(dt.rsl_chan_nr, valueof(ts_RslLinkID_DCCH(0)), enc_PDU_ML3_MS_NW(l3)));
+
+ /* expect BSC to disable the channel */
+ f_expect_chan_rel(0, dt.rsl_chan_nr);
+ setverdict(pass);
+
+}
+
/* Test RSL link drop causes counter increment */
testcase TC_rsl_drop_counter() runs on test_CT {
var integer rsl_fail;
@@ -3407,6 +3431,7 @@
execute( TC_paging_imsi_a_reset() );
execute( TC_paging_imsi_load() );
execute( TC_paging_counter() );
+ execute( TC_paging_resp_unsol() );
execute( TC_rsl_drop_counter() );
execute( TC_rsl_unknown_unit_id() );