PCU_Tests: add 'f_multi_ms_' API for multi-MS test cases
Change-Id: Ie2cc717f9f50db16748fe4e4a0ad80d549981e61
Related: OS#4838
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 5e61d85..44314f3 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -238,6 +238,35 @@
BTS.receive(tr_RAW_PCU_EV(BTS_EV_SI13_NEGO));
}
+/* Register TLLI of each allocated GprsMS instance */
+private function f_multi_ms_bssgp_register()
+runs on RAW_PCU_Test_CT {
+ for (var integer i := 0; i < lengthof(g_ms); i := i + 1) {
+ f_bssgp_client_llgmm_assign(TLLI_UNUSED, g_ms[i].tlli);
+ }
+}
+
+/* Allocate [and activate] an Uplink TBF for each allocated GprsMS instance */
+private function f_multi_ms_establish_tbf(boolean do_activate := false)
+runs on RAW_PCU_Test_CT {
+ for (var integer i := 0; i < lengthof(g_ms); i := i + 1) {
+ /* Establish an Uplink TBF */
+ f_ms_establish_ul_tbf(g_ms[i]);
+
+ /* Send a random block, so this TBF becomes "active" */
+ if (do_activate) {
+ /* FIXME: use the new APU by Pau to get correct TRX/TS here */
+ var template TsTrxBtsNum nr := ts_TsTrxBtsNum(7, i mod 8);
+ var octetstring dummy := f_rnd_octstring(12);
+ var RlcmacDlBlock dl_block;
+ var uint32_t poll_fn;
+
+ f_ms_tx_ul_data_block(g_ms[i], dummy, with_tlli := true, nr := nr);
+ f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, poll_fn, nr := nr);
+ }
+ }
+}
+
testcase TC_pcuif_suspend() runs on RAW_PCU_Test_CT {
var octetstring ra_id := enc_RoutingAreaIdentification(mp_gb_cfg.bvc[0].cell_id.ra_id);
var GprsTlli tlli := 'FFFFFFFF'O;
@@ -2489,14 +2518,13 @@
/* Establish BSSGP connection to the PCU */
f_bssgp_establish();
- for (i := 0; i < num_ms; i := i + 1) {
- f_bssgp_client_llgmm_assign(TLLI_UNUSED, g_ms[i].tlli);
- }
+ f_multi_ms_bssgp_register();
- /* Establish an Uplink TBF for each MS. They should be allocated on
- different TRX in an uniform way. */
+ /* Establish an Uplink TBF for each GprsMS instance */
+ f_multi_ms_establish_tbf(do_activate := false);
+
+ /* Check if all TBFs are allocated on different TRX in an uniform way */
for (i := 0; i < num_ms; i := i + 1) {
- f_ms_establish_ul_tbf(g_ms[i]);
if (g_ms[i].ul_tbf.arfcn != info_ind.trx.v10[i mod 3].arfcn) {
setverdict(fail, "Got assigned ARFCN ", g_ms[i].ul_tbf.arfcn,
" vs exp ", info_ind.trx.v10[i mod 3].arfcn);