msc: Make TC_lu_and_mo_call succeed with osmo-mg enabled osmo-msc

This is for patch https://gerrit.osmocom.org/#/c/4980 in osmo-msc

Change-Id: Ieec52d5e0da776d35d6a473bd726b368af9d5c66
diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn
index 8ce1332..75871c5 100644
--- a/msc_tests/BSC_ConnectionHandler.ttcn
+++ b/msc_tests/BSC_ConnectionHandler.ttcn
@@ -285,6 +285,10 @@
 	PortNumber bss_rtp_port optional,		/* BSS Side RTP Port */
 	HostName mss_rtp_ip optional,			/* MSS Side RTP IP */
 	PortNumber mss_rtp_port optional,		/* MSS Side RTP Port */
+	HostName mgw_rtp_ip_bss,			/* BSS-facing MGW RTP IP */
+	PortNumber mgw_rtp_port_bss,			/* BSS-facing MGW RTP Port */
+	HostName mgw_rtp_ip_mss,			/* MSS-facing MGW RTP IP */
+	PortNumber mgw_rtp_port_mss,			/* MSS-facing MGW RTP Port */
 	uint7_t rtp_payload_type,			/* dynamic RTP payload type */
 	charstring rtp_sdp_format,			/* AMR/8000 or the like */
 
@@ -302,10 +306,14 @@
 	bearer_cap := valueof(ts_Bcap_voice),
 	mncc_callref := omit,
 	mncc_bearer_cap := valueof(ts_MNCC_bcap_voice),
-	bss_rtp_ip := "1.1.1.1",
-	bss_rtp_port := 0,//
+	bss_rtp_ip := "9.8.7.6",
+	bss_rtp_port := 9000,
 	mss_rtp_ip := omit,
 	mss_rtp_port := omit,
+	mgw_rtp_ip_bss := "1.1.1.1",
+	mgw_rtp_port_bss := 10000,
+	mgw_rtp_ip_mss := "1.1.1.1",
+	mgw_rtp_port_mss := 11000,
 	rtp_payload_type := 98,
 	rtp_sdp_format := "AMR/8000",
 	mgcp_call_id := omit,
@@ -342,13 +350,14 @@
 		MNCC.send(ts_MNCC_CALL_PROC_req(cpars.mncc_callref, cpars.mncc_bearer_cap));
 		BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(cpars.transaction_id)));
 		};
+	/* First MGCP CRCX (for BSS/RAN side) */
 	[] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
 		cpars.mgcp_call_id := f_MgcpCmd_extract_call_id(mgcp_cmd);
 		/* TODO: dynamic EP allocation case */
 		cpars.mgcp_ep := mgcp_cmd.line.ep;
-		var SDP_Message sdp := valueof(ts_SDP(cpars.bss_rtp_ip, cpars.bss_rtp_ip,
+		var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_rtp_ip_bss, cpars.mgw_rtp_ip_bss,
 							hex2str(cpars.mgcp_call_id), "42",
-							cpars.bss_rtp_port,
+							cpars.mgw_rtp_port_bss,
 							{ int2str(cpars.rtp_payload_type) },
 							{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
 										cpars.rtp_sdp_format)),
@@ -356,22 +365,37 @@
 		MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_bss, sdp));
 		}
 	}
+	/* Second MGCP CRCX (this time for MSS/CN side) */
+	MGCP.receive(tr_CRCX(cpars.mgcp_ep)) -> value mgcp_cmd {
+		var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_rtp_ip_mss, cpars.mgw_rtp_ip_mss,
+							hex2str(cpars.mgcp_call_id), "42",
+							cpars.mgw_rtp_port_mss,
+							{ int2str(cpars.rtp_payload_type) },
+							{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
+										cpars.rtp_sdp_format)),
+							  valueof(ts_SDP_ptime(20)) }));
+		MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_mss, sdp));
+	}
 
 	/* Alerting */
 	MNCC.send(ts_MNCC_ALERT_req(cpars.mncc_callref));
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id)));
 
-	alt {
-	/* FIXME: expect AoIP IP/Port to match what we returned in CRCX_ACK above */
-	[] BSSAP.receive(tr_BSSMAP_AssignmentReq) {
+	var BSSMAP_IE_AoIP_TransportLayerAddress tla_ass :=
+		valueof(ts_BSSMAP_IE_AoIP_TLA4(f_inet_addr(cpars.mgw_rtp_ip_bss),cpars.mgw_rtp_port_bss));
+	interleave {
+	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id))) {}
+	/* expect AoIP IP/Port to match what we returned in CRCX_ACK above */
+	[] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, tla_ass)) {
 		var BSSMAP_IE_AoIP_TransportLayerAddress tla;
 		tla := valueof(ts_BSSMAP_IE_AoIP_TLA4(f_inet_addr(cpars.bss_rtp_ip), cpars.bss_rtp_port));
 		BSSAP.send(ts_BSSMAP_AssignmentComplete(omit, tla));
 		}
 	}
 
-	/* Answer. This causes TCH assignment in case of "late assignment" */
-	MNCC.send(ts_MNCC_SETUP_COMPL_req(cpars.mncc_callref));
+	/* Answer. MNCC_SETUP_RSP -> CONNECT to MS; CONNECT_ACK from MS */
+	MNCC.send(ts_MNCC_SETUP_rsp(cpars.mncc_callref));
+	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CONNECT(cpars.transaction_id)));
+	BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT_ACK(cpars.transaction_id)));
 
 	f_sleep(3.0);