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

Reply via email to