Change in osmo-bsc[master]: handover_test: add lchan wildcards to meas-rep cmd

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/.

laforge gerrit-no-reply at lists.osmocom.org
Wed Jan 13 08:05:22 UTC 2021


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/22082 )

Change subject: handover_test: add lchan wildcards to meas-rep cmd
......................................................................

handover_test: add lchan wildcards to meas-rep cmd

With 'set-ts-use', it is convenient to build a scenario of lchan usage,
but still inconvenient to send measurement reports to all lchans.

I need this for testing congestion-check, because each lchan needs to
have at least one measurement report, or congestion check is skipped.

Example:

 set-ts-use trx 0 0 states * TCH/F TCH/F - - TCH/HH TCH/HH TCH/H-
 meas-rep lchan * * * * rxlev 10 rxqual 0 ta 0

This patch adds the '*' for the lchan arguments, usually being bts idx,
trx idx, timeslot idx and subslot idx.

Use lchan wildcards at the appropriate places to shorten some tests.

Change-Id: I441f92348508d45e1069a3dfa1ff3842dbba97d6
---
M tests/handover/handover_test.c
M tests/handover/test_balance_congestion_2.ho_vty
M tests/handover/test_congestion.ho_vty
M tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty
M tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty
M tests/handover/test_no_congestion.ho_vty
6 files changed, 72 insertions(+), 44 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve



diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c
index d422a9d..dff1390 100644
--- a/tests/handover/handover_test.c
+++ b/tests/handover/handover_test.c
@@ -741,6 +741,50 @@
 	return &ts->lchan[atoi(argv[3])];
 }
 
+#define LCHAN_WILDCARD_ARGS "lchan (<0-255>|*) (<0-255>|*) (<0-7>|*) (<0-7>|*)"
+#define LCHAN_WILDCARD_ARGS_DOC "identify an lchan\nBTS nr\nall BTS\nTRX nr\nall BTS\nTimeslot nr\nall TS\nSubslot nr\nall subslots\n"
+
+static void parse_lchan_wildcard_args(const char **argv, void (*cb)(struct gsm_lchan*, void*), void *cb_data)
+{
+	const char *bts_str = argv[0];
+	const char *trx_str = argv[1];
+	const char *ts_str = argv[2];
+	const char *ss_str = argv[3];
+	int bts_num = (strcmp(bts_str, "*") == 0)? -1 : atoi(bts_str);
+	int trx_num = (strcmp(trx_str, "*") == 0)? -1 : atoi(trx_str);
+	int ts_num = (strcmp(ts_str, "*") == 0)? -1 : atoi(ts_str);
+	int ss_num = (strcmp(ss_str, "*") == 0)? -1 : atoi(ss_str);
+
+	int bts_i;
+	int trx_i;
+	int ts_i;
+	int ss_i;
+
+	for (bts_i = ((bts_num == -1) ? 0 : bts_num);
+	     bts_i < ((bts_num == -1) ? bsc_gsmnet->num_bts : bts_num + 1);
+	     bts_i++) {
+		struct gsm_bts *bts = gsm_bts_num(bsc_gsmnet, bts_i);
+
+		for (trx_i = ((trx_num == -1) ? 0 : trx_num);
+		     trx_i < ((trx_num == -1) ? bts->num_trx : trx_num + 1);
+		     trx_i++) {
+			struct gsm_bts_trx *trx = gsm_bts_trx_num(bts, trx_i);
+
+			for (ts_i = ((ts_num == -1) ? 0 : ts_num);
+			     ts_i < ((ts_num == -1) ? 8 : ts_num + 1);
+			     ts_i++) {
+				struct gsm_bts_trx_ts *ts = &trx->ts[ts_i];
+
+				for (ss_i = ((ss_num == -1) ? 0 : ss_num);
+				     ss_i < ((ss_num == -1) ? pchan_subslots(ts->pchan_is) : ss_num + 1);
+				     ss_i++) {
+					cb(&ts->lchan[ss_i], cb_data);
+				}
+			}
+		}
+	}
+}
+
 static int vty_step = 1;
 
 #define VTY_ECHO() \
@@ -814,18 +858,24 @@
 	return CMD_SUCCESS;
 }
 
-static int _meas_rep(struct vty *vty, int argc, const char **argv)
+struct meas_rep_data {
+	int argc;
+	const char **argv;
+};
+
+static void _meas_rep_cb(struct gsm_lchan *lc, void *data)
 {
-	struct gsm_lchan *lc;
+	struct meas_rep_data *d = data;
+	int argc = d->argc;
+	const char **argv = d->argv;
 	uint8_t rxlev;
 	uint8_t rxqual;
 	uint8_t ta;
 	int i;
 	struct neighbor_meas nm[6] = {};
 
-	lc = parse_lchan_args(argv);
-	argv += 4;
-	argc -= 4;
+	if (!lchan_state_is(lc, LCHAN_ST_ESTABLISHED))
+		return;
 
 	rxlev = atoi(argv[0]);
 	rxqual = atoi(argv[1]);
@@ -863,14 +913,24 @@
 				nm[i].rxlev);
 	}
 	gen_meas_rep(lc, rxlev, rxqual, ta, argc, nm);
+}
+
+static int _meas_rep(struct vty *vty, int argc, const char **argv)
+{
+	struct meas_rep_data d = {
+		.argc = argc - 4,
+		.argv = argv + 4,
+	};
+	parse_lchan_wildcard_args(argv, _meas_rep_cb, &d);
 	return CMD_SUCCESS;
 }
 
-#define MEAS_REP_ARGS  LCHAN_ARGS " rxlev <0-255> rxqual <0-7> ta <0-255>" \
+
+#define MEAS_REP_ARGS  LCHAN_WILDCARD_ARGS " rxlev <0-255> rxqual <0-7> ta <0-255>" \
 	" [neighbors] [<0-255>] [<0-255>] [<0-255>] [<0-255>] [<0-255>] [<0-255>]"
 #define MEAS_REP_DOC "Send measurement report\n"
 #define MEAS_REP_ARGS_DOC \
-      LCHAN_ARGS_DOC \
+      LCHAN_WILDCARD_ARGS_DOC \
       "rxlev\nrxlev\n" \
       "rxqual\nrxqual\n" \
       "timing advance\ntiming advance\n" \
diff --git a/tests/handover/test_balance_congestion_2.ho_vty b/tests/handover/test_balance_congestion_2.ho_vty
index 9c8b7f9..b157478 100644
--- a/tests/handover/test_balance_congestion_2.ho_vty
+++ b/tests/handover/test_balance_congestion_2.ho_vty
@@ -8,14 +8,9 @@
 codec tch/f FR
 set-ts-use trx 0 0 states * TCH/F TCH/F TCH/F - - - -
 set-ts-use trx 1 0 states * TCH/F - - - - - -
-meas-rep lchan 0 0 1 0 rxlev 30 rxqual 0 ta 0 neighbors 20
-expect-no-chan
+meas-rep lchan * * * * rxlev 30 rxqual 0 ta 0 neighbors 20
 meas-rep lchan 0 0 2 0 rxlev 30 rxqual 0 ta 0 neighbors 21
 expect-no-chan
-meas-rep lchan 0 0 3 0 rxlev 30 rxqual 0 ta 0 neighbors 20
-expect-no-chan
-meas-rep lchan 1 0 1 0 rxlev 30 rxqual 0 ta 0 neighbors 20
-expect-no-chan
 congestion-check
 expect-ho from lchan 0 0 2 0 to lchan 1 0 2 0
 expect-ts-use trx 0 0 states * TCH/F -     TCH/F - - - -
diff --git a/tests/handover/test_congestion.ho_vty b/tests/handover/test_congestion.ho_vty
index 09815e3..529b8de 100644
--- a/tests/handover/test_congestion.ho_vty
+++ b/tests/handover/test_congestion.ho_vty
@@ -9,20 +9,9 @@
  handover2 min-free-slots tch/h 2
 set-ts-use trx 0 0 states * TCH/F TCH/F TCH/F - TCH/HH - -
 set-ts-use trx 1 0 states * TCH/F -     -     - TCH/H- - -
-meas-rep lchan 0 0 1 0 rxlev 30 rxqual 0 ta 0 neighbors 20 20
-expect-no-chan
-meas-rep lchan 0 0 2 0 rxlev 30 rxqual 0 ta 0 neighbors 20 20
-expect-no-chan
+meas-rep lchan * * * * rxlev 30 rxqual 0 ta 0 neighbors 20 20
 meas-rep lchan 0 0 3 0 rxlev 30 rxqual 0 ta 0 neighbors 21 20
 expect-no-chan
-meas-rep lchan 0 0 5 0 rxlev 30 rxqual 0 ta 0 neighbors 20 20
-expect-no-chan
-meas-rep lchan 0 0 5 1 rxlev 30 rxqual 0 ta 0 neighbors 20 20
-expect-no-chan
-meas-rep lchan 1 0 1 0 rxlev 30 rxqual 0 ta 0 neighbors 20 20
-expect-no-chan
-meas-rep lchan 1 0 5 0 rxlev 30 rxqual 0 ta 0 neighbors 20 20
-expect-no-chan
 expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F - TCH/HH - -
 expect-ts-use trx 1 0 states * TCH/F -     -     - TCH/H- - -
 congestion-check
diff --git a/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty b/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty
index 3ae5997..f94ad0e 100644
--- a/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty
+++ b/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty
@@ -12,10 +12,7 @@
 set-ts-use trx 0 0 states * TCH/F TCH/F TCH/F TCH/F pdch pdch pdch
 
 # (there must be at leas one measurement report on each lchan for congestion check to work)
-meas-rep lchan 0 0 1 0 rxlev 40 rxqual 0 ta 0 neighbors 30
-meas-rep lchan 0 0 2 0 rxlev 40 rxqual 0 ta 0 neighbors 30
-meas-rep lchan 0 0 3 0 rxlev 40 rxqual 0 ta 0 neighbors 30
-meas-rep lchan 0 0 4 0 rxlev 40 rxqual 0 ta 0 neighbors 30
+meas-rep lchan * * * * rxlev 40 rxqual 0 ta 0 neighbors 30
 
 congestion-check
 expect-no-chan
diff --git a/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty b/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty
index 794bbef..3d1b009 100644
--- a/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty
+++ b/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty
@@ -8,10 +8,7 @@
 
 # Test with identical rxlev across lchans (trivial and unrealistic)
 set-ts-use    trx 0 0     states *    pdch  TCH/HH TCH/H- TCH/HH pdch - -
-meas-rep lchan 0 0 2 1 rxlev 30 rxqual 0 ta 0
-meas-rep lchan 0 0 3 0 rxlev 30 rxqual 0 ta 0
-meas-rep lchan 0 0 4 0 rxlev 30 rxqual 0 ta 0
-meas-rep lchan 0 0 4 1 rxlev 30 rxqual 0 ta 0
+meas-rep lchan * * * * rxlev 30 rxqual 0 ta 0
 congestion-check
 expect-ho from lchan 0 0 3 0 to lchan 0 0 1 0
 expect-ts-use trx 0 0     states *    TCH/F TCH/HH pdch TCH/HH pdch - -
diff --git a/tests/handover/test_no_congestion.ho_vty b/tests/handover/test_no_congestion.ho_vty
index 651d648..c8328c6 100644
--- a/tests/handover/test_no_congestion.ho_vty
+++ b/tests/handover/test_no_congestion.ho_vty
@@ -8,17 +8,7 @@
  handover2 min-free-slots tch/h 2
 set-ts-use trx 0 0 states * TCH/F TCH/F - - TCH/HH - -
 set-ts-use trx 1 0 states * TCH/F -     - - TCH/H- - -
-meas-rep lchan 0 0 1 0 rxlev 30 rxqual 0 ta 0 neighbors 20 1 20
-expect-no-chan
-meas-rep lchan 0 0 2 0 rxlev 30 rxqual 0 ta 0 neighbors 20 1 20
-expect-no-chan
-meas-rep lchan 0 0 5 0 rxlev 30 rxqual 0 ta 0 neighbors 20 1 20
-expect-no-chan
-meas-rep lchan 0 0 5 1 rxlev 30 rxqual 0 ta 0 neighbors 20 1 20
-expect-no-chan
-meas-rep lchan 1 0 1 0 rxlev 30 rxqual 0 ta 0 neighbors 20 1 20
-expect-no-chan
-meas-rep lchan 1 0 5 0 rxlev 30 rxqual 0 ta 0 neighbors 20 1 20
+meas-rep lchan * * * * rxlev 30 rxqual 0 ta 0 neighbors 20 1 20
 expect-no-chan
 congestion-check
 expect-no-chan

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/22082
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I441f92348508d45e1069a3dfa1ff3842dbba97d6
Gerrit-Change-Number: 22082
Gerrit-PatchSet: 3
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210113/59826aae/attachment.htm>


More information about the gerrit-log mailing list