osmith has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38777?usp=email )
Change subject: mgw: fix RTP packets received while RX disabled
......................................................................
mgw: fix RTP packets received while RX disabled
Fix the race condition causing tests to abort with:
1 RTP packets received while RX was disabled
Fixes: OS#3849
Change-Id: Ieaf5440a693448cdeeaac7f47e6110cb480bff5f
---
M mgw/MGCP_Test.ttcn
1 file changed, 27 insertions(+), 14 deletions(-)
Approvals:
osmith: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/mgw/MGCP_Test.ttcn b/mgw/MGCP_Test.ttcn
index d341022..84e5943 100644
--- a/mgw/MGCP_Test.ttcn
+++ b/mgw/MGCP_Test.ttcn
@@ -656,13 +656,14 @@
}
/* Delete an existing RTP flow */
- function f_flow_delete(RTPEM_CTRL_PT pt, template MgcpEndpoint ep := omit, template
MgcpCallId call_id := omit)
+ function f_flow_delete(RTPEM_CTRL_PT pt, template MgcpEndpoint ep := omit, template
MgcpCallId call_id := omit,
+ RtpemMode mode := RTPEM_MODE_NONE)
runs on dummy_CT {
var template MgcpCommand cmd;
var MgcpResponse resp;
/* Switch off RTP flow */
- f_rtpem_mode(pt, RTPEM_MODE_NONE);
+ f_rtpem_mode(pt, mode);
/* Delete connection on MGW (if needed) */
if (isvalue(call_id) and isvalue(ep)) {
@@ -1672,8 +1673,9 @@
f_osmuxem_stats_err_check(stats_osmux);
/* Tear down */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete_osmux(OsmuxEM, ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
setverdict(pass);
}
@@ -2009,8 +2011,9 @@
f_sleep(1.0);
- f_flow_delete(RTPEM[1]);
+ f_flow_delete(RTPEM[1], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[0], ep, call_id);
+ f_rtpem_mode(RTPEM[1], RTPEM_MODE_NONE); /* OS#3849 */
stats[0] := f_rtpem_stats_get(RTPEM[0]);
stats[1] := f_rtpem_stats_get(RTPEM[1]);
@@ -2146,8 +2149,9 @@
f_rtpem_stats_err_check(stats[1]);
/* Tear down */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
setverdict(pass);
}
@@ -2210,8 +2214,9 @@
/* Stop transmitting packets and tear down the flows */
f_rtpem_mode(RTPEM[2], RTPEM_MODE_NONE);
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
stats[0] := f_rtpem_stats_get(RTPEM[0]);
stats[1] := f_rtpem_stats_get(RTPEM[1]);
@@ -2273,8 +2278,9 @@
f_sleep(1.0);
/* Terminate call */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
stats[0] := f_rtpem_stats_get(RTPEM[0]);
stats[1] := f_rtpem_stats_get(RTPEM[1]);
@@ -2317,8 +2323,9 @@
f_rtpem_mode(RTPEM[0], RTPEM_MODE_BIDIR);
f_rtpem_mode(RTPEM[1], RTPEM_MODE_BIDIR);
f_sleep(1.0);
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
stats[0] := f_rtpem_stats_get(RTPEM[0]);
stats[1] := f_rtpem_stats_get(RTPEM[1]);
@@ -2404,8 +2411,9 @@
f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE);
/* Remove RTP flows and check statistics */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
/* Check for errors */
stats[0] := f_rtpem_stats_get(RTPEM[0]);
@@ -2496,8 +2504,9 @@
f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE);
/* Remove RTP flows and check statistics */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
/* Check for errors */
stats[0] := f_rtpem_stats_get(RTPEM[0]);
@@ -2958,8 +2967,9 @@
/* Tear down */
if (tear_down_rtp) {
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
}
setverdict(pass);
}
@@ -3077,8 +3087,9 @@
}
/* Tear down */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
setverdict(pass);
}
testcase TC_two_crcx_mdcx_and_iuup_mdcx_recvonly() runs on dummy_CT {
@@ -3215,8 +3226,9 @@
}
/* Tear down */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
setverdict(pass);
}
testcase TC_two_crcx_mdcx_and_iuup_rtp_mdcx_recvonly() runs on dummy_CT {
@@ -3317,8 +3329,9 @@
}
/* Tear down */
- f_flow_delete(RTPEM[0]);
+ f_flow_delete(RTPEM[0], mode := RTPEM_MODE_RXONLY);
f_flow_delete(RTPEM[1], ep, call_id);
+ f_rtpem_mode(RTPEM[0], RTPEM_MODE_NONE); /* OS#3849 */
setverdict(pass);
}
testcase TC_two_crcx_mdcx_and_iuup_rtp_mdcx_to_iuup() runs on dummy_CT {
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38777?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ieaf5440a693448cdeeaac7f47e6110cb480bff5f
Gerrit-Change-Number: 38777
Gerrit-PatchSet: 2
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>