diff --git a/mgw/MGCP_Test.ttcn b/mgw/MGCP_Test.ttcn index f6dfe57e3..c4f97a803 100644 --- a/mgw/MGCP_Test.ttcn +++ b/mgw/MGCP_Test.ttcn @@ -1693,7 +1693,7 @@ module MGCP_Test { /* Create one connection in loopback mode, test if the RTP packets are * actually reflected */ - testcase TC_one_crcx_loopback_rtp() runs on dummy_CT { + function f_TC_one_crcx_loopback_rtp(boolean one_phase := true) runs on dummy_CT { var RtpFlowData flow; var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "1@" & c_mgw_domain; var MgcpCallId call_id := '1225'H; @@ -1702,7 +1702,7 @@ module MGCP_Test { f_init(ep); flow := valueof(t_RtpFlow(mp_local_ipv4, mp_remote_ipv4, 111, "GSM-HR-08/8000/1")); flow.em.portnr := 10000; - f_flow_create(RTPEM[0], ep, call_id, "loopback", flow); + f_flow_create(RTPEM[0], ep, call_id, "loopback", flow, one_phase := one_phase); f_rtpem_mode(RTPEM[0], RTPEM_MODE_BIDIR); f_sleep(1.0); @@ -1722,6 +1722,21 @@ module MGCP_Test { setverdict(pass); } + /* Create one connection in loopback mode, test if the RTP packets are + * actually reflected */ + testcase TC_one_crcx_loopback_rtp() runs on dummy_CT { + f_TC_one_crcx_loopback_rtp(one_phase := true) + } + + /* Same as above, but we will intenionally not tell the MGW where to + * send the outgoing traffic. The connection is still created in + * loopback mode, so the MGW should take the originating address from + * the incoming RTP packet and send it back to the source */ + testcase TC_one_crcx_loopback_rtp_implicit() runs on dummy_CT { + f_TC_one_crcx_loopback_rtp(one_phase := false) + } + + function f_TC_two_crcx_and_rtp(boolean bidir, charstring codec_name_a, integer pt_a, charstring codec_name_b, integer pt_b) runs on dummy_CT { var RtpFlowData flow[2]; @@ -2426,6 +2441,7 @@ module MGCP_Test { execute(TC_one_crcx_receive_only_rtp()); execute(TC_one_crcx_loopback_rtp()); + execute(TC_one_crcx_loopback_rtp_implicit()); execute(TC_two_crcx_and_rtp()); execute(TC_two_crcx_and_rtp_bidir()); execute(TC_two_crcx_diff_pt_and_rtp());