bsc: properly test various bts.N.chreq:* counters

Related: SYS#4878
Depends: I1fde77d5d5920093ab037184eb3518876804353d (osmo-bsc)
Change-Id: I17a7702b151ac03fd9f7ecd6927ef42133aad953
This commit is contained in:
Neels Hofmeyr 2021-11-29 16:00:17 +01:00 committed by neels
parent 4dec8cc384
commit 734b1a3950
1 changed files with 75 additions and 5 deletions

View File

@ -1279,7 +1279,57 @@ testcase TC_chan_act_noreply() runs on test_CT {
f_shutdown_helper();
}
/* verify if the "chreq:total" counter increments as expected */
const CounterNameVals counternames_bts_chreq := {
{ "chreq:total", 0 },
{ "chreq:attempted_emerg", 0 },
{ "chreq:attempted_call", 0 },
{ "chreq:attempted_location_upd", 0 },
{ "chreq:attempted_pag", 0 },
{ "chreq:attempted_pdch", 0 },
{ "chreq:attempted_other", 0 },
{ "chreq:attempted_unknown", 0 },
{ "chreq:successful", 0 },
{ "chreq:successful_emerg", 0 },
{ "chreq:successful_call", 0 },
{ "chreq:successful_location_upd", 0 },
{ "chreq:successful_pag", 0 },
{ "chreq:successful_pdch", 0 },
{ "chreq:successful_other", 0 },
{ "chreq:successful_unknown", 0 },
{ "chreq:no_channel", 0 },
{ "chreq:max_delay_exceeded", 0 }
};
/* verify the "chreq:*" counters */
private function f_chan_act_counter(OCT1 ra, charstring chreq_ctr_suffix) runs on test_CT
{
var GsmFrameNumber fn := 23;
f_logp(BSCVTY, "f_chan_act_counter(" & chreq_ctr_suffix & ")");
var RSL_Message rx_rsl;
f_ipa_tx(0, ts_RSL_CHAN_RQD(ra, fn));
rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
f_ctrs_bts_add(0, "chreq:total");
f_ctrs_bts_add(0, "chreq:attempted_" & chreq_ctr_suffix);
f_ctrs_bts_verify();
f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10));
rx_rsl := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));
f_ctrs_bts_add(0, "chreq:successful");
f_ctrs_bts_add(0, "chreq:successful_" & chreq_ctr_suffix);
f_ctrs_bts_verify();
/* test is done, release RSL Conn Fail Ind to clean up */
f_ipa_tx(0, ts_RSL_CONN_FAIL_IND(chan_nr, RSL_ERR_RADIO_LINK_FAIL));
rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), 10.0);
f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(chan_nr));
f_sleep(1.0);
}
testcase TC_chan_act_counter() runs on test_CT {
var BSSAP_N_UNITDATA_ind ud_ind;
var integer chreq_total;
@ -1287,10 +1337,30 @@ testcase TC_chan_act_counter() runs on test_CT {
f_init(1);
chreq_total := f_ctrl_get_ratectr_abs(IPA_CTRL, "bts", 0, "chreq:total");
IPA_RSL[0].send(ts_ASP_RSL_UD(ts_RSL_CHAN_RQD('23'O, 23)));
rsl_unused := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
f_ctrl_get_exp_ratectr_abs(IPA_CTRL, "bts", 0, "chreq:total", chreq_total+1);
f_vty_allow_emerg_bts(true, 0);
f_ctrs_bts_init(1, counternames_bts_chreq);
/* emergency call: RA & 0xe0 == 0xa0 --> CHREQ_T_EMERG_CALL */
f_chan_act_counter('a3'O, "emerg");
/* voice TCH/H: RA & 0xf0 == 0x40 --> CHREQ_T_VOICE_CALL_TCH_H */
f_chan_act_counter('43'O, "call");
/* LU: RA & 0xf0 == 0x00 --> CHREQ_T_LOCATION_UPD */
f_chan_act_counter('03'O, "location_upd");
/* Paging: RA & 0xf0 == 0x20 --> CHREQ_T_PAG_R_TCH_F */
f_chan_act_counter('23'O, "pag");
/* Paging: RA & 0xf0 == 0x30 --> CHREQ_T_PAG_R_TCH_FH */
f_chan_act_counter('33'O, "pag");
/* LU: RA & 0xfc == 0x78 --> CHREQ_T_PDCH_TWO_PHASE */
/* no PCU, so PDCH not allowed. Skip this test for now. */
/* f_chan_act_counter('7b'O, "pdch"); */
/* LU: RA & 0xf0 == 0x10 --> CHREQ_T_SDCCH */
f_chan_act_counter('13'O, "other");
f_shutdown_helper();
}