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() );
diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml
index ff50990..d558e72 100644
--- a/bsc/expected-results.xml
+++ b/bsc/expected-results.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<testsuite name='BSC_Tests' tests='94' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'>
+<testsuite name='BSC_Tests' tests='95' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'>
<testcase classname='BSC_Tests' name='TC_ctrl_msc_connection_status' time='MASKED'/>
<testcase classname='BSC_Tests' name='TC_ctrl_msc0_connection_status' time='MASKED'/>
<testcase classname='BSC_Tests' name='TC_ctrl' time='MASKED'/>
@@ -59,6 +59,7 @@
<testcase classname='BSC_Tests' name='TC_paging_imsi_a_reset' time='MASKED'/>
<testcase classname='BSC_Tests' name='TC_paging_imsi_load' time='MASKED'/>
<testcase classname='BSC_Tests' name='TC_paging_counter' time='MASKED'/>
+ <testcase classname='BSC_Tests' name='TC_paging_resp_unsol' time='MASKED'/>
<testcase classname='BSC_Tests' name='TC_rsl_drop_counter' time='MASKED'/>
<testcase classname='BSC_Tests' name='TC_rsl_unknown_unit_id' time='MASKED'/>
<testcase classname='BSC_Tests' name='TC_oml_unknown_unit_id' time='MASKED'/>