BTS_Tests: introduce TC_speech_no_rtp_{tchf,tchh}

The purpose of these new test cases is to demonstrate a problem
described in OS#4823: the IUT sends *dummy bursts* in absence of
MT RTP frames, so on the MS side it looks like RF failures.

It's not yet clear what needs to be sent by the BTS in this kind
of situation, but at least we can verify that whatever is sent
can be decoded on the MS side without CRC errors.

Change-Id: I620ea84ae92c976a62c1f8334ec14a2a7685aa21
Related: OS#4823
This commit is contained in:
Vadim Yanitskiy 2020-10-21 03:46:18 +07:00 committed by laforge
parent 7b1e44f791
commit 5fa8561b99
1 changed files with 64 additions and 0 deletions

View File

@ -7072,6 +7072,67 @@ testcase TC_ms_pwr_ctrl_pf_ewma() runs on test_CT {
Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
private function f_TC_speech_no_rtp(charstring id) runs on ConnHdlr {
var template L1ctlDlMessage tr_bad_frame;
var L1ctlDlMessage l1_dl;
timer T := 8.0;
f_l1_tune(L1CTL);
RSL.clear;
f_est_dchan();
/* There may be a few errors right after the channel activation */
f_sleep(2.0); /* ... so let's give the L1 some time to stabilize */
L1CTL.clear;
/* A universal template for bad Downlink frame: {DATA,TRAFFIC}.ind */
tr_bad_frame := tr_L1CTL_TRAFFIC_IND(g_chan_nr, tr_RslLinkID_DCCH(0));
tr_bad_frame.header.msg_type := (L1CTL_DATA_IND, L1CTL_TRAFFIC_IND);
tr_bad_frame.dl_info.fire_crc := (1..255); /* != 0 */
tr_bad_frame.payload := ?;
T.start;
alt {
/* OS#4823: DATA.ind or TRAFFIC.ind with bad CRC most likely means that
* the IUT is sending *dummy bursts*, so the L1 fails to decode them. */
[] L1CTL.receive(tr_bad_frame) -> value l1_dl {
setverdict(fail, "Received {DATA,TRAFFIC}.ind with bad CRC: ", l1_dl);
}
[] as_l1_sacch();
[] L1CTL.receive { repeat; }
[] T.timeout {
/* We're done, break the loop */
setverdict(pass);
}
}
f_rsl_chan_deact();
f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
}
testcase TC_speech_no_rtp_tchf() runs on test_CT {
var ConnHdlr vc_conn;
var ConnHdlrPars pars;
f_init();
/* TS1, TCH/F, V1 (FR codec) */
pars := valueof(t_Pars(ts_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1)));
vc_conn := f_start_handler(refers(f_TC_speech_no_rtp), pars);
vc_conn.done;
}
testcase TC_speech_no_rtp_tchh() runs on test_CT {
var ConnHdlr vc_conn;
var ConnHdlrPars pars;
f_init();
/* TS5, TCH/H, V1 (HR codec) */
pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1)));
vc_conn := f_start_handler(refers(f_TC_speech_no_rtp), pars);
vc_conn.done;
}
/* test generation of RLL ERR IND based on Um errors (TS 48.058 3.9) */
/* protocol error as per 44.006 */
/* link layer failure (repetition of I-frame N200 times without ACK */
@ -7259,6 +7320,9 @@ control {
execute( TC_ms_pwr_ctrl_constant() );
execute( TC_ms_pwr_ctrl_pf_ewma() );
execute( TC_speech_no_rtp_tchf() );
execute( TC_speech_no_rtp_tchh() );
}