BTS: add a test case for RF RESource INDication

Change-Id: I78b6d8beffa5228a28231b75728e7aebdd3cb23c
Related: SYS#5313, OS#1569, OS#1866
This commit is contained in:
Vadim Yanitskiy 2021-06-04 18:46:06 +02:00
parent 8ebf19cfdf
commit 98c4a1a3b9
1 changed files with 67 additions and 0 deletions

View File

@ -119,6 +119,17 @@ modulepar {
TrxPars mp_trx_pars; /* see BTS_Tests.default */
/* default Training Sequence Code */
GsmTsc mp_tsc_def := 7;
/* Default interference boundaries in osmo-bsc (in dBm):
* 0(-85) X1(-91) X2(-97) X3(-103) X4(-109) X5(-115)
* Default interference level reported by fake_trx.py:
* 0: -109 >= -85 dBm (no)
* X1: -109 >= -91 dBm (no)
* X2: -109 >= -97 dBm (no)
* X3: -109 >= -103 dBm (no)
* X4: -109 >= -109 dBm (yes)
* X5: -109 >= -115 dBm (no)
* So all channels should be in band 4. */
uint3_t mp_interf_band := 4;
}
type record of RslChannelNr ChannelNrs;
@ -6776,6 +6787,61 @@ testcase TC_rsl_modify_encr() runs on test_CT {
f_testmatrix_each_chan(pars, refers(f_TC_rsl_modify_encr));
}
/* Verify RF RESource INDication messages (periodically sent over the RSL) */
private function f_TC_rsl_rf_resource_ind(template RSL_ResourceInfo info)
runs on test_CT {
const IpaStreamId sid := IPAC_PROTO_RSL_TRX0;
var ASP_RSL_Unitdata ud;
timer T;
/* Intave is 6 SACCH periods by default */
var float Tval := int2float(6 * 480) / 1000.0 + 0.5;
T.start(Tval);
alt {
[] RSL_CCHAN.receive(tr_ASP_RSL_UD(tr_RSL_RF_RES_IND(info), sid)) {
setverdict(pass);
}
[] RSL_CCHAN.receive(tr_ASP_RSL_UD(tr_RSL_RF_RES_IND(?), sid)) -> value ud {
setverdict(fail, "RF RESource INDication mismatch: ", ud.rsl);
}
[] RSL_CCHAN.receive { repeat; }
[] T.timeout {
Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
"Timeout waiting for RF RESource INDication");
}
}
}
testcase TC_rsl_rf_resource_ind() runs on test_CT {
var RSL_ResourceInfo info := { };
f_init(trx_nr := 0);
f_init_l1ctl();
f_l1_tune(L1CTL);
/* g_AllChannels contains all logical channels */
for (var integer i := 0; i < lengthof(g_AllChannels); i := i + 1) {
var RslChannelNr chan_nr := g_AllChannels[i];
/* FIXME: osmo-bts does not report for Osmocom style dynamic timeslots */
if (mp_trx_pars[0].ts[chan_nr.tn].config == GSM_PCHAN_TCHH_TCHF_PDCH)
{ continue; }
info := info & { valueof(ts_RSL_ResourceInfoItem(chan_nr, mp_interf_band)) };
}
/* Align to the first interference report */
f_TC_rsl_rf_resource_ind(?);
/* Test 4 consecutive messages */
for (var integer i := 0; i < 4; i := i + 1) {
f_TC_rsl_rf_resource_ind(info);
}
Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
/* Test unencrypted channel activation followed by explicit ENCR CMD later */
private function f_TC_encr_cmd(charstring id) runs on ConnHdlr {
/* L3 payload doesn't matter, as it is passed transparently */
@ -7356,6 +7422,7 @@ control {
execute( TC_rsl_chan_initial_ms_pwr() );
execute( TC_rsl_chan_initial_ta() );
execute( TC_rsl_modify_encr() );
execute( TC_rsl_rf_resource_ind() );
execute( TC_conn_fail_crit() );
execute( TC_paging_imsi_80percent() );
execute( TC_paging_tmsi_80percent() );