aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bts/BTS_Tests.ttcn64
1 files changed, 64 insertions, 0 deletions
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index cc384332..09a7a15b 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -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() );
}