mgw: Avoid hardcoding in test the amount of endpoints configured in osmo-mgw

Some tests require to match what's configured in osmo-mgw.
Let's make it possible to change it through a module parameter.
This will be needed for a follow-up patch to test >256 concurrent osmux
conns, which will require increasing the number of configured endpoints
above that value.

Change-Id: Ia1e5a0b59ba7c49e97c2cf7ee7a009f3827cf36d
This commit is contained in:
Pau Espin 2022-10-07 10:57:11 +02:00
parent db1e068161
commit e792887fbb
1 changed files with 15 additions and 11 deletions

View File

@ -84,6 +84,8 @@ module MGCP_Test {
PortNumber mp_local_osmux_port := 1985; PortNumber mp_local_osmux_port := 1985;
PortNumber mp_mgw_statsd_port := 8125; PortNumber mp_mgw_statsd_port := 8125;
PortNumber mp_mgw_ctrl_port := 4267; PortNumber mp_mgw_ctrl_port := 4267;
/* Maximum number of available endpoints in osmo-mgw.cfg ("number endpoints"): */
integer mp_num_endpoints := 31;
} }
private function f_vty_enable_osmux(boolean osmux_on) runs on dummy_CT { private function f_vty_enable_osmux(boolean osmux_on) runs on dummy_CT {
@ -941,18 +943,19 @@ module MGCP_Test {
} }
/* test valid wildcarded CRCX */ /* test valid wildcarded CRCX */
type record of MgcpEndpoint MgcpEndpointList;
testcase TC_crcx_wildcarded_exhaust() runs on dummy_CT { testcase TC_crcx_wildcarded_exhaust() runs on dummy_CT {
const integer n_endpoints := 31;
var integer i; var integer i;
var template MgcpCommand cmd; var template MgcpCommand cmd;
var MgcpResponse resp; var MgcpResponse resp;
var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "*@" & c_mgw_domain; var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "*@" & c_mgw_domain;
var MgcpCallId call_id := '1234'H; var MgcpCallId call_id := '1234'H;
var MgcpEndpoint ep_assigned[n_endpoints]; var MgcpEndpoint ep_assigned;
var MgcpEndpointList ep_assigned_li := {};
f_init(); f_init();
/* Exhaust all endpoint resources on the virtual trunk */ /* Exhaust all endpoint resources on the virtual trunk */
for (i := 0; i < n_endpoints; i := i+1) { for (i := 0; i < mp_num_endpoints; i := i+1) {
cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id); cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK); resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK);
@ -962,10 +965,11 @@ module MGCP_Test {
var MgcpMessage resp_msg := { var MgcpMessage resp_msg := {
response := resp response := resp
} }
if (f_mgcp_find_param(resp_msg, "Z", ep_assigned[i]) == false) { if (f_mgcp_find_param(resp_msg, "Z", ep_assigned) == false) {
setverdict(fail, "No SpecificEndpointName in MGCP response", resp); setverdict(fail, "No SpecificEndpointName in MGCP response", resp);
mtc.stop; mtc.stop;
} }
ep_assigned_li := ep_assigned_li & {ep_assigned}
} }
/* Try to allocate one more endpoint, which should fail */ /* Try to allocate one more endpoint, which should fail */
@ -975,8 +979,8 @@ module MGCP_Test {
setverdict(pass); setverdict(pass);
/* clean-up */ /* clean-up */
for (i := 0; i < n_endpoints; i := i+1) { for (i := 0; i < mp_num_endpoints; i := i+1) {
f_dlcx_ok(ep_assigned[i], call_id); f_dlcx_ok(ep_assigned_li[i], call_id);
} }
setverdict(pass); setverdict(pass);
} }
@ -1040,7 +1044,8 @@ module MGCP_Test {
testcase TC_dlcx_non_existant_ep() runs on dummy_CT { testcase TC_dlcx_non_existant_ep() runs on dummy_CT {
var template MgcpCommand cmd; var template MgcpCommand cmd;
var MgcpResponse resp; var MgcpResponse resp;
var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "AA@" & c_mgw_domain; var charstring non_existant_ep := hex2str(int2hex(mp_num_endpoints + 1, 4))
var MgcpEndpoint ep := c_mgw_ep_rtpbridge & non_existant_ep & "@" & c_mgw_domain;
var template MgcpResponse rtmpl := { var template MgcpResponse rtmpl := {
line := { line := {
code := ("500"), code := ("500"),
@ -1090,14 +1095,13 @@ module MGCP_Test {
var template MgcpCommand cmd; var template MgcpCommand cmd;
var MgcpResponse resp; var MgcpResponse resp;
var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "*@" & c_mgw_domain; var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "*@" & c_mgw_domain;
const integer n_endpoints := 31;
var integer i; var integer i;
var MgcpCallId call_id := '1234'H; var MgcpCallId call_id := '1234'H;
var StatsDExpects expect; var StatsDExpects expect;
f_init(ep); f_init(ep);
/* Allocate a few endpoints */ /* Allocate a few endpoints */
for (i := 0; i < n_endpoints; i := i+1) { for (i := 0; i < mp_num_endpoints; i := i+1) {
cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id); cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK); resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK);
} }
@ -1106,7 +1110,7 @@ module MGCP_Test {
* occupied endpoints */ * occupied endpoints */
f_sleep(1.0) f_sleep(1.0)
expect := { expect := {
{ name := "TTCN3.trunk.virtual-0.common.endpoints.used", mtype := "g", min := n_endpoints, max := n_endpoints} { name := "TTCN3.trunk.virtual-0.common.endpoints.used", mtype := "g", min := mp_num_endpoints, max := mp_num_endpoints}
}; };
f_statsd_expect(expect); f_statsd_expect(expect);
@ -1125,7 +1129,7 @@ module MGCP_Test {
/* Query a the statsd once to ensure that intermediate results are pulled from the /* Query a the statsd once to ensure that intermediate results are pulled from the
* pipeline. The second query (below) will return the actual result. */ * pipeline. The second query (below) will return the actual result. */
expect := { expect := {
{ name := "TTCN3.trunk.virtual-0.common.endpoints.used", mtype := "g", min := 0, max := n_endpoints} { name := "TTCN3.trunk.virtual-0.common.endpoints.used", mtype := "g", min := 0, max := mp_num_endpoints}
}; };
f_statsd_expect(expect); f_statsd_expect(expect);