bsc: refuse VAMOS mode without BTS_FEAT_VAMOS
Change-Id: I73b8eb5e6073ae46b83bed9fddd4762861029a84
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index b07e693..889a64d 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -8579,6 +8579,99 @@
* is the info correct on delayed PCU (re)connect?
*/
+private function f_TC_refuse_mode_modif_to_vamos(charstring id) runs on MSC_ConnHdlr {
+ var PDU_BSSAP ass_cmd := f_gen_ass_req(g_pars.use_osmux);
+ var template PDU_BSSAP exp_compl := f_gen_exp_compl(g_pars.use_osmux);
+
+ /* puzzle together the ASSIGNMENT REQ for given codec[s] */
+ if (mp_bssap_cfg[0].transport == BSSAP_TRANSPORT_AoIP) {
+ ass_cmd.pdu.bssmap.assignmentRequest.codecList := g_pars.ass_codec_list;
+ exp_compl.pdu.bssmap.assignmentComplete.speechCodec.codecElements[0] :=
+ g_pars.ass_codec_list.codecElements[0];
+ if (isvalue(g_pars.expect_mr_s0_s7)) {
+ exp_compl.pdu.bssmap.assignmentComplete.speechCodec.codecElements[0].s0_7 :=
+ g_pars.expect_mr_s0_s7;
+ }
+ }
+ ass_cmd.pdu.bssmap.assignmentRequest.channelType :=
+ f_BSSMAP_chtype_from_codec(g_pars.ass_codec_list.codecElements[0]);
+ log("expecting ASS COMPL like this: ", exp_compl);
+
+ f_establish_fully(ass_cmd, exp_compl);
+
+ f_vty_transceive(BSCVTY, "vamos modify first");
+
+ var RSL_Message rsl;
+
+ timer T := 5.0;
+ T.start;
+ alt {
+ [] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr)) -> value rsl {
+ var PDU_ML3_NW_MS l3 := dec_PDU_ML3_NW_MS(rsl.ies[2].body.l3_info.payload);
+ log("Rx L3 from net: ", l3);
+ if (ischosen(l3.msgs.rrm.channelModeModify)) {
+ setverdict(fail, "Mode Modify to VAMOS succeeded even though BTS does not support VAMOS");
+ mtc.stop;
+ }
+ }
+ [] RSL.receive(tr_RSL_MODE_MODIFY_REQ(g_chan_nr, ?)) -> value rsl {
+ setverdict(fail, "Mode Modify to VAMOS succeeded even though BTS does not support VAMOS");
+ mtc.stop;
+ }
+ [] T.timeout {
+ /* The BTS does not exhibit BTS_FEAT_VAMOS, so no VAMOS related Mode Modify should happen. */
+ setverdict(pass);
+ }
+ }
+ T.stop;
+}
+
+/* The BSC does *not* indicate BTS_FEAT_VAMOS; make sure that a channel Mode Modify to VAMOS mode is refused by
+ * osmo-bsc. */
+testcase TC_refuse_mode_modif_to_vamos() runs on test_CT {
+ var TestHdlrParams pars := f_gen_test_hdlr_pars();
+ var MSC_ConnHdlr vc_conn;
+
+ f_init(1, true);
+ f_sleep(1.0);
+
+ pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
+ vc_conn := f_start_handler(refers(f_TC_refuse_mode_modif_to_vamos), pars);
+ vc_conn.done;
+ f_shutdown_helper();
+}
+
+/* The BSC does *not* indicate BTS_FEAT_VAMOS; make sure that a channel activation to VAMOS mode is refused by osmo-bsc.
+ */
+testcase TC_refuse_chan_act_to_vamos() runs on test_CT {
+ f_init_vty();
+
+ f_init(1, false);
+ f_sleep(1.0);
+
+ f_vty_transceive(BSCVTY, "bts 0 trx 0 timeslot 1 sub-slot 0 activate-vamos fr");
+
+ var ASP_RSL_Unitdata rx_rsl_ud;
+ timer T := 5.0;
+
+ T.start;
+ alt {
+ [] IPA_RSL[0].receive(tr_ASP_RSL_UD(?, IPAC_PROTO_RSL_TRX0)) -> value rx_rsl_ud {
+ if (rx_rsl_ud.rsl.msg_type == RSL_MT_CHAN_ACTIV) {
+ T.stop;
+ setverdict(fail, "CHANnel ACTivate in VAMOS mode succeeded even though BTS does not support VAMOS");
+ mtc.stop;
+ }
+ repeat;
+ }
+ [] T.timeout {
+ /* The BTS does not exhibit BTS_FEAT_VAMOS, so no VAMOS related CHANnel ACTivate should happen. */
+ setverdict(pass);
+ }
+ }
+}
+
+
control {
/* CTRL interface testing */
execute( TC_ctrl_msc_connection_status() );
@@ -8839,6 +8932,9 @@
}
execute( TC_no_msc() );
+
+ execute( TC_refuse_chan_act_to_vamos() );
+ execute( TC_refuse_mode_modif_to_vamos() );
}
}