aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-05-31 20:04:56 +0200
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-06-01 04:24:39 +0200
commit4c58c6a377261f8cb7f5a896774534b1a49ed07b (patch)
tree1d137cd87b8129bcf5ace9be34241cd667f1b888
parent7387813db044c7e869f1961af99fc1ed5fc16464 (diff)
[VAMOS] BTS: add MODE MODIFY test cases
-rw-r--r--bts/BTS_Tests_VAMOS.ttcn82
1 files changed, 82 insertions, 0 deletions
diff --git a/bts/BTS_Tests_VAMOS.ttcn b/bts/BTS_Tests_VAMOS.ttcn
index aa532dab..413892d0 100644
--- a/bts/BTS_Tests_VAMOS.ttcn
+++ b/bts/BTS_Tests_VAMOS.ttcn
@@ -233,6 +233,79 @@ testcase TC_vamos_chan_act_dyn_osmo_hvhh() runs on test_CT { /* TCH/F+TCH/H+PDCH
f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_act));
}
+private function f_TC_vamos_chan_mode_modify(charstring id)
+runs on ConnHdlr {
+ var RSL_IE tsc_ie := valueof(ts_RSL_IE_OsmoTSC);
+
+ /* CHANnel ACTIVation with Osmocom specific IEs */
+ f_rsl_chan_act(g_pars.chan_mode, more_ies := { tsc_ie });
+
+ /* If we're in signalling mode, modify to speech */
+ if (g_pars.chan_mode.spd_ind == RSL_SPDI_SIGN) {
+ g_pars.chan_mode.spd_ind := RSL_SPDI_SPEECH;
+ g_pars.chan_mode.coding_alg_rate := RSL_CMOD_SP_GSM1;
+ } else { /* ... or vice versa */
+ g_pars.chan_mode.spd_ind := RSL_SPDI_SIGN;
+ g_pars.chan_mode.coding_alg_rate := RSL_CMOD_NO_RESOURCE;
+ }
+
+ var RSL_Message rsl := valueof(ts_RSL_MODE_MODIFY_REQ(g_chan_nr, g_pars.chan_mode));
+ rsl.ies := rsl.ies & { tsc_ie };
+ RSL.send(rsl);
+
+ timer T := 1.0;
+ T.start;
+ alt {
+ [] RSL.receive(tr_RSL_MODE_MODIFY_ACK(g_chan_nr)) { setverdict(pass); }
+ [] RSL.receive(tr_RSL_MODE_MODIFY_NACK(g_chan_nr, ?)) {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+ "Rx MODE MODIFY NACK");
+ }
+ [] T.timeout {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+ "Timeout waiting for MODE MODIFY (N)ACK");
+ }
+ }
+
+ /* DEACTivate the channel */
+ f_rsl_chan_deact();
+ f_rslem_unregister(0, g_chan_nr);
+}
+
+/* VFF: V0(TCH/F) & V1(TCH/F), 2 channels total */
+testcase TC_vamos_chan_mode_modify_vff() runs on test_CT { /* TCH/F on TS1 */
+ var ChanNrModeTest test := valueof(ChanNrModeTestVFF(1));
+ f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_mode_modify));
+}
+testcase TC_vamos_chan_mode_modify_dyn_ipa_vff() runs on test_CT { /* TCH/F+PDCH on TS3 */
+ var ChanNrModeTest test := valueof(ChanNrModeTestVFF(3));
+ f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_mode_modify));
+}
+testcase TC_vamos_chan_mode_modify_dyn_osmo_vff() runs on test_CT { /* TCH/F+TCH/H+PDCH on TS4 */
+ var ChanNrModeTest test := valueof(ChanNrModeTestVFF(4));
+ f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_mode_modify));
+}
+
+/* VHH: V0(TCH/H0) & V1(TCH/H0) + V0(TCH/H1) & V1(TCH/H1), 4 channels total */
+testcase TC_vamos_chan_mode_modify_vhh() runs on test_CT {
+ var ChanNrModeTest test := valueof(ChanNrModeTestVHH(5));
+ f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_mode_modify)); /* TCH/H on TS5 */
+}
+testcase TC_vamos_chan_mode_modify_dyn_osmo_vhh() runs on test_CT { /* TCH/F+TCH/H+PDCH on TS4 */
+ var ChanNrModeTest test := valueof(ChanNrModeTestVHH(4));
+ f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_mode_modify));
+}
+
+/* HVHH: TCH/H0 + V0(TCH/H1) & V1(TCH/H1), 3 channels total (mixed) */
+testcase TC_vamos_chan_mode_modify_hvhh() runs on test_CT {
+ var ChanNrModeTest test := valueof(ChanNrModeTestHVHH(5));
+ f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_mode_modify)); /* TCH/H on TS5 */
+}
+testcase TC_vamos_chan_mode_modify_dyn_osmo_hvhh() runs on test_CT { /* TCH/F+TCH/H+PDCH on TS4 */
+ var ChanNrModeTest test := valueof(ChanNrModeTestHVHH(4));
+ f_TC_vamos_exec_async(test, refers(f_TC_vamos_chan_mode_modify));
+}
+
control {
/* CHANnel ACTIVation tests */
execute( TC_vamos_chan_act_vff() );
@@ -242,6 +315,15 @@ control {
execute( TC_vamos_chan_act_dyn_osmo_vff() );
execute( TC_vamos_chan_act_dyn_osmo_vhh() );
execute( TC_vamos_chan_act_dyn_osmo_hvhh() );
+
+ /* MODE MODIFY tests */
+ execute( TC_vamos_chan_mode_modify_vff() );
+ execute( TC_vamos_chan_mode_modify_vhh() );
+ execute( TC_vamos_chan_mode_modify_hvhh() );
+ execute( TC_vamos_chan_mode_modify_dyn_ipa_vff() );
+ execute( TC_vamos_chan_mode_modify_dyn_osmo_vff() );
+ execute( TC_vamos_chan_mode_modify_dyn_osmo_vhh() );
+ execute( TC_vamos_chan_mode_modify_dyn_osmo_hvhh() );
}
}