aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-12-23 19:18:00 +0100
committerlaforge <laforge@osmocom.org>2021-01-11 14:35:34 +0000
commitd3ade57dcf95bf859554fb895b9084a146595086 (patch)
tree3a7537b8a6b3e080d64de4ccc3ce270290727326
parent83952a7f716ce4a23532b2626a13a5b76708bad8 (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
-rw-r--r--tests/handover/handover_tests.ok2
-rw-r--r--tests/handover/test_congestion_no_oscillation.ho_vty48
-rw-r--r--tests/handover/test_congestion_no_oscillation2.ho_vty31
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