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


Change subject: BSC_Tests: add TC_chan_alloc_algo_ass_dynamic
......................................................................

BSC_Tests: add TC_chan_alloc_algo_ass_dynamic

This test case verifies the new channel allocation mode, which
is expected to switch between ascending and descending modes
dynamically based on the following two configurable parameters:

* Uplink RxLev threshold (and min number of samples),
* C0 (BCCH carrier) channel load threshold.

The test case scenario includes:

Case a) Unknown Uplink RxLev => fall-back to ascending.
Case b) Not enough RxLev samples => use ascending.
Case c) Uplink RxLev below the threshold => use ascending.
Case d) Uplink RxLev above the threshold => use descending.
Case e) Uplink RxLev above the threshold, but C0 load is not.

Change-Id: Ia522f37c1c001b3a36f5145b8875fbb88311c2e5
Related: SYS#5460
---
M bsc/BSC_Tests.ttcn
M library/RSL_Types.ttcn
2 files changed, 98 insertions(+), 5 deletions(-)



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

diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 6ff4450..1159dbc 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -11637,6 +11637,83 @@
        f_shutdown_helper();
 }

+testcase TC_chan_alloc_algo_ass_dynamic() runs on test_CT {
+       const BtsTrxIdx TRX0 := {2, 0};
+       const BtsTrxIdx TRX3 := {2, 3};
+
+       /* We need to access BTS2, which has 4 TRXs */
+       f_init(nr_bts := 3);
+
+       /* HACK: work around "Couldn't find Expect for CRCX" */
+       vc_MGCP.stop;
+
+       f_vty_enter_cfg_bts(BSCVTY, 2);
+       f_vty_transceive(BSCVTY, "channel allocator mode assignment dynamic");
+       f_vty_transceive(BSCVTY, "channel allocator dynamic-param ul-rxlev 
thresh 50 avg-num 2");
+       f_vty_transceive(BSCVTY, "channel allocator dynamic-param c0-chan-load 
thresh 0");
+       f_vty_transceive(BSCVTY, "end");
+
+       var DchanTuple dt;
+
+       f_logp(BSCVTY, "Case a) Unknown Uplink RxLev, fall-back to ascending");
+       dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
+       f_TC_chan_alloc_algo(dt, TRX0);
+       f_perform_clear_test_ct(dt);
+
+       f_logp(BSCVTY, "Case b) Not enough RxLev samples, use ascending");
+       dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
+       f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
+                                      ts_RSL_IE_UplinkMeas(30, 0),
+                                      ts_RSL_IE_BS_Power(0)), TRX0);
+       f_TC_chan_alloc_algo(dt, TRX0);
+       f_perform_clear_test_ct(dt);
+
+       f_logp(BSCVTY, "Case c) Uplink RxLev below the threshold, use 
ascending");
+       dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
+       f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
+                                      ts_RSL_IE_UplinkMeas(45, 0),
+                                      ts_RSL_IE_BS_Power(0)), TRX0);
+       f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 1,
+                                      ts_RSL_IE_UplinkMeas(48, 0),
+                                      ts_RSL_IE_BS_Power(0)), TRX0);
+       f_TC_chan_alloc_algo(dt, TRX0);
+       f_perform_clear_test_ct(dt);
+
+       f_logp(BSCVTY, "Case d) Uplink RxLev above the threshold, use 
descending");
+       dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
+       f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
+                                      ts_RSL_IE_UplinkMeas(50, 0),
+                                      ts_RSL_IE_BS_Power(0)), TRX0);
+       f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 1,
+                                      ts_RSL_IE_UplinkMeas(58, 0),
+                                      ts_RSL_IE_BS_Power(0)), TRX0);
+       f_TC_chan_alloc_algo(dt, TRX3);
+       f_perform_clear_test_ct(dt);
+
+       f_vty_enter_cfg_bts(BSCVTY, 2);
+       f_vty_transceive(BSCVTY, "channel allocator dynamic-param c0-chan-load 
thresh 90");
+       f_vty_transceive(BSCVTY, "end");
+
+       f_logp(BSCVTY, "Case e) Uplink RxLev above the threshold, but C0 load 
is not");
+       dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
+       f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
+                                      ts_RSL_IE_UplinkMeas(50, 0),
+                                      ts_RSL_IE_BS_Power(0)), TRX0);
+       f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 1,
+                                      ts_RSL_IE_UplinkMeas(58, 0),
+                                      ts_RSL_IE_BS_Power(0)), TRX0);
+       f_TC_chan_alloc_algo(dt, TRX0);
+       f_perform_clear_test_ct(dt);
+
+       f_vty_enter_cfg_bts(BSCVTY, 2);
+       f_vty_transceive(BSCVTY, "channel allocator ascending");
+       f_vty_transceive(BSCVTY, "end");
+
+       /* At this point some TCH/F channels are BORKEN, but they will be
+        * resurrected upon the A-bis/OML link re-establishment. */
+       f_shutdown_helper();
+}
+
 control {
        /* CTRL interface testing */
        execute( TC_ctrl_msc_connection_status() );
@@ -11966,6 +12043,7 @@
        /* Channel allocator */
        execute( TC_chan_alloc_algo_ascending() );
        execute( TC_chan_alloc_algo_descending() );
+       execute( TC_chan_alloc_algo_ass_dynamic() );

        /* Run TC_ho_out_of_this_bsc last, because it may trigger a segfault 
before osmo-bsc's patch
         * with change-id I5a3345ab0005a73597f5c27207480912a2f5aae6 */
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 8a4d1fa..84e9375 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -1542,12 +1542,27 @@
                }
        }

-       /* Receive template for a measurement report that lacks the measurement 
report
+       /* Templates for a measurement report that lacks the measurement report
         * from the MS (l1_info, l3_info and ms timing offset */
-       template RSL_Message tr_RSL_MEAS_RES_EMPTY(template RslChannelNr 
chan_nr,
-                                            template uint8_t meas_res_nr := ?,
-                                            template RSL_IE_UplinkMeas ul_meas 
:= ?,
-                                            template RSL_IE_BS_Power bs_power 
:= ?) := {
+       template (value) RSL_Message
+       ts_RSL_MEAS_RES_EMPTY(template (value) RslChannelNr chan_nr,
+                             template (value) uint8_t meas_res_nr,
+                             template (value) RSL_IE_UplinkMeas ul_meas,
+                             template (value) RSL_IE_BS_Power bs_power) := {
+               msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
+               msg_type := RSL_MT_MEAS_RES,
+               ies := {
+                       t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := 
chan_nr}),
+                       t_RSL_IE(RSL_IE_MEAS_RES_NR, RSL_IE_Body:{meas_res_nr 
:= meas_res_nr}),
+                       t_RSL_IE(RSL_IE_UPLINK_MEAS, RSL_IE_Body:{uplink_meas 
:= ul_meas}),
+                       t_RSL_IE(RSL_IE_BS_POWER, RSL_IE_Body:{bs_power := 
bs_power})
+               }
+       }
+       template RSL_Message
+       tr_RSL_MEAS_RES_EMPTY(template (present) RslChannelNr chan_nr,
+                             template uint8_t meas_res_nr := ?,
+                             template RSL_IE_UplinkMeas ul_meas := ?,
+                             template RSL_IE_BS_Power bs_power := ?) := {
                msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
                msg_type := RSL_MT_MEAS_RES,
                ies := {

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28322
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: Ia522f37c1c001b3a36f5145b8875fbb88311c2e5
Gerrit-Change-Number: 28322
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-MessageType: newchange

Reply via email to