MGCP_Emulation: allow moving ep handling to another test component

Will be used by MSC_Tests.TC_call_re_establishment in
Ifdff5573eeb3b3d41e8599b9b0228411d2576864,
where a call from one vc_conn gets re-established in another vc_conn.

Related: SYS#5130
Change-Id: Id46035e53c2870e1fdef1335dce42b2020f7cd54
This commit is contained in:
Neels Hofmeyr 2021-07-27 22:30:36 +02:00 committed by laforge
parent e51ce49fbf
commit 5c449f346e
1 changed files with 26 additions and 1 deletions

View File

@ -193,6 +193,19 @@ runs on MGCP_Emulation_CT {
mtc.stop;
}
private function f_ep_table_change_connhdlr(MGCP_ConnHdlr comp_ref, MgcpEndpoint ep)
runs on MGCP_Emulation_CT {
var integer i;
for (i := 0; i < sizeof(MgcpEndpointTable); i := i+1) {
if (MgcpEndpointTable[i].endpoint == ep) {
MgcpEndpointTable[i].comp_ref := comp_ref;
log("MGCP_Emulation_CT: MgcpEndpointTable[", i, "] now sends to ", comp_ref);
return;
}
}
setverdict(fail, "MGCP Endpoint Table: Couldn't find entry to move to ", comp_ref);
mtc.stop;
}
/* Check if the given transaction ID is a pending CRCX. If yes, return true + remove */
private function f_trans_id_was_pending(MgcpTransId trans_id)
@ -349,6 +362,10 @@ function main(MGCPOps ops, MGCP_conn_parameters p, charstring id) runs on MGCP_E
f_ep_table_del(vc_conn, ep);
MGCP_PROC.reply(MGCPEM_delete_ep:{ep, vc_conn}) to vc_conn;
}
[] MGCP_PROC.getcall(MGCPEM_change_connhdlr:{?,?}) -> param(ep, vc_conn) {
f_ep_table_change_connhdlr(vc_conn, ep);
MGCP_PROC.reply(MGCPEM_change_connhdlr:{ep, vc_conn}) to vc_conn;
}
}
}
@ -370,9 +387,10 @@ type record ExpectData {
signature MGCPEM_register(in ExpectCriteria cmd, in MGCP_ConnHdlr hdlr);
signature MGCPEM_delete_ep(in MgcpEndpoint ep, in MGCP_ConnHdlr hdlr);
signature MGCPEM_change_connhdlr(in MgcpEndpoint ep, in MGCP_ConnHdlr hdlr);
type port MGCPEM_PROC_PT procedure {
inout MGCPEM_register, MGCPEM_delete_ep;
inout MGCPEM_register, MGCPEM_delete_ep, MGCPEM_change_connhdlr;
} with { extension "internal" };
function f_get_mgcp_by_crit(ExpectCriteria crit)
@ -462,6 +480,13 @@ function f_create_mgcp_delete_ep(MgcpEndpoint ep) runs on MGCP_ConnHdlr {
}
}
/* Move MGCP handling for a given MGW endpoint to a different MGCP_ConnHdlr component. */
function f_mgcp_change_connhdlr(MgcpEndpoint ep) runs on MGCP_ConnHdlr {
MGCP_PROC.call(MGCPEM_change_connhdlr:{ep, self}) {
[] MGCP_PROC.getreply(MGCPEM_change_connhdlr:{?,?}) {};
}
}
private function f_expect_table_init()
runs on MGCP_Emulation_CT {