mgw: Introduce test TC_crcx_osmo_ign

Related: SYS#5063
Change-Id: I79415c385e89fe859854430bb20940f078fccea0
This commit is contained in:
Pau Espin 2020-09-21 10:54:42 +02:00 committed by laforge
parent befa21c5c9
commit befd3aaca4
3 changed files with 38 additions and 2 deletions

View File

@ -55,6 +55,12 @@ module MGCP_Templates {
val := f_mgcp_osmux_cid_encode(osmux_cid) val := f_mgcp_osmux_cid_encode(osmux_cid)
}; };
/* Osmocom extension: X-Osmux: {*,%u} */
template MgcpParameter t_MgcpParOsmoIGN(template charstring val) := {
code := "X-OSMO-IGN",
val := val
};
/* osmo-bsc_mgcp implements L/C/M/X only, osmo-mgw adds 'I' */ /* osmo-bsc_mgcp implements L/C/M/X only, osmo-mgw adds 'I' */
/* SDP: osmo-bsc_mgcp implements Tx of v,o,s,c,t,m,a */ /* SDP: osmo-bsc_mgcp implements Tx of v,o,s,c,t,m,a */

View File

@ -30,8 +30,8 @@ module MGCP_Types {
type charstring MgcpInfoCode ("B", "C", "I", "N", "X", "L", "M", "R", type charstring MgcpInfoCode ("B", "C", "I", "N", "X", "L", "M", "R",
"S", "D", "O", "P", "E", "Z", "Q", "T", "S", "D", "O", "P", "E", "Z", "Q", "T",
"RC", "LC", "A", "ES", "RM", "RD", "PL", "RC", "LC", "A", "ES", "RM", "RD", "PL",
"MD", "X-OSMO-CP", "X-OSMUX") with { "MD", "X-OSMO-CP", "X-OSMO-IGN", "X-OSMUX") with {
variant "TEXT_CODING(,convert=upper_case,'([BCINXLMRSDOPEZQTA])|(RC)|(LC)|(ES)|(RM)|(RD)|(PL)|(MD)|(X-OSMO-CP)|(X-OSMUX)',case_insensitive)" variant "TEXT_CODING(,convert=upper_case,'([BCINXLMRSDOPEZQTA])|(RC)|(LC)|(ES)|(RM)|(RD)|(PL)|(MD)|(X-OSMO-CP)|(X-OSMO-IGN)|(X-OSMUX)',case_insensitive)"
}; };
/* 3.2.2.6 */ /* 3.2.2.6 */

View File

@ -732,6 +732,35 @@ module MGCP_Test {
setverdict(pass); setverdict(pass);
} }
/* Test CRCX with X-Osmo-IGN, using same message as SYS#5063 to make sure it doesn't cause a crash. */
testcase TC_crcx_osmo_ign() runs on dummy_CT {
var template MgcpCommand cmd;
var MgcpResponse resp;
var MgcpEndpoint ep := "7@" & c_mgw_domain;
var MgcpCallId call_id := '3'H;
f_init(ep);
/* CRCX 1 7@mgw MGCP 1.0
C: 3
L: p:20, a:GSM-EFR, nt:IN
M: recvonly
X-Osmo-IGN: C
*/
cmd := ts_CRCX(get_next_trans_id(), ep, "netwtest", call_id);
cmd.params := {ts_MgcpParCallId(call_id),
t_MgcpParLocConnOpt("p:20, a:GSM-EFR, nt:IN"),
t_MgcpParConnMode("recvonly"),
t_MgcpParOsmoIGN("C")};
resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK);
extract_conn_id(resp);
/* clean-up */
f_dlcx_ok(ep, call_id);
setverdict(pass);
}
/* test CRCX with early bi-directional mode, expect 527 as /* test CRCX with early bi-directional mode, expect 527 as
* bi-diretional media can only be established once both local and * bi-diretional media can only be established once both local and
* remote side are specified, see MGCP RFC */ * remote side are specified, see MGCP RFC */
@ -2360,6 +2389,7 @@ module MGCP_Test {
execute(TC_crcx_no_lco()); execute(TC_crcx_no_lco());
execute(TC_crcx_noprefix()); execute(TC_crcx_noprefix());
execute(TC_crcx_unsupp_mode()); execute(TC_crcx_unsupp_mode());
execute(TC_crcx_osmo_ign());
execute(TC_crcx_early_bidir_mode()); execute(TC_crcx_early_bidir_mode());
execute(TC_crcx_unsupp_param()); execute(TC_crcx_unsupp_param());
execute(TC_crcx_missing_callid()); execute(TC_crcx_missing_callid());