Attention is currently required from: fixeria.
pespin has posted comments on this change by fixeria. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42019?usp=email )
Change subject: bts: f_TC_tx_power_ramp_adm_state_change(): drop unused last_rx_lvl
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42019?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I9cddc84265a53cb4fab3d887881e080ffe484db4
Gerrit-Change-Number: 42019
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 03 Feb 2026 10:31:35 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42022?usp=email )
Change subject: bts: f_verify_ramp_up(): fix RxLev / dBm mixup
......................................................................
bts: f_verify_ramp_up(): fix RxLev / dBm mixup
Comparing RxLev and dBm values is comparing apples to oranges. It's
just a lucky coincidence that fake_trx is using RF path loss value of
110 dB, which is also the offset between RxLev and dBm.
* Add `mp_rf_path_loss` matching the default value (110 dB) in fake_trx.
* Add `f_bts_max_rx_level_dbm()` calculating the expected Rx power level.
* Apply `rxlev2dbm()` on `l1_dl.dl_info.rx_level` whenever needed.
* Clarify the units in verdict / logging messages.
Change-Id: I818d18d6e0711247b73ee1f336133e2ed3f6e2cb
Related: OS#6939
---
M bts/BTS_Tests.ttcn
1 file changed, 52 insertions(+), 44 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/22/42022/1
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 0fd2cff..3942ad1 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -115,6 +115,7 @@
integer mp_ms_power_level_exp := 7;
integer mp_bts_tx_nom_pwr_exp := 50; /* Expected Tx Nominal Output Power of the BTS, in dBm */
integer mp_bts_tx_pwr_att_exp := 20; /* Expected Tx Power attenuation wrt to Tx Nominal Output Power, in dB */
+ integer mp_rf_path_loss := 110; /* RF path loss, in dB */
integer mp_ms_actual_ta_exp := 0;
integer mp_timing_offset_256syms_exp := 512;
integer mp_uplink_power_target := -75;
@@ -2751,16 +2752,21 @@
f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
}
+/* calculate max. Rx power level (in dBm) expected on the Um interface */
+private function f_bts_max_rx_level_dbm() return integer {
+ return mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp - mp_rf_path_loss;
+}
+
/* Wait until the BTS has reached full tx power (nominal tx power minus configured attenuation) */
-private function f_wait_ramp_up() runs on ConnHdlr return integer {
+private function f_wait_ramp_up() runs on ConnHdlr {
var L1ctlMessage l1_dl;
- var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
timer Tup := 10.0;
Tup.start;
alt {
[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
- var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+ log("BCCH RxLev ", rx_lvl, " dBm");
if (rx_lvl != max_rx_lvl) {
repeat;
@@ -2769,11 +2775,10 @@
}
[] L1CTL.receive { repeat; }
[] Tup.timeout {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Didn't reach full power ", max_rx_lvl));
+ setverdict(fail, "Didn't reach full power ", max_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
- return max_rx_lvl;
}
/* verify BTS ramps power up to full tx power (nominal tx power minus configured attenuation) */
@@ -2781,37 +2786,37 @@
var L1ctlMessage l1_dl;
var integer initial_rx_lvl := -1;
var integer last_rx_lvl := -1;
- var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp;
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
timer T := 2.0;
alt {
[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
- var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+ log("BCCH RxLev ", rx_lvl, " dBm");
if (initial_rx_lvl == -1) {
initial_rx_lvl := rx_lvl;
last_rx_lvl := rx_lvl;
/* Expect a somehow low value during first received messages */
if (initial_rx_lvl >= max_rx_lvl / 2) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected high initial tx power during ramp up: ",
- initial_rx_lvl , ", full power is ", max_rx_lvl));
+ setverdict(fail, "Detected high initial Tx power during ramp up: ",
+ initial_rx_lvl , " dBm (full power is ", max_rx_lvl, " dBm)");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
/* received Rx level bigger than maximum allowed power by CN */
if (rx_lvl > max_rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power higher than full power: ",
- rx_lvl , " > ", max_rx_lvl));
+ setverdict(fail, "Detected Tx power higher than full power: ",
+ rx_lvl , " > ", max_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
/* Make sure it never decreases, since we are rumping up */
if (last_rx_lvl > rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power decrease during ramp up: ",
- last_rx_lvl , " -> ", rx_lvl));
+ setverdict(fail, "Detected Tx power decrease during ramp up: ",
+ last_rx_lvl , " -> ", rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
if (rx_lvl == max_rx_lvl and not T.running) {
@@ -2830,11 +2835,11 @@
/* We didn't increase tx power during ramp up */
if (initial_rx_lvl < last_rx_lvl) {
- log("Tx power increased during ramp up: ", initial_rx_lvl , " -> ", last_rx_lvl);
+ log("Tx power increased during ramp up: ", initial_rx_lvl , " -> ", last_rx_lvl, " dBm");
} else {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("No Tx power increase during whole ramp up: ",
- initial_rx_lvl , " -> ", last_rx_lvl));
+ setverdict(fail, "No Tx power increase during whole ramp up: ",
+ initial_rx_lvl , " -> ", last_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
@@ -2847,21 +2852,21 @@
Tdown.start;
alt {
[] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
- var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ var integer rx_lvl := rxlev2dbm(l1_dl.dl_info.rx_level);
+ log("BCCH RxLev ", rx_lvl, " dBm");
/* received Rx level bigger than maximum allowed power by CN */
if (rx_lvl > max_rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power higher than full power: ",
- rx_lvl , " > ", max_rx_lvl));
+ setverdict(fail, "Detected Tx power higher than full power: ",
+ rx_lvl , " > ", max_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
/* Make sure it never increases, since we are rumping down */
if (last_rx_lvl < rx_lvl) {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("Detected Tx power increase during ramp up: ",
- last_rx_lvl , " -> ", rx_lvl));
+ setverdict(fail, "Detected Tx power increase during ramp down: ",
+ last_rx_lvl , " -> ", rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
last_rx_lvl := rx_lvl;
@@ -2877,16 +2882,16 @@
/* We didn't increase tx power during ramp down */
if (max_rx_lvl > last_rx_lvl) {
- log("Tx power decreased during ramp down: ", max_rx_lvl , " -> ", last_rx_lvl);
+ log("Tx power decreased during ramp down: ", max_rx_lvl , " -> ", last_rx_lvl, " dBm");
} else {
- Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
- log2str("No Tx power decrease during whole ramp down: ",
- max_rx_lvl , " -> ", last_rx_lvl));
+ setverdict(fail, "No Tx power decrease during whole ramp down: ",
+ max_rx_lvl , " -> ", last_rx_lvl, " dBm");
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
}
/* verify BTS power down to rx_level 0 without ramping */
-private function f_verify_power_down(integer max_rx_lvl) runs on ConnHdlr {
+private function f_verify_power_down(GsmRxLev max_rx_lvl) runs on ConnHdlr {
var L1ctlMessage l1_dl;
var boolean first_data_ind := true;
@@ -2896,7 +2901,7 @@
[first_data_ind == true] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
first_data_ind := false;
var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ log("BCCH RxLev ", rx_lvl);
/* The first data indication could still have the original power level */
if (rx_lvl != 0 and rx_lvl != max_rx_lvl) {
@@ -2908,7 +2913,7 @@
}
[first_data_ind == false] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
var GsmRxLev rx_lvl := l1_dl.dl_info.rx_level;
- log("Received rx_level=", rx_lvl);
+ log("BCCH RxLev ", rx_lvl);
/* Expect immediate power off so either rx_level == 0 or no report at all
because TRX was shut down already */
@@ -2953,11 +2958,13 @@
RSL.clear;
/* Wait until BTS is started and at full power */
- var integer max_rx_lvl := f_wait_ramp_up();
- log("Reached nominal level ", max_rx_lvl, ", shutting down OML link");
+ f_wait_ramp_up();
+
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
+ log("Reached nominal level ", max_rx_lvl, " dBm, shutting down OML link");
f_vty_transceive(BSCVTY, "drop bts connection 0 oml");
- f_verify_power_down(max_rx_lvl);
+ f_verify_power_down(dbm2rxlev(max_rx_lvl));
setverdict(pass);
}
@@ -2985,13 +2992,14 @@
RSL.clear;
/* Wait until BTS is started and at full power */
- var integer max_rx_lvl := f_wait_ramp_up();
- log("Reached nominal level ", max_rx_lvl, ", changing ADM state to LOCKED");
+ f_wait_ramp_up();
+ var integer max_rx_lvl := f_bts_max_rx_level_dbm();
+ log("Reached nominal level ", max_rx_lvl, " dBm, changing ADM state to LOCKED");
log("ADM STATE UNLOCKED->LOCKED");
f_vty_enter_cfg_trx(BSCVTY);
f_vty_transceive(BSCVTY, "rf_locked 1");
- f_verify_ramp_down(max_rx_lvl);
+ f_verify_ramp_down(dbm2rxlev(max_rx_lvl));
/* Let some time after we received 0dBm, then check we don't receive BCCH
* anymore because scheduler has stopped after ramping down */
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42022?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I818d18d6e0711247b73ee1f336133e2ed3f6e2cb
Gerrit-Change-Number: 42022
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/42017?usp=email )
Change subject: tests/db_upgrade: Use log stderr blocking-io
......................................................................
tests/db_upgrade: Use log stderr blocking-io
When --db-check is used, osmo-hlr actually becomes a synchronous
non-interactive program instead of a daemon.
In that case, we want to use blocking-io since it doesn't use the event
loop, so we want to flush all logging synchrnously before exiting.
Change-Id: Ic81eacbcc0432b81debc52c49fddc668c7a062b3
---
M tests/db_upgrade/osmo-hlr.cfg
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/17/42017/1
diff --git a/tests/db_upgrade/osmo-hlr.cfg b/tests/db_upgrade/osmo-hlr.cfg
index 7fb12c1..9f5ce42 100644
--- a/tests/db_upgrade/osmo-hlr.cfg
+++ b/tests/db_upgrade/osmo-hlr.cfg
@@ -1,4 +1,4 @@
-log stderr
+log stderr blocking-io
logging level db notice
logging print category-hex 0
logging print file 0
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/42017?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: Ic81eacbcc0432b81debc52c49fddc668c7a062b3
Gerrit-Change-Number: 42017
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/42018?usp=email )
Change subject: osmo-hlr: Force log stderr blocking-io in --db-check mode
......................................................................
osmo-hlr: Force log stderr blocking-io in --db-check mode
When --db-check is used, osmo-hlr actually becomes a synchronous
non-interactive program instead of a daemon.
In that case, we want to use blocking-io since it doesn't use the event
loop, so we want to flush all logging synchronously before exiting.
Usually the user will pass the same osmo-hlr.cfg when running with
--db-check, which means most probably won't be using blocking-io (as
expected when osmo-hlr runs in daemon mode).
Since --db-check converts osmo-hlr to a cmdline which exits after checks
are done, we actually want to force blocking-io in that case, so that
all content is written to stderr before finishing the process.
Change-Id: If5e505383086cc55d724c0d6891756c8d94fa267
---
M src/hlr.c
1 file changed, 5 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/18/42018/1
diff --git a/src/hlr.c b/src/hlr.c
index 0cfa09a..038a0a4 100644
--- a/src/hlr.c
+++ b/src/hlr.c
@@ -809,6 +809,11 @@
return rc;
}
+ if (cmdline_opts.db_check) {
+ /* Make sure to use synchronous logging to stderr in --db-check (non-interactive mode): */
+ log_target_file_switch_to_stream(osmo_stderr_target);
+ }
+
LOGP(DMAIN, LOGL_NOTICE, "hlr starting\n");
rc = rand_init();
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/42018?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: If5e505383086cc55d724c0d6891756c8d94fa267
Gerrit-Change-Number: 42018
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>