Change in osmo-ttcn3-hacks[master]: BSC_Tests: add TC_chan_alloc_algo_ass_dynamic
laforge has submitted this change. ( 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(-) Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 7070c9f..f3e15ef 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -11638,6 +11638,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() ); @@ -11967,6 +12044,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: 2 Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge@osmocom.org> Gerrit-Reviewer: pespin <pespin@sysmocom.de> Gerrit-MessageType: merged
participants (1)
-
laforge