diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2020-12-23 19:18:00 +0100 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2021-01-11 14:35:34 +0000 |
commit | d3ade57dcf95bf859554fb895b9084a146595086 (patch) | |
tree | 3a7537b8a6b3e080d64de4ccc3ce270290727326 /tests | |
parent | 83952a7f716ce4a23532b2626a13a5b76708bad8 (diff) |
handover_test: show a bug: add test_congestion_no_oscillation.ho_vty
Also add test_congestion_no_oscillation2.ho_vty which is an almost
identical scenario that does not show the bug -- because it has two more
TCH/H available in BTS 1, showing the strange behavior of the algorithm.
Related: SYS#5259
Change-Id: Idf88b4cf3d2f92f5560d73dae9e59af39d0494c0
Diffstat (limited to 'tests')
-rw-r--r-- | tests/handover/handover_tests.ok | 2 | ||||
-rw-r--r-- | tests/handover/test_congestion_no_oscillation.ho_vty | 48 | ||||
-rw-r--r-- | tests/handover/test_congestion_no_oscillation2.ho_vty | 31 |
3 files changed, 81 insertions, 0 deletions
diff --git a/tests/handover/handover_tests.ok b/tests/handover/handover_tests.ok index eab405d20..521a0fef5 100644 --- a/tests/handover/handover_tests.ok +++ b/tests/handover/handover_tests.ok @@ -11,6 +11,8 @@ pass test_balance_congestion_2.ho_vty pass test_congestion.ho_vty pass test_congestion_favor_best_target_rxlev.ho_vty pass test_congestion_intra_vs_inter_cell.ho_vty +pass test_congestion_no_oscillation.ho_vty +pass test_congestion_no_oscillation2.ho_vty pass test_disabled_ho_and_as.ho_vty pass test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty pass test_dyn_ts_favor_half_used_tch_h_as_target.ho_vty diff --git a/tests/handover/test_congestion_no_oscillation.ho_vty b/tests/handover/test_congestion_no_oscillation.ho_vty new file mode 100644 index 000000000..abfaef741 --- /dev/null +++ b/tests/handover/test_congestion_no_oscillation.ho_vty @@ -0,0 +1,48 @@ +# Do not oscillate handover from TCH/F to TCH/H on a neighbor due to congestion, +# and then back to the original cell due to RXLEV. +# Currently this test script shows the undesired oscillation. + +create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F TCH/F TCH/F PDCH +network + bts 0 + handover2 min-free-slots tch/f 5 + +create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F TCH/H TCH/H PDCH + +set-ts-use trx 0 0 states * TCH/F TCH/F - - - - * +set-ts-use trx 1 0 states * TCH/F TCH/F TCH/F TCH/F - - * + +meas-rep repeat 10 lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20 +expect-no-chan + +# bts 0 wants to lose one TCH/F. The neighbor's TCH/F are full, but TCH/H are available there. +congestion-check +expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0 + +expect-ts-use trx 0 0 states * TCH/F - - - - - * +expect-ts-use trx 1 0 states * TCH/F TCH/F TCH/F TCH/F TCH/H- - * + +# measurements continue to be the same +meas-rep lchan 1 0 5 0 rxlev 20 rxqual 0 ta 0 neighbors 40 + +# FAIL: RXLEV oscillation back to bts 0 +expect-ho from lchan 1 0 5 0 to lchan 0 0 2 0 +expect-ts-use trx 0 0 states * TCH/F TCH/F - - - - * +expect-ts-use trx 1 0 states * TCH/F TCH/F TCH/F TCH/F - - * +meas-rep lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20 +expect-no-chan + +# FAIL: congestion oscillation again to bts 1 +congestion-check +expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0 +expect-ts-use trx 0 0 states * TCH/F - - - - - * +expect-ts-use trx 1 0 states * TCH/F TCH/F TCH/F TCH/F TCH/H- - * + +# FAIL: RXLEV oscillation back to bts 0 +meas-rep lchan 1 0 5 0 rxlev 20 rxqual 0 ta 0 neighbors 40 +expect-ho from lchan 1 0 5 0 to lchan 0 0 2 0 +meas-rep lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20 + +# FAIL: congestion oscillation again to bts 1 +congestion-check +expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0 diff --git a/tests/handover/test_congestion_no_oscillation2.ho_vty b/tests/handover/test_congestion_no_oscillation2.ho_vty new file mode 100644 index 000000000..aee731d57 --- /dev/null +++ b/tests/handover/test_congestion_no_oscillation2.ho_vty @@ -0,0 +1,31 @@ +# Almost identical to test_amr_oscillation.ho_vty, this has just two more TCH/H slots in BTS 1, and does not trigger the +# oscillation bug. The number of free TCH/H in BTS 1 should be unrelated to the congestion status of BTS 0, which +# illustrates that the even distribution of congestion is fundamentally flawed. +# This test script shows the desired behavior, though by common sense there should be no reason why we see the bug in +# test_amr_oscillation.ho_vty and not here. + +create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F TCH/F TCH/F PDCH +network + bts 0 + handover2 min-free-slots tch/f 5 + +create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F TCH/H TCH/H TCH/H + +set-ts-use trx 0 0 states * TCH/F TCH/F - - - - * +set-ts-use trx 1 0 states * TCH/F TCH/F TCH/F TCH/F - - - + +meas-rep repeat 10 lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20 +expect-no-chan + +# bts 0 wants to lose one TCH/F. The neighbor's TCH/F are full, but TCH/H are available there. +congestion-check +expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0 + +expect-ts-use trx 0 0 states * TCH/F - - - - - * +expect-ts-use trx 1 0 states * TCH/F TCH/F TCH/F TCH/F TCH/H- - - + +# measurements continue to be the same +meas-rep lchan 1 0 5 0 rxlev 20 rxqual 0 ta 0 neighbors 40 + +# despite the better RXLEV, congestion prevents oscillation back to bts 0 +expect-no-chan |