aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2022-04-21 18:48:08 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2022-04-22 17:38:02 +0200
commit09b9bad21eb1cde70ac2d30ed4c647b18e250fc4 (patch)
treeb2b563001912e0be1a83697d3d8d93c14c0bd390
parent251d0646e0199a0ac0b8e3ad952fb2a8adfb505b (diff)
bsc: Introduce test TC_paging_500req
-rw-r--r--bsc/BSC_Tests.ttcn61
1 files changed, 61 insertions, 0 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 3a40d8da..e17285eb 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -3583,6 +3583,66 @@ testcase TC_paging_resp_unsol() runs on test_CT {
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 {
+ 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 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;
+ }
+
+ 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));
+
+ 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,
+ ts_BSSMAP_Paging(imsis[i], valueof(ts_BSSMAP_CIL_noCell), omit, omit)));
+ }
+
+ T_rx.start;
+ T_load_ind.start;
+ alt {
+ [] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_PAGING_CMD(?), IPAC_PROTO_RSL_TRX0)) -> value rx_rsl_ud {
+ var hexstring imsi := rx_rsl_ud.rsl.ies[2].body.ms_identity.mobileIdentityV.oddEvenInd_identity.imsi.digits;
+ var hexstring imsi_suffix := substr(imsi, lengthof(imsi)-6, 6);
+ var charstring imsi_str := hex2str(imsi_suffix);
+ var integer imsi_idx := str2int(imsi_str);
+ if (rx_paging_done[imsi_idx] == false) {
+ rx_paging_done[imsi_idx] := true;
+ rx_paging_num := rx_paging_num + 1;
+ }
+ if (rx_paging_num < num_subscribers) {
+ repeat;
+ }
+ }
+ [] 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));
+ T_load_ind.start;
+ repeat;
+ }
+ [] T_rx.timeout {
+ setverdict(fail, "Timeout expecting paging requests, so far ", rx_paging_num);
+ mtc.stop;
+ }
+ }
+
+ f_shutdown_helper();
+}
+
/* Test RSL link drop causes counter increment */
testcase TC_rsl_drop_counter() runs on test_CT {
var integer rsl_fail;
@@ -11441,6 +11501,7 @@ control {
execute( TC_paging_imsi_load() );
execute( TC_paging_counter() );
execute( TC_paging_resp_unsol() );
+ execute( TC_paging_500req() );
execute( TC_rsl_drop_counter() );
execute( TC_rsl_unknown_unit_id() );