aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2021-07-27 22:30:36 +0200
committerlaforge <laforge@osmocom.org>2021-08-06 14:03:28 +0000
commit5c449f346e2580fccbb266ec0587603ca8909ebd (patch)
tree0cb35b3a4ac9eda13a4817b124d1b29c5ba25adf
parente51ce49fbf3e8befa43c0c70842d31f769c21140 (diff)
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
-rw-r--r--library/MGCP_Emulation.ttcn27
1 files changed, 26 insertions, 1 deletions
diff --git a/library/MGCP_Emulation.ttcn b/library/MGCP_Emulation.ttcn
index 8ccc085c..9a92b9cb 100644
--- a/library/MGCP_Emulation.ttcn
+++ b/library/MGCP_Emulation.ttcn
@@ -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 {