MGCP_Test: test LOOPBACK with implicit destination addr

Test what happens when the MGW gets a CRCX that creates a connection in
LOOPBACK mode but does not specify an RTP destination address. The MGW
is expected to deduct the destination address from the first incoming
RTP packet and loop it back to its originating address.

Change-Id: I7baf827fb0c3f33e13ccbaffd37ba0eb4e20c304
Related: OS#5123
This commit is contained in:
Philipp Maier 2021-05-07 23:06:07 +02:00 committed by laforge
parent e979c40e4b
commit 1ac1398d9f
1 changed files with 18 additions and 2 deletions

View File

@ -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());