mgw: Fix logic in test TC_two_crcx_mdcx_and_rtp

rtpem should be set to BIDIR at the same time where MDCX "sendrecv" is
sent, otherwise if MGW sends us RTP packets (because we set the conn to
sendrecv) they will be counted incorrectly in
stats[0].num_pkts_rx_err_disabled.

This issue doesn't trigger in current code because the MGW doesn't know
anyway the remote IP address of the other connection until an MDCX is
sent to it. However, if for whatever reason the IP address is known (for
instance because it is set during CRCX, which will be done in next
commits), then RTP messages would be sent and the error counter would
be > 0.

Change-Id: I653eb75439321f9a488dc56dca5d3fc5a8811547
This commit is contained in:
Pau Espin 2020-09-07 18:42:04 +02:00 committed by pespin
parent 71387aac71
commit 89c76d2102
1 changed files with 13 additions and 14 deletions

View File

@ -1754,12 +1754,12 @@ module MGCP_Test {
f_sleep(0.5);
stats[0] := f_rtpem_stats_get(RTPEM[0]);
if (stats[0].num_pkts_rx_err_disabled != 0) {
setverdict(fail, "received packets from MGW on recvonly connection");
setverdict(fail, "received packets from MGW on recvonly connection 0");
mtc.stop;
}
stats[1] := f_rtpem_stats_get(RTPEM[1]);
if (stats[1].num_pkts_rx_err_disabled != 0) {
setverdict(fail, "received packets from MGW on recvonly connection");
setverdict(fail, "received packets from MGW on recvonly connection 1");
mtc.stop;
}
@ -1768,40 +1768,39 @@ module MGCP_Test {
f_sleep(1.0);
stats[0] := f_rtpem_stats_get(RTPEM[0]);
if (stats[0].num_pkts_rx_err_disabled != 0) {
setverdict(fail, "received packets from MGW on recvonly connection");
setverdict(fail, "received packets from MGW on recvonly connection 0");
mtc.stop;
}
stats[1] := f_rtpem_stats_get(RTPEM[1]);
if (stats[1].num_pkts_rx_err_disabled != 0) {
setverdict(fail, "received packets from MGW on recvonly connection");
setverdict(fail, "received packets from MGW on recvonly connection 1");
mtc.stop;
}
/* The first leg will now be switched into bidirectional
* mode, but we do not expect any data comming back yet. */
f_rtpem_mode(RTPEM[0], RTPEM_MODE_BIDIR);
stats[1] := f_rtpem_stats_get(RTPEM[1]);
num_pkts_tx[1] := stats[1].num_pkts_tx;
f_flow_modify(RTPEM[0], ep, call_id, "sendrecv", flow[0]);
f_sleep(0.5);
stats[0] := f_rtpem_stats_get(RTPEM[0]);
if (stats[1].num_pkts_rx_err_disabled != 0) {
setverdict(fail, "received packets from MGW on recvonly connection");
if (stats[0].num_pkts_rx_err_disabled != 0) {
setverdict(fail, "received packets from MGW on recvonly connection 0");
mtc.stop;
}
stats[1] := f_rtpem_stats_get(RTPEM[1]);
if (stats[1].num_pkts_rx_err_disabled != 0) {
setverdict(fail, "received packets from MGW on recvonly connection");
setverdict(fail, "received packets from MGW on recvonly connection 1");
mtc.stop;
}
/* When the second leg is switched into bidirectional mode
* as well, then the MGW will connect the two together and
* we should see RTP streams passing through from both ends. */
f_rtpem_mode(RTPEM[0], RTPEM_MODE_BIDIR);
f_rtpem_mode(RTPEM[1], RTPEM_MODE_BIDIR);
stats[0] := f_rtpem_stats_get(RTPEM[0]);
num_pkts_tx[0] := stats[0].num_pkts_tx
stats[1] := f_rtpem_stats_get(RTPEM[1]);
num_pkts_tx[1] := stats[1].num_pkts_tx
num_pkts_tx[0] := stats[0].num_pkts_tx;
f_flow_modify(RTPEM[1], ep, call_id, "sendrecv", flow[1]);
f_sleep(2.0);
@ -1810,13 +1809,13 @@ module MGCP_Test {
temp := stats[0].num_pkts_tx - num_pkts_tx[0] - stats[1].num_pkts_rx;
if (temp > 3 or temp < -3) {
setverdict(fail, "number of packets not within normal parameters");
setverdict(fail, "number of packets not within normal parameters:", temp);
mtc.stop;
}
temp := stats[1].num_pkts_tx - num_pkts_tx[1] - stats[0].num_pkts_rx;
if (temp > 3 or temp < -3) {
setverdict(fail, "number of packets not within normal parameters");
setverdict(fail, "number of packets not within normal parameters:", temp);
mtc.stop;
}