<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21985">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">handover_test: show a bug: add test_congestion_no_oscillation.ho_vty<br><br>Also add test_congestion_no_oscillation2.ho_vty which is an almost<br>identical scenario that does not show the bug -- because it has two more<br>TCH/H available in BTS 1, showing the strange behavior of the algorithm.<br><br>Related: SYS#5259<br>Change-Id: Idf88b4cf3d2f92f5560d73dae9e59af39d0494c0<br>---<br>M tests/handover/handover_tests.ok<br>A tests/handover/test_congestion_no_oscillation.ho_vty<br>A tests/handover/test_congestion_no_oscillation2.ho_vty<br>3 files changed, 81 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/handover/handover_tests.ok b/tests/handover/handover_tests.ok</span><br><span>index eab405d..521a0fe 100644</span><br><span>--- a/tests/handover/handover_tests.ok</span><br><span>+++ b/tests/handover/handover_tests.ok</span><br><span>@@ -11,6 +11,8 @@</span><br><span> pass test_congestion.ho_vty</span><br><span> pass test_congestion_favor_best_target_rxlev.ho_vty</span><br><span> pass test_congestion_intra_vs_inter_cell.ho_vty</span><br><span style="color: hsl(120, 100%, 40%);">+pass test_congestion_no_oscillation.ho_vty</span><br><span style="color: hsl(120, 100%, 40%);">+pass test_congestion_no_oscillation2.ho_vty</span><br><span> pass test_disabled_ho_and_as.ho_vty</span><br><span> pass test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty</span><br><span> pass test_dyn_ts_favor_half_used_tch_h_as_target.ho_vty</span><br><span>diff --git a/tests/handover/test_congestion_no_oscillation.ho_vty b/tests/handover/test_congestion_no_oscillation.ho_vty</span><br><span>new file mode 100644</span><br><span>index 0000000..abfaef7</span><br><span>--- /dev/null</span><br><span>+++ b/tests/handover/test_congestion_no_oscillation.ho_vty</span><br><span>@@ -0,0 +1,48 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# Do not oscillate handover from TCH/F to TCH/H on a neighbor due to congestion,</span><br><span style="color: hsl(120, 100%, 40%);">+# and then back to the original cell due to RXLEV.</span><br><span style="color: hsl(120, 100%, 40%);">+# Currently this test script shows the undesired oscillation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F  TCH/F  TCH/F PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+network</span><br><span style="color: hsl(120, 100%, 40%);">+ bts 0</span><br><span style="color: hsl(120, 100%, 40%);">+  handover2 min-free-slots tch/f 5</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F  TCH/H  TCH/H PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+set-ts-use trx 0 0 states        *    TCH/F TCH/F -     -      -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+set-ts-use trx 1 0 states        *    TCH/F TCH/F TCH/F TCH/F  -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+meas-rep repeat 10 lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20</span><br><span style="color: hsl(120, 100%, 40%);">+expect-no-chan</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# bts 0 wants to lose one TCH/F. The neighbor's TCH/F are full, but TCH/H are available there.</span><br><span style="color: hsl(120, 100%, 40%);">+congestion-check</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 0 0 states        *    TCH/F -     -     -      -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 1 0 states        *    TCH/F TCH/F TCH/F TCH/F  TCH/H- -     *</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# measurements continue to be the same</span><br><span style="color: hsl(120, 100%, 40%);">+meas-rep lchan 1 0 5 0 rxlev 20 rxqual 0 ta 0 neighbors 40</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# FAIL: RXLEV oscillation back to bts 0</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ho from lchan 1 0 5 0 to lchan 0 0 2 0</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 0 0 states        *    TCH/F TCH/F -     -      -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 1 0 states        *    TCH/F TCH/F TCH/F TCH/F  -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+meas-rep lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20</span><br><span style="color: hsl(120, 100%, 40%);">+expect-no-chan</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# FAIL: congestion oscillation again to bts 1</span><br><span style="color: hsl(120, 100%, 40%);">+congestion-check</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 0 0 states        *    TCH/F -     -     -      -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 1 0 states        *    TCH/F TCH/F TCH/F TCH/F  TCH/H- -     *</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# FAIL: RXLEV oscillation back to bts 0</span><br><span style="color: hsl(120, 100%, 40%);">+meas-rep lchan 1 0 5 0 rxlev 20 rxqual 0 ta 0 neighbors 40</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ho from lchan 1 0 5 0 to lchan 0 0 2 0</span><br><span style="color: hsl(120, 100%, 40%);">+meas-rep lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# FAIL: congestion oscillation again to bts 1</span><br><span style="color: hsl(120, 100%, 40%);">+congestion-check</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0</span><br><span>diff --git a/tests/handover/test_congestion_no_oscillation2.ho_vty b/tests/handover/test_congestion_no_oscillation2.ho_vty</span><br><span>new file mode 100644</span><br><span>index 0000000..aee731d</span><br><span>--- /dev/null</span><br><span>+++ b/tests/handover/test_congestion_no_oscillation2.ho_vty</span><br><span>@@ -0,0 +1,31 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# Almost identical to test_amr_oscillation.ho_vty, this has just two more TCH/H slots in BTS 1, and does not trigger the</span><br><span style="color: hsl(120, 100%, 40%);">+# oscillation bug. The number of free TCH/H in BTS 1 should be unrelated to the congestion status of BTS 0, which</span><br><span style="color: hsl(120, 100%, 40%);">+# illustrates that the even distribution of congestion is fundamentally flawed.</span><br><span style="color: hsl(120, 100%, 40%);">+# This test script shows the desired behavior, though by common sense there should be no reason why we see the bug in</span><br><span style="color: hsl(120, 100%, 40%);">+# test_amr_oscillation.ho_vty and not here.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F  TCH/F  TCH/F PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+network</span><br><span style="color: hsl(120, 100%, 40%);">+ bts 0</span><br><span style="color: hsl(120, 100%, 40%);">+  handover2 min-free-slots tch/f 5</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F  TCH/H  TCH/H TCH/H</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+set-ts-use trx 0 0 states        *    TCH/F TCH/F -     -      -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+set-ts-use trx 1 0 states        *    TCH/F TCH/F TCH/F TCH/F  -      -     -</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+meas-rep repeat 10 lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 20</span><br><span style="color: hsl(120, 100%, 40%);">+expect-no-chan</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# bts 0 wants to lose one TCH/F. The neighbor's TCH/F are full, but TCH/H are available there.</span><br><span style="color: hsl(120, 100%, 40%);">+congestion-check</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ho from lchan 0 0 2 0 to lchan 1 0 5 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 0 0 states        *    TCH/F -     -     -      -      -     *</span><br><span style="color: hsl(120, 100%, 40%);">+expect-ts-use trx 1 0 states        *    TCH/F TCH/F TCH/F TCH/F  TCH/H- -     -</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# measurements continue to be the same</span><br><span style="color: hsl(120, 100%, 40%);">+meas-rep lchan 1 0 5 0 rxlev 20 rxqual 0 ta 0 neighbors 40</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# despite the better RXLEV, congestion prevents oscillation back to bts 0</span><br><span style="color: hsl(120, 100%, 40%);">+expect-no-chan</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21985">change 21985</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bsc/+/21985"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Idf88b4cf3d2f92f5560d73dae9e59af39d0494c0 </div>
<div style="display:none"> Gerrit-Change-Number: 21985 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>