pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21128 )


Change subject: pcu: Introduce test TC_mcs_max_dl
......................................................................

pcu: Introduce test TC_mcs_max_dl

Change-Id: If6c58cc18b537c4a1354f1b8263db8321347fbd7
---
M pcu/PCU_Tests.ttcn
1 file changed, 53 insertions(+), 12 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/28/21128/1

diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 779d430..c35c478 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -868,14 +868,25 @@
 }

 /* Verify scheduling of multiple Downlink data blocks, enough to reach CS4 */
-function f_dl_data_exp_cs(template CodingScheme exp_cs := ?) runs on 
RAW_PCU_Test_CT {
-       var octetstring data := f_rnd_octstring(1000);
+function f_dl_data_exp_cs(template CodingScheme exp_final_cs := ?, template 
MSRadioAccessCapabilityV_BSSGP ms_racap := omit) runs on RAW_PCU_Test_CT {
+       var octetstring data := f_rnd_octstring(1400);
        var RlcmacDlBlock prev_dl_block, dl_block;
        var uint32_t ack_fn;
        var uint32_t fn;
        var GprsMS ms;
-       var integer tx_data_remain := 5;
+       var integer tx_data_remain := 10;
        var integer bsn := 0;
+       var boolean using_egprs := 
f_rlcmac_cs_mcs_is_mcs(valueof(exp_final_cs));
+       var integer bsn_mod;
+       var template CodingScheme exp_tmp_csmcs;
+
+       if (using_egprs) {
+               exp_tmp_csmcs := mcs_egprs_any;
+               bsn_mod := 2048;
+       } else {
+               exp_tmp_csmcs := cs_gprs_any;
+               bsn_mod := 128;
+       }

        /* Establish BSSGP connection to the PCU */
        f_bssgp_establish();
@@ -884,14 +895,14 @@
        f_bssgp_client_llgmm_assign(TLLI_UNUSED, ms.tlli);

        /* SGSN sends some DL data, PCU will page on CCCH (PCH) */
-       BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
+       BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data, ms_racap));
        f_ms_exp_dl_tbf_ass_ccch(ms, PCU_IF_SAPI_PCH);

        /* Wait timer X2002 and DL block is available after CCCH IMM ASS */
        f_sleep(X2002);

-       for (var integer i := 0; i < 250; i := i + 1) {
-               bsn := i mod 128;
+       for (var integer i := 0; i < 800; i := i + 1) {
+               bsn := i mod bsn_mod;
                f_rx_rlcmac_dl_block(dl_block, fn);

                if (match(dl_block, tr_RLCMAC_DUMMY_CTRL)) {
@@ -899,15 +910,15 @@
                        break;
                }

-               f_rlcmac_dl_block_exp_data(dl_block, ?, bsn, cs_gprs_any);
+               f_rlcmac_dl_block_exp_data(dl_block, ?, bsn, exp_tmp_csmcs);

                /* Keep Ack/Nack description updated */
-               f_acknackdesc_ack_block(ms.dl_tbf.acknack_desc, dl_block);
+               f_dltbf_ack_block(ms.dl_tbf, dl_block);

                /* TDMA frame number on which we are supposed to send the ACK */
-               if (dl_block.data.mac_hdr.mac_hdr.rrbp_valid) {
+               if (f_dl_block_rrbp_valid(dl_block)) {
                        ack_fn := f_dl_block_ack_fn(dl_block, fn);
-                       f_ms_tx_ul_block(ms, 
ts_RLCMAC_DL_ACK_NACK(ms.dl_tbf.tfi, ms.dl_tbf.acknack_desc), ack_fn);
+                       f_ms_tx_ul_block(ms, 
f_dltbf_ts_RLCMAC_DL_ACK_NACK(ms.dl_tbf, using_egprs), ack_fn);
                        if (tx_data_remain != 0) {
                                /* Submit more data from time to time to keep 
the TBF ongoing */
                                BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, data));
@@ -917,8 +928,8 @@
                prev_dl_block := dl_block;
        }

-       bsn := (bsn + 127) mod 128; /* previous bsn: bsn -1 */
-       f_rlcmac_dl_block_exp_data(prev_dl_block, ?, bsn, exp_cs);
+       bsn := (bsn + (bsn_mod-1)) mod bsn_mod; /* previous bsn: bsn -1 */
+       f_rlcmac_dl_block_exp_data(prev_dl_block, ?, bsn, exp_final_cs);


        f_shutdown(__BFILE__, __LINE__, final := true);
@@ -1150,6 +1161,35 @@
        f_shutdown(__BFILE__, __LINE__, final := true);
 }

+/* Verify DL MCS above "mcs max" set by VTY is never used */
+testcase TC_mcs_max_dl() runs on RAW_PCU_Test_CT {
+       /* Initialize NS/BSSGP side */
+       f_init_bssgp();
+       /* Initialize GPRS MS side */
+       f_init_gprs_ms();
+
+       /* Initialize the PCU interface abstraction */
+       f_init_raw(testcasename());
+
+       /* Set maximum allowed DL CS to 3 */
+       g_mcs_initial_dl := 1;
+       g_mcs_max_dl := 3;
+       f_pcuvty_set_allowed_cs_mcs();
+       f_pcuvty_set_link_quality_ranges();
+
+       var MultislotCap_GPRS_BSSGP mscap_gprs := {
+               gprsmultislotclass := '00011'B,
+               gprsextendeddynalloccap := '0'B
+       };
+       var MultislotCap_EGPRS_BSSGP mscap_egprs := {
+               egprsmultislotclass := '00011'B,
+               egprsextendeddynalloccap := '0'B
+       };
+       var MSRadioAccessCapabilityV_BSSGP ms_racap := { 
valueof(ts_RaCapRec_BSSGP('0001'B /* E-GSM */, mscap_gprs, mscap_egprs)) };
+
+       f_dl_data_exp_cs(f_rlcmac_block_int2cs_mcs(g_mcs_max_dl, true), 
ms_racap);
+}
+
 /* Verify PCU drops TBF after some time of inactivity. */
 testcase TC_t3169() runs on RAW_PCU_Test_CT {
        var PCUIF_info_ind info_ind;
@@ -3222,6 +3262,7 @@
        execute( TC_mcs_initial_ul() );
        execute( TC_mcs_max_ul() );
        execute( TC_mcs_initial_dl() );
+       execute( TC_mcs_max_dl() );
        execute( TC_t3169() );
        execute( TC_t3193() );
        execute( TC_countdown_procedure() );

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21128
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: If6c58cc18b537c4a1354f1b8263db8321347fbd7
Gerrit-Change-Number: 21128
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pes...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to