This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
neels gerrit-no-reply at lists.osmocom.orgneels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/24884 )
Change subject: RES IND: add test_resource_indication.ho_vty
......................................................................
RES IND: add test_resource_indication.ho_vty
Show that osmo-bsc does not yet take Resource Indication's reported
interference levels into account. (An upcoming patch will change that.)
This is a first: this test is not actually doing any handover, but it is
using the handover/*.ho_vty scripting that was intended for handover
testing.
Change-Id: I56ec61196a1e103f0b4caf18d25d8222bb82cf87
---
M tests/handover/handover_test.c
M tests/handover/handover_tests.ok
A tests/handover/test_resource_indication.ho_vty
3 files changed, 163 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/84/24884/1
diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c
index 2ff9f31..8d316ca 100644
--- a/tests/handover/handover_test.c
+++ b/tests/handover/handover_test.c
@@ -1045,6 +1045,93 @@
return CMD_SUCCESS;
}
+DEFUN(res_ind, res_ind_cmd,
+ "res-ind trx <0-255> <0-255> levels .LEVELS",
+ "Send Resource Indication for a specific TRX, indicating interference levels per lchan\n"
+ "Indicate a BTS and TRX\n" "BTS nr\n" "TRX nr\n"
+ "Indicate interference levels: each level is an index to bts->interf_meas_params.bounds_dbm[],"
+ " i.e. <0-5> or '-' to omit a report for this timeslot/lchan."
+ " Separate timeslots by spaces, for individual subslots directly concatenate values."
+ " If a timeslot has more subslots than provided, the last given value is repeated."
+ " For example: 'res-ind trx 0 0 levels - 1 23 -': on BTS 0 TRX 0, omit ratings for the entire first timeslot,"
+ " send level=1 for timeslot 1, and for timeslot 2 send level=2 for subslot 0 and level=3 for subslot 1.\n")
+{
+ int i;
+ uint8_t level;
+ struct gsm_bts *bts = bts_by_num_str(argv[0]);
+ struct gsm_bts_trx *trx = trx_by_num_str(bts, argv[1]);
+ struct msgb *msg = msgb_alloc_headroom(256, 64, "RES-IND");
+ struct abis_rsl_common_hdr *rslh;
+ uint8_t *res_info_len;
+ VTY_ECHO();
+
+ argv += 2;
+ argc -= 2;
+
+ rslh = (struct abis_rsl_common_hdr*)msgb_put(msg, sizeof(*rslh));
+ rslh->msg_discr = ABIS_RSL_MDISC_TRX;
+ rslh->msg_type = RSL_MT_RF_RES_IND;
+ msgb_put_u8(msg, RSL_IE_RESOURCE_INFO);
+ res_info_len = msg->tail;
+ msgb_put_u8(msg, 0);
+
+ level = 0xff;
+ for (i = 0; i < ARRAY_SIZE(trx->ts); i++) {
+ const char *ts_str;
+ struct gsm_lchan *lchan;
+ size_t given_subslots = 0;
+ struct gsm_bts_trx_ts *ts = &trx->ts[i];
+
+ if (i < argc) {
+ ts_str = argv[i];
+ given_subslots = strlen(ts_str);
+ }
+
+ ts_for_n_lchans(lchan, ts, ts->max_lchans_possible) {
+ int chan_nr;
+
+ if (lchan->nr < given_subslots) {
+ char subslot_val = ts_str[lchan->nr];
+ switch (subslot_val) {
+ case '-':
+ level = INTERF_BAND_UNKNOWN;
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ level = subslot_val - '0';
+ break;
+ default:
+ OSMO_ASSERT(false);
+ }
+ }
+
+ if (level == INTERF_BAND_UNKNOWN)
+ continue;
+
+ chan_nr = gsm_lchan2chan_nr(lchan, true);
+ if (chan_nr < 0)
+ continue;
+
+ msgb_put_u8(msg, chan_nr);
+ msgb_put_u8(msg, level << 5);
+ }
+ }
+
+ *res_info_len = msg->tail - res_info_len - 1;
+
+ msg->dst = trx->rsl_link_primary;
+ msg->l2h = msg->data;
+ abis_rsl_rcvmsg(msg);
+
+ return CMD_SUCCESS;
+}
+
DEFUN(congestion_check, congestion_check_cmd,
"congestion-check",
"Trigger a congestion check\n")
@@ -1313,6 +1400,7 @@
install_element(CONFIG_NODE, &meas_rep_cmd);
install_element(CONFIG_NODE, &meas_rep_repeat_cmd);
install_element(CONFIG_NODE, &meas_rep_repeat_bspower_cmd);
+ install_element(CONFIG_NODE, &res_ind_cmd);
install_element(CONFIG_NODE, &congestion_check_cmd);
install_element(CONFIG_NODE, &expect_no_chan_cmd);
install_element(CONFIG_NODE, &expect_chan_cmd);
diff --git a/tests/handover/handover_tests.ok b/tests/handover/handover_tests.ok
index b76c032..a03454d 100644
--- a/tests/handover/handover_tests.ok
+++ b/tests/handover/handover_tests.ok
@@ -47,6 +47,7 @@
pass test_neighbor_full.ho_vty
pass test_no_congestion.ho_vty
pass test_penalty_timer.ho_vty
+pass test_resource_indication.ho_vty
pass test_rxqual.ho_vty
pass test_rxqual_vs_congestion.ho_vty
pass test_stay_in_better_cell.ho_vty
diff --git a/tests/handover/test_resource_indication.ho_vty b/tests/handover/test_resource_indication.ho_vty
new file mode 100644
index 0000000..6e319c6
--- /dev/null
+++ b/tests/handover/test_resource_indication.ho_vty
@@ -0,0 +1,74 @@
+# Test effects of interference levels reported in Resource Indication.
+# Note, this is not actually a handover test.
+
+create-bts trx-count 1 timeslots c+s4 TCH/F TCH/F TCH/F TCH/F TCH/F TCH/F PDCH
+
+# By default, the ordering is most-interference-first
+network
+ bts 0
+ interference-meas level-bounds -85 -91 -97 -103 -109 -115
+# 0 1 2 3 4 5
+
+res-ind trx 0 0 levels - 1 2 3 4 3 2 -
+create-ms bts 0 TCH/F AMR
+# FAIL: interference is ignored
+expect-ts-use trx 0 0 states * TCH/F - - - - - *
+
+# The ordering may also be configured reversed, still the lowest dBm value should win
+network
+ bts 0
+ interference-meas level-bounds -115 -109 -103 -97 -91 -85
+# 0 1 2 3 4 5
+
+res-ind trx 0 0 levels - 5 4 2 - 3 4 -
+create-ms bts 0 TCH/F AMR
+# FAIL: interference is ignored
+expect-ts-use trx 0 0 states * TCH/F TCH/F - - - - *
+
+# Favor lchans that have an indicated interference level
+res-ind trx 0 0 levels - - - - - 4 3 -
+create-ms bts 0 TCH/F AMR
+# FAIL: interference is ignored
+expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F - - - *
+
+# For equal levels, pick the first
+res-ind trx 0 0 levels - 2 2 - - 2 - -
+create-ms bts 0 TCH/F AMR
+# FAIL: interference is ignored
+expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F TCH/F - - *
+
+# Test clamping of indexes > 5
+res-ind trx 0 0 levels - - 6 - - 4 - -
+create-ms bts 0 TCH/F AMR
+# FAIL: interference is ignored
+expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F TCH/F TCH/F - *
+
+# Also test for TCH/H
+create-bts trx-count 1 timeslots c+s4 TCH/H TCH/H TCH/H TCH/H TCH/H TCH/H PDCH
+network
+ bts 1
+ interference-meas level-bounds -115 -109 -103 -97 -91 -85
+# 0 1 2 3 4 5
+
+res-ind trx 1 0 levels - 54 32 21 23 45 54 -
+create-ms bts 1 TCH/H AMR
+# FAIL: interference is ignored
+expect-ts-use trx 1 0 states * TCH/H- - - - - - *
+
+# Favor lchans that have an indicated interference level
+res-ind trx 1 0 levels - - - 4- 3- - - -
+create-ms bts 1 TCH/H AMR
+# FAIL: interference is ignored
+expect-ts-use trx 1 0 states * TCH/HH - - - - - *
+
+# For equal levels, pick the first
+res-ind trx 1 0 levels - -2 22 2- -2 22 2- -
+create-ms bts 1 TCH/H AMR
+# FAIL: interference is ignored
+expect-ts-use trx 1 0 states * TCH/HH TCH/H- - - - - *
+
+# Test clamping of indexes > 5
+res-ind trx 1 0 levels - 7- 67 6- -7 54 6- -
+create-ms bts 1 TCH/H AMR
+# FAIL: interference is ignored
+expect-ts-use trx 1 0 states * TCH/HH TCH/HH - - - - *
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/24884
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I56ec61196a1e103f0b4caf18d25d8222bb82cf87
Gerrit-Change-Number: 24884
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210708/fdd6eb26/attachment.htm>