msc: Introduce Osmux infra and one test for osmo-msc

Change-Id: Ibcb82d1a2d570c6c0ad0c3b6504bffe2244eccd9
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index b64b872..0d6083e 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -275,7 +275,7 @@
 	}
 }
 
-function f_init(integer num_bsc := 1, boolean sgsap := false, boolean gsup := true) runs on MTC_CT {
+function f_init(integer num_bsc := 1, boolean sgsap := false, boolean gsup := true, boolean osmux := false) runs on MTC_CT {
 
 	if (g_initialized == true) {
 		return;
@@ -288,7 +288,9 @@
 
 	for (var integer i := 0; i < num_bsc; i := i + 1) {
 		if (isbound(mp_bssap_cfg[i])) {
-			f_ran_adapter_init(g_bssap[i], mp_bssap_cfg[i], "MSC_Test_" & int2str(i), BSC_RanOps);
+			var RanOps ranops := BSC_RanOps;
+			ranops.use_osmux := osmux;
+			f_ran_adapter_init(g_bssap[i], mp_bssap_cfg[i], "MSC_Test_" & int2str(i), ranops);
 			f_ran_adapter_start(g_bssap[i]);
 		} else {
 			testcase.stop("missing BSSAP configuration");
@@ -334,7 +336,7 @@
 
 /* FIXME: move into BSC_ConnectionHandler? */
 function f_init_pars(integer imsi_suffix, boolean sgsap := false, boolean gsup := true, integer ran_idx := 0,
-		     boolean ran_is_geran := true)
+		     boolean ran_is_geran := true, boolean use_osmux := false)
 runs on MTC_CT return BSC_ConnHdlrPars {
 	var BSC_ConnHdlrNetworkPars net_pars := {
 		kc_support := '0A'O,	/* A5/1 and A5/3 enabled */
@@ -364,7 +366,8 @@
 		gsup_enable := gsup,
 		ran_idx := ran_idx,
 		use_umts_aka := false,
-		ran_is_geran := ran_is_geran
+		ran_is_geran := ran_is_geran,
+		use_osmux := use_osmux
 	};
 	if (not ran_is_geran) {
 		pars.use_umts_aka := true;
@@ -407,9 +410,9 @@
 	return vc_conn;
 }
 
-function f_start_handler(void_fn fn, integer imsi_suffix, integer ran_idx := 0, boolean ran_is_geran := true)
+function f_start_handler(void_fn fn, integer imsi_suffix, integer ran_idx := 0, boolean ran_is_geran := true, boolean use_osmux := false)
 runs on MTC_CT return BSC_ConnHdlr {
-	return f_start_handler_with_pars(fn, f_init_pars(imsi_suffix, ran_idx := ran_idx, ran_is_geran := ran_is_geran));
+	return f_start_handler_with_pars(fn, f_init_pars(imsi_suffix, ran_idx := ran_idx, ran_is_geran := ran_is_geran, use_osmux := use_osmux));
 }
 
 private function f_tc_lu_imsi_noauth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
@@ -1711,6 +1714,7 @@
 	cpars.bss_rtp_port := 1110;
 	cpars.mgcp_connection_id_bss := '10004'H;
 	cpars.mgcp_connection_id_mss := '10005'H;
+	cpars.use_osmux := pars.use_osmux;
 
 	/* Note: This is an optional parameter. When the call-agent (MSC) does
 	 * supply a full endpoint name this setting will be overwritten. */
@@ -1727,6 +1731,15 @@
 	vc_conn.done;
 }
 
+testcase TC_lu_and_mt_call_osmux() runs on MTC_CT {
+	var BSC_ConnHdlr vc_conn;
+	f_init(1, false, true, true);
+	f_vty_config(MSCVTY, "msc", "osmux on");
+
+	vc_conn := f_start_handler(refers(f_tc_lu_and_mt_call), 39, 0, true, true);
+	vc_conn.done;
+}
+
 /* Test MO Call SETUP with DTMF */
 private function f_tc_mo_setup_dtmf_dup(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	f_init_handler(pars);
@@ -5303,6 +5316,8 @@
 	execute( TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug() );
 	execute( TC_gsup_mt_multi_part_sms() );
 	execute( TC_mo_cc_bssmap_clear() );
+
+	execute( TC_lu_and_mt_call_osmux() );
 }