diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-04-21 18:48:08 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-04-22 17:38:02 +0200 |
commit | 09b9bad21eb1cde70ac2d30ed4c647b18e250fc4 (patch) | |
tree | b2b563001912e0be1a83697d3d8d93c14c0bd390 | |
parent | 251d0646e0199a0ac0b8e3ad952fb2a8adfb505b (diff) |
bsc: Introduce test TC_paging_500req
Related: SYS#5922
Change-Id: I4f7185939c20804deef92f476ed19248ba885f29
-rw-r--r-- | bsc/BSC_Tests.ttcn | 61 |
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() ); |