fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33072 )
Change subject: BTS_Tests: add TC_data_rtp_tch* for CSD ......................................................................
BTS_Tests: add TC_data_rtp_tch* for CSD
As a quick hack, the new testcases are built upon f_TC_speech_rtp(). The RTP payloads are (temporarily) expected to contain CSD-modified frames with unpacked bits, e.g. 240 bytes (0x00/0x01) for TCH/F9.6.
Change-Id: I9a0dc0fcf722f862d8dcf04660d4448662210f44 Related: osmo-bts.git I08ffbf8e79ce76a586d61f5463890c6e72a6d9b9 Related: osmocom-bb.git I0d7389a9a5f7019b9316ab1c0115797ff54a0e41 Related: OS#1572, OS#4396 --- M bts/BTS_Tests.ttcn M bts/expected-results.xml 2 files changed, 169 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/72/33072/1
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index e715996..9838d1d 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -2641,6 +2641,20 @@ payload_len := f_amrft_payload_len(amr_ft) + 2; hdr := enc_RTP_AMR_Hdr(valueof(ts_RTP_AMR_Hdr(amr_ft, amr_ft, '1'B))); } + case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, (RSL_CMOD_CSD_T_14k4, RSL_CMOD_CSD_NT_14k5))) + { payload_len := 290; payload := ''O; pad := '01'O; } + case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, (RSL_CMOD_CSD_T_9k6, RSL_CMOD_CSD_NT_12k0))) + { payload_len := 4 * 60; payload := ''O; pad := '01'O; } + case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, (RSL_CMOD_CSD_T_4k8, RSL_CMOD_CSD_NT_6k0))) + { payload_len := 2 * 60; payload := ''O; pad := '01'O; } + case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_H, (RSL_CMOD_CSD_T_4k8, RSL_CMOD_CSD_NT_6k0))) + { payload_len := 4 * 60; payload := ''O; pad := '01'O; } + case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, (RSL_CMOD_CSD_T_2k4, RSL_CMOD_CSD_T_1k2, + RSL_CMOD_CSD_T_600, RSL_CMOD_CSD_T_1200_75))) + { payload_len := 2 * 36; payload := ''O; pad := '01'O; } + case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_H, (RSL_CMOD_CSD_T_2k4, RSL_CMOD_CSD_T_1k2, + RSL_CMOD_CSD_T_600, RSL_CMOD_CSD_T_1200_75))) + { payload_len := 2 * 36; payload := ''O; pad := '01'O; } case else { setverdict(fail, "Unhandled RSL channel mode := ", g_pars.chan_mode); Misc_Helpers.f_shutdown(__BFILE__, __LINE__); @@ -8447,6 +8461,132 @@ Misc_Helpers.f_shutdown(__BFILE__, __LINE__); }
+/* CSD channel tests */ +testcase TC_data_rtp_tchf144() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS1, TCH/F14.4 (14k5 radio interface rate), transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_T_14k4))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + /* TS1, TCH/F14.4 (14k5 radio interface rate), non-transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_NT_14k5))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); +} + +testcase TC_data_rtp_tchf96() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS1, TCH/F9.6 (12k radio interface rate), transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_T_9k6))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + /* TS1, TCH/F9.6 (12k radio interface rate), non-transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_NT_12k0))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); +} + +testcase TC_data_rtp_tchf48() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS1, TCH/F4.8 (6k radio interface rate), transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_T_4k8))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + /* TS1, TCH/F4.8 (6k radio interface rate), non-transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_NT_6k0))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); +} + +testcase TC_data_rtp_tchh48() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS1, TCH/H4.8 (6k radio interface rate), transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_H, RSL_CMOD_CSD_T_4k8))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + /* TS1, TCH/H4.8 (6k radio interface rate), non-transparent service */ + pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_H, RSL_CMOD_CSD_NT_6k0))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); +} + +testcase TC_data_rtp_tchf24() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS1, TCH/F2.4 (3k6 radio interface rate), transparent services only */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_T_2k4))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, RSL_CMOD_CSD_T_1k2))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); +} + +testcase TC_data_rtp_tchh24() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS1, TCH/H2.4 (3k6 radio interface rate), transparent services only */ + pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_H, RSL_CMOD_CSD_T_2k4))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), + ts_RSL_ChanMode_DATA(RSL_CHRT_TCH_H, RSL_CMOD_CSD_T_1k2))); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done; + + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); +} + + private function f_TC_early_immediate_assignment(charstring id) runs on ConnHdlr { var GsmFrameNumber fn; var ChannelDescription ch_desc; @@ -9047,6 +9187,13 @@ execute( TC_speech_osmux_tchf() ); execute( TC_speech_osmux_tchh() );
+ execute( TC_data_rtp_tchf144() ); + execute( TC_data_rtp_tchf96() ); + execute( TC_data_rtp_tchf48() ); + execute( TC_data_rtp_tchh48() ); + execute( TC_data_rtp_tchf24() ); + execute( TC_data_rtp_tchh24() ); + execute( TC_early_immediate_assignment() );
execute( TC_acch_overpower_rxqual_thresh() ); diff --git a/bts/expected-results.xml b/bts/expected-results.xml index f559132..8f3ac5b 100644 --- a/bts/expected-results.xml +++ b/bts/expected-results.xml @@ -180,6 +180,12 @@ <testcase classname='BTS_Tests' name='TC_speech_rtp_tchh' time='MASKED'/> <testcase classname='BTS_Tests' name='TC_speech_osmux_tchf' time='MASKED'/> <testcase classname='BTS_Tests' name='TC_speech_osmux_tchh' time='MASKED'/> + <testcase classname='BTS_Tests' name='TC_data_rtp_tchf144' time='MASKED'/> + <testcase classname='BTS_Tests' name='TC_data_rtp_tchf96' time='MASKED'/> + <testcase classname='BTS_Tests' name='TC_data_rtp_tchf48' time='MASKED'/> + <testcase classname='BTS_Tests' name='TC_data_rtp_tchh48' time='MASKED'/> + <testcase classname='BTS_Tests' name='TC_data_rtp_tchf24' time='MASKED'/> + <testcase classname='BTS_Tests' name='TC_data_rtp_tchh24' time='MASKED'/> <testcase classname='BTS_Tests' name='TC_early_immediate_assignment' time='MASKED'/> <testcase classname='BTS_Tests' name='TC_acch_overpower_rxqual_thresh' time='MASKED'/> <testcase classname='BTS_Tests' name='TC_acch_overpower_rxqual_thresh_dtx' time='MASKED'/>