bts: Add paging related tests
We're testing at 80% and 200% of PCH capacity, both for either IMSI-only
or TMSI-only paging requests. The way how we test ensures:
* the expected number of paged mobile identities end up on the Um interface
* we implicitly check the queuing limit of 200 paging records by
overflowing it in the 20-seconds-of-200%-load cases
* we implicitly check the batching of mobile identities into different
paging types
* we test the PCH load reporting over RSL
As a side note, in case you were ever wondering what's the expected
paging throughput / capacity, there are now helper functions to compute
it. For our combined CCCH/SDCCH4, it's about 16 IMSIs per second or
about 32 TMSIs per second.
Change-Id: I0b80b72bdab3d80d915296d70e1174623fbd8610
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 8fb44ad..5366b31 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -392,6 +392,15 @@
access_count := acc
}
+ template RSL_IE_RachLoad tr_RSL_IE_RachLoad(template uint16_t slot,
+ template uint16_t busy,
+ template uint16_t acc) := {
+ len := ?, /* overwritten */
+ slot_count := slot,
+ busy_count := busy,
+ access_count := acc
+ }
+
/* 9.3.19 */
type record RSL_IE_RequestRef {
OCT1 ra,
@@ -1149,6 +1158,17 @@
t_RSL_IE(RSL_IE_RACH_LOAD, RSL_IE_Body:{rach_load := ts_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)})
}
}
+ template RSL_Message tr_RSL_RACH_LOAD_IND(template uint16_t slot_ct := ?,
+ template uint16_t busy_ct := ?,
+ template uint16_t acc_ct) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
+ msg_type := RSL_MT_CCCH_LOAD_IND,
+ ies := {
+ tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
+ tr_RSL_IE(RSL_IE_Body:{rach_load := tr_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)})
+ }
+ }
+
template RSL_Message ts_RSL_PAGING_LOAD_IND(uint16_t buffer_space) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_CCCH_LOAD_IND,
@@ -1157,6 +1177,15 @@
t_RSL_IE(RSL_IE_PAGING_LOAD, RSL_IE_Body:{paging_load := buffer_space})
}
}
+ template RSL_Message tr_RSL_PAGING_LOAD_IND(template uint16_t buffer_space := ?) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
+ msg_type := RSL_MT_CCCH_LOAD_IND,
+ ies := {
+ tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}),
+ tr_RSL_IE(RSL_IE_Body:{paging_load := buffer_space})
+ }
+ }
+
/* 8.5.3 BTS -> BSC */
template RSL_Message ts_RSL_CHAN_RQD(OCT1 ra, GsmFrameNumber fn, uint8_t acc_del := 0) := {
@@ -1228,6 +1257,22 @@
}
}
+ template RSL_Message tr_RSL_RF_RES_IND := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false),
+ msg_type := RSL_MT_RF_RES_IND,
+ ies := *
+ }
+
+ /* 8.6.2 BTS <- BSC */
+ template RSL_Message ts_RSL_SACCH_FILL(RSL_IE_SysinfoType si_type, octetstring l3_info) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false),
+ msg_type := RSL_MT_SACCH_FILL,
+ ies := {
+ t_RSL_IE(RSL_IE_SYSINFO_TYPE, RSL_IE_Body:{sysinfo_type := si_type}),
+ t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+ }
+ }
+
/* 8.6.4 BTS -> BSC */
template RSL_Message ts_RSL_ERROR_REPORT(RSL_Cause cause) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),