Change in osmo-bsc[master]: RES IND: add test_resource_indication.ho_vty

neels gerrit-no-reply at lists.osmocom.org
Thu Jul 8 04:49:19 UTC 2021


neels 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>


More information about the gerrit-log mailing list