MGCP_Test: check payload type of received RTP packets
When an RTP packet is received, the payload type is not checked, so we will not detect if the MGW emits packets with a wrong payload type for some reason. - Introduce a statistics counter that counts packets with wrong PT - Update testcases so that they check for the statistics for wrong PT count. Change-Id: I83d4b04656a16ced624024245a2fcb7a0ad48a8a Related: OS#3384
This commit is contained in:
parent
9b0235b68d
commit
c290d7292e
|
@ -116,6 +116,8 @@ type record RtpemStats {
|
|||
integer num_pkts_rx_err_seq,
|
||||
/* number of packets received wrong timestamp */
|
||||
integer num_pkts_rx_err_ts,
|
||||
/* number of packets received wrong payload type */
|
||||
integer num_pkts_rx_err_pt,
|
||||
/* number of packets received during Rx disable */
|
||||
integer num_pkts_rx_err_disabled
|
||||
}
|
||||
|
@ -127,6 +129,7 @@ const RtpemStats c_RtpemStatsReset := {
|
|||
bytes_payload_rx := 0,
|
||||
num_pkts_rx_err_seq := 0,
|
||||
num_pkts_rx_err_ts := 0,
|
||||
num_pkts_rx_err_pt := 0,
|
||||
num_pkts_rx_err_disabled := 0
|
||||
}
|
||||
|
||||
|
@ -399,7 +402,11 @@ function f_main() runs on RTP_Emulation_CT
|
|||
/* process received RTCP/RTP if receiver enabled */
|
||||
[g_rx_enabled] RTP.receive(tr_rtp) -> value rx_rtp {
|
||||
//log("RX RTP: ", rx_rtp);
|
||||
|
||||
/* increment counters */
|
||||
if (rx_rtp.msg.rtp.payload_type != g_cfg.tx_payload_type) {
|
||||
g_stats_rtp.num_pkts_rx_err_pt := g_stats_rtp.num_pkts_rx_err_pt+1;
|
||||
}
|
||||
g_stats_rtp.num_pkts_rx := g_stats_rtp.num_pkts_rx+1;
|
||||
g_stats_rtp.bytes_payload_rx := g_stats_rtp.bytes_payload_rx +
|
||||
lengthof(rx_rtp.msg.rtp.data);
|
||||
|
|
|
@ -970,6 +970,9 @@ module MGCP_Test {
|
|||
if (stats.num_pkts_rx_err_ts != 0) {
|
||||
setverdict(fail);
|
||||
}
|
||||
if (stats.num_pkts_rx_err_pt != 0) {
|
||||
setverdict(fail);
|
||||
}
|
||||
if (stats.num_pkts_rx_err_disabled != 0) {
|
||||
setverdict(fail);
|
||||
}
|
||||
|
@ -1008,6 +1011,9 @@ module MGCP_Test {
|
|||
if (stats.num_pkts_rx_err_ts != 0) {
|
||||
setverdict(fail);
|
||||
}
|
||||
if (stats.num_pkts_rx_err_pt != 0) {
|
||||
setverdict(fail);
|
||||
}
|
||||
if (stats.num_pkts_rx_err_disabled != 0) {
|
||||
setverdict(fail);
|
||||
}
|
||||
|
@ -1062,6 +1068,11 @@ module MGCP_Test {
|
|||
mtc.stop;
|
||||
}
|
||||
|
||||
if (stats[0].num_pkts_rx_err_pt > 0 or stats[1].num_pkts_rx_err_pt > 0) {
|
||||
setverdict(fail, "RTP packets with wrong payload type received");
|
||||
mtc.stop;
|
||||
}
|
||||
|
||||
setverdict(pass);
|
||||
}
|
||||
|
||||
|
@ -1163,12 +1174,20 @@ module MGCP_Test {
|
|||
setverdict(fail, "number of packets not within normal parameters");
|
||||
mtc.stop;
|
||||
}
|
||||
if (stats[0].num_pkts_rx_err_pt > 0) {
|
||||
setverdict(fail, "RTP packets with wrong payload type received");
|
||||
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");
|
||||
mtc.stop;
|
||||
}
|
||||
if (stats[0].num_pkts_rx_err_pt > 0) {
|
||||
setverdict(fail, "RTP packets with wrong payload type received");
|
||||
mtc.stop;
|
||||
}
|
||||
|
||||
/* Tear down */
|
||||
f_flow_delete(RTPEM[0]);
|
||||
|
@ -1221,6 +1240,11 @@ module MGCP_Test {
|
|||
mtc.stop;
|
||||
}
|
||||
|
||||
if (stats[0].num_pkts_rx_err_pt > 0 or stats[1].num_pkts_rx_err_pt > 0) {
|
||||
setverdict(fail, "RTP packets with wrong payload type received");
|
||||
mtc.stop;
|
||||
}
|
||||
|
||||
setverdict(pass);
|
||||
}
|
||||
|
||||
|
@ -1284,6 +1308,11 @@ module MGCP_Test {
|
|||
mtc.stop;
|
||||
}
|
||||
|
||||
if (stats[0].num_pkts_rx_err_pt > 0 or stats[1].num_pkts_rx_err_pt > 0) {
|
||||
setverdict(fail, "RTP packets with wrong payload type received");
|
||||
mtc.stop;
|
||||
}
|
||||
|
||||
setverdict(pass);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue