neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/21985 )
Change subject: handover_test: show a bug: add test_congestion_no_oscillation.ho_vty ...................................................................... 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 --- M tests/handover/handover_tests.ok A tests/handover/test_congestion_no_oscillation.ho_vty A tests/handover/test_congestion_no_oscillation2.ho_vty 3 files changed, 81 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/85/21985/1 diff --git a/tests/handover/handover_tests.ok b/tests/handover/handover_tests.ok index eab405d..521a0fe 100644 --- a/tests/handover/handover_tests.ok +++ b/tests/handover/handover_tests.ok @@ -11,6 +11,8 @@ 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 0000000..abfaef7 --- /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 0000000..aee731d --- /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 -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/21985 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: Idf88b4cf3d2f92f5560d73dae9e59af39d0494c0 Gerrit-Change-Number: 21985 Gerrit-PatchSet: 1 Gerrit-Owner: neels <nhofm...@sysmocom.de> Gerrit-MessageType: newchange