summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-08-31 14:41:39 +0200
committerdexter <pmaier@sysmocom.de>2018-09-12 15:59:28 +0000
commit82cb0b1e14b0a7e6611678cd26a76261fad51807 (patch)
tree2d4b34bfd768d16ab856da6b0a1e5a9349648533
parentd24973deb1b095a779bc8ee80319d4e2fb5f66dc (diff)
BTS_Tests: check paging channel fn (bs_ag_blks_res)
BTS_Tests.ttcn contains numorous tests that issue pagings via RSL and observe if these pagings are visible on the UM interface as well. However, it is not checked whether the frame number of the blocks on which those pagings are sent actually falls into the range that is specified for PCH. We should check this as well. (The PCH is part of the CCCH, which also contains the AGC. How many blocks of the CCCH are to be used by the PCH is set by the parameter bs_ag_blks_res.) - Check the FN of each paging message that arrives on L1CTL and make sure that those FN are part of the PCH. Change-Id: I839e75ece05166518bf7132acd3017434b3d3bc2 Related: OS#1575
-rw-r--r--bts/BTS_Tests.ttcn62
1 files changed, 59 insertions, 3 deletions
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 67f302f..bfa8988 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -1532,7 +1532,60 @@ function tmsi_is_dummy(TMSIP_TMSI_V tmsi) return boolean {
}
}
-altstep as_l1_count_paging(inout integer num_paging_rcv_msgs, inout integer num_paging_rcv_ids)
+type record allowedFn { integer frame_nr }
+template allowedFn bs_ag_blks_res_0 := { frame_nr := (6, 12, 16, 22, 26, 32, 36, 42, 46) }
+template allowedFn bs_ag_blks_res_1 := { frame_nr := (12, 16, 22, 26, 32, 36, 42, 46) }
+template allowedFn bs_ag_blks_res_2 := { frame_nr := (16, 22, 26, 32, 36, 42, 46) }
+template allowedFn bs_ag_blks_res_3 := { frame_nr := (22, 26, 32, 36, 42, 46) }
+template allowedFn bs_ag_blks_res_4 := { frame_nr := (26, 32, 36, 42, 46) }
+template allowedFn bs_ag_blks_res_5 := { frame_nr := (32, 36, 42, 46) }
+template allowedFn bs_ag_blks_res_6 := { frame_nr := (36, 42, 46) }
+template allowedFn bs_ag_blks_res_7 := { frame_nr := (42, 46) }
+function check_pch_fn(integer frame_nr, integer bs_ag_blks_res) runs on test_CT
+{
+ var integer frame_nr_51;
+ frame_nr_51 := frame_nr mod 51
+
+ var allowedFn fn_check;
+ fn_check.frame_nr := frame_nr_51;
+
+ if (bs_ag_blks_res < 0 or bs_ag_blks_res > 7) {
+ setverdict(fail, "bs_ag_blks_res out of valid range (0..7)");
+ mtc.stop;
+ return;
+ }
+
+ if (bs_ag_blks_res == 0 and match(fn_check, bs_ag_blks_res_0)) {
+ return;
+ }
+ if (bs_ag_blks_res == 1 and match(fn_check, bs_ag_blks_res_1)) {
+ return;
+ }
+ if (bs_ag_blks_res == 2 and match(fn_check, bs_ag_blks_res_2)) {
+ return;
+ }
+ if (bs_ag_blks_res == 3 and match(fn_check, bs_ag_blks_res_3)) {
+ return;
+ }
+ if (bs_ag_blks_res == 4 and match(fn_check, bs_ag_blks_res_4)) {
+ return;
+ }
+ if (bs_ag_blks_res == 5 and match(fn_check, bs_ag_blks_res_5)) {
+ return;
+ }
+ if (bs_ag_blks_res == 6 and match(fn_check, bs_ag_blks_res_6)) {
+ return;
+ }
+ if (bs_ag_blks_res == 7 and match(fn_check, bs_ag_blks_res_7)) {
+ return;
+ }
+
+ setverdict(fail, "received paging on AGCH");
+ mtc.stop;
+ return;
+}
+
+altstep as_l1_count_paging(inout integer num_paging_rcv_msgs, inout integer num_paging_rcv_ids, PagingTestCfg cfg)
runs on test_CT {
var L1ctlDlMessage dl;
[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_PCH_AGCH(0), ?, c_DummyUI)) {
@@ -1542,6 +1595,9 @@ runs on test_CT {
var octetstring without_plen :=
substr(dl.payload.data_ind.payload, 1, lengthof(dl.payload.data_ind.payload)-1);
var PDU_ML3_NW_MS rr := dec_PDU_ML3_NW_MS(without_plen);
+
+ check_pch_fn(dl.dl_info.frame_nr, cfg.bs_ag_blks_res);
+
if (match(rr, tr_PAGING_REQ1)) {
num_paging_rcv_msgs := num_paging_rcv_msgs + 1;
num_paging_rcv_ids := num_paging_rcv_ids + 1;
@@ -1659,7 +1715,7 @@ private function f_TC_paging(PagingTestCfg cfg) runs on test_CT return PagingTes
repeat;
}
/* check if paging requests arrive on Um side */
- [] as_l1_count_paging(st.num_paging_rcv_msgs, st.num_paging_rcv_ids);
+ [] as_l1_count_paging(st.num_paging_rcv_msgs, st.num_paging_rcv_ids, cfg);
[] L1CTL.receive { repeat; }
[] T_itv.timeout { }
[] as_rsl_res_ind();
@@ -1670,7 +1726,7 @@ private function f_TC_paging(PagingTestCfg cfg) runs on test_CT return PagingTes
timer T_wait := 18.0;
T_wait.start;
alt {
- [] as_l1_count_paging(st.num_paging_rcv_msgs, st.num_paging_rcv_ids);
+ [] as_l1_count_paging(st.num_paging_rcv_msgs, st.num_paging_rcv_ids, cfg);
[] L1CTL.receive { repeat; }
/* 65535 == empty paging queue, we can terminate*/
[] RSL_CCHAN.receive(tr_RSL_UD(tr_RSL_PAGING_LOAD_IND(65535))) { }