bsc: Introduce test TC_paging_450req_no_paging_load_ind
Change-Id: I787cba895f1cb6c5bfef95259bcf69b4291a9237
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 26d47b6..f514c43 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -3582,28 +3582,29 @@
f_shutdown_helper();
}
-/* Verify BSC can schedule 500 paging requests under one minute if BTS buffer is good enough */
-testcase TC_paging_500req() runs on test_CT {
+/* Verify BSC can schedule N paging requests under one minute if BTS buffer is good enough */
+function f_TC_paging_Nreq(integer num_subscribers, boolean send_pag_load_ind) runs on test_CT {
var ASP_RSL_Unitdata rx_rsl_ud;
- const integer num_subscribers := 500;
- var hexstring imsis[num_subscribers];
- var boolean rx_paging_done[num_subscribers];
+ var Hexstrings imsis := {};
+ var Booleans rx_paging_done := {};
var integer rx_paging_num := 0;
var integer i;
timer T_rx := 60.0;
timer T_load_ind := 1.0;
for (i := 0; i < num_subscribers; i := i + 1) {
- imsis[i] := f_gen_imsi(i);
- rx_paging_done[i] := false;
+ imsis := imsis & {f_gen_imsi(i)};
+ rx_paging_done := rx_paging_done & { false };
}
f_init(1, guard_timeout := 100.0);
/* Clear the queue, it might still contain stuff like BCCH FILLING */
IPA_RSL[0].clear;
- /* Tell there's plenty of space at the BTS (UINT16_MAX): */
- f_ipa_tx(0, ts_RSL_PAGING_LOAD_IND(65535));
+ if (send_pag_load_ind) {
+ /* Tell there's plenty of space at the BTS (UINT16_MAX): */
+ f_ipa_tx(0, ts_RSL_PAGING_LOAD_IND(65535));
+ }
for (i := 0; i < num_subscribers; i := i + 1) {
BSSAP.send(ts_BSSAP_UNITDATA_req(g_bssap[0].sccp_addr_peer, g_bssap[0].sccp_addr_own,
@@ -3622,7 +3623,7 @@
rx_paging_done[imsi_idx] := true;
rx_paging_num := rx_paging_num + 1;
} else {
- setverdict(fail, "Retrans happened before Rx initial trans for all reqs. ", rx_paging_num);
+ setverdict(fail, "Retrans of ", imsi_str, " happened before Rx initial trans for all reqs. rx_paging_num=", rx_paging_num);
mtc.stop;
}
if (rx_paging_num < num_subscribers) {
@@ -3631,8 +3632,10 @@
}
[] IPA_RSL[0].receive { repeat; }
[] T_load_ind.timeout {
- log("Tx CCH Load Ind, received paging requests so far: ", rx_paging_num);
- f_ipa_tx(0, ts_RSL_PAGING_LOAD_IND(40));
+ log("[CCH Load Ind timer] received paging requests so far: ", rx_paging_num);
+ if (send_pag_load_ind) {
+ f_ipa_tx(0, ts_RSL_PAGING_LOAD_IND(40));
+ }
T_load_ind.start;
repeat;
}
@@ -3644,6 +3647,17 @@
f_shutdown_helper();
}
+/* Verify BSC can schedule 500 paging requests under one minute if BTS buffer is good enough */
+testcase TC_paging_500req() runs on test_CT {
+ f_TC_paging_Nreq(500, true);
+}
+/* Same as TC_paging_500req, but without sending CCCH Load Indication, which
+ * means BTS is always under CCH Load Threshold, aka capable of sending tons of requests.
+ * Since No CCCH Load Ind, BSC uses a conservative estimation of BTS load, which
+ * for current config yields ~8req/sec, so 480req/min maximum. */
+testcase TC_paging_450req_no_paging_load_ind() runs on test_CT {
+ f_TC_paging_Nreq(450, false);
+}
/* Test RSL link drop causes counter increment */
testcase TC_rsl_drop_counter() runs on test_CT {
@@ -11531,6 +11545,7 @@
execute( TC_paging_counter() );
execute( TC_paging_resp_unsol() );
execute( TC_paging_500req() );
+ execute( TC_paging_450req_no_paging_load_ind() );
execute( TC_rsl_drop_counter() );
execute( TC_rsl_unknown_unit_id() );