aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-03-15 16:30:00 +0100
committerHarald Welte <laforge@gnumonks.org>2018-03-16 09:15:32 +0000
commitf1e02bb46bd6e8125df5af40efd5dc33b3316b40 (patch)
tree236e25c0319766c98dcfb085b6b19435e0230b41
parent53fb0cf22ba887d9bf4c7bf3d58f07bef90aa48b (diff)
MSC_Tests: Support wildcarded endpoints (follow up)
The following tests still lack support for wildcarded endpoints: MSC_Tests.TC_lu_and_mo_call MSC_Tests.TC_emerg_call_imsi MSC_Tests.TC_mo_crcx_ran_reject MSC_Tests.TC_mt_crcx_ran_reject - Also add support for wildcarded endpoints for those tests. This is a follow up patch for: Change-Id I0efeae0f8a6e98deb843e79648f84a262f1d98f8 Change-Id: I16cb2582b9d1764d7cb7e4b787368a4dd5ddf69c Related: OS#2710
-rw-r--r--msc/BSC_ConnectionHandler.ttcn16
-rw-r--r--msc/MSC_Tests.ttcn37
2 files changed, 46 insertions, 7 deletions
diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 48da7931..561cf191 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -563,8 +563,14 @@ runs on BSC_ConnHdlr {
/* First MGCP CRCX (for BSS/RAN side) */
[] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
cpars.mgcp_call_id := f_MgcpCmd_extract_call_id(mgcp_cmd);
- /* TODO: dynamic EP allocation case */
- cpars.mgcp_ep := mgcp_cmd.line.ep;
+
+ /* When the endpoint contains a wildcard we keep the endpoint
+ * identifier we have set up in cpars. Otherwise we use the
+ * endpoint name that the call agent has supplied */
+ if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard) == false) {
+ cpars.mgcp_ep := mgcp_cmd.line.ep;
+ }
+
var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_rtp_ip_bss, cpars.mgw_rtp_ip_bss,
hex2str(cpars.mgcp_call_id), "42",
cpars.mgw_rtp_port_bss,
@@ -572,7 +578,11 @@ runs on BSC_ConnHdlr {
{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
cpars.rtp_sdp_format)),
valueof(ts_SDP_ptime(20)) }));
- MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_bss, sdp));
+
+ var template MgcpResponse mgcp_resp;
+ mgcp_resp := ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_bss, sdp);
+ f_mgcp_par_append(mgcp_resp.params, ts_MgcpParSpecEP(cpars.mgcp_ep));
+ MGCP.send(mgcp_resp);
}
}
/* Second MGCP CRCX (this time for MSS/CN side) */
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index e7ee9e7a..485fd372 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -556,6 +556,7 @@ private function f_tc_lu_and_mo_call(charstring id, BSC_ConnHdlrPars pars) runs
cpars.bss_rtp_port := 1110;
cpars.mgcp_connection_id_bss := '22222'H;
cpars.mgcp_connection_id_mss := '33333'H;
+ cpars.mgcp_ep := "rtpbridge/1@mgw";
f_perform_lu();
f_mo_call(cpars);
@@ -848,6 +849,7 @@ testcase TC_imsi_detach_by_imei() runs on MTC_CT {
private function f_emerg_call(MobileIdentityLV mi) runs on BSC_ConnHdlr {
var CallParameters cpars := valueof(t_CallParams('112'H, 0));
cpars.emergency := true;
+ cpars.mgcp_ep := "rtpbridge/1@mgw";
f_mo_call(cpars);
}
@@ -1196,8 +1198,18 @@ private function f_tc_mo_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) r
BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(cpars.transaction_id)));
MGCP.receive(tr_CRCX) -> value mgcp_cmd;
+
+ /* Detect if the received CRCX is a wildcarded CRCX request. If yes,
+ * set an endpoint name that fits the pattern. If not, just use the
+ * endpoint name from the request */
+ if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard)) {
+ cpars.mgcp_ep := "rtpbridge/1@mgw";
+ } else {
+ cpars.mgcp_ep := mgcp_cmd.line.ep;
+ }
+
cpars.mgcp_call_id := f_MgcpCmd_extract_call_id(mgcp_cmd);
- cpars.mgcp_ep := mgcp_cmd.line.ep;
+
/* Respond to CRCX with error */
var MgcpResponse mgcp_rsp := {
line := {
@@ -1205,9 +1217,13 @@ private function f_tc_mo_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) r
trans_id := mgcp_cmd.line.trans_id,
string := "FORCED_FAIL"
},
- params := omit,
sdp := omit
}
+ var MgcpParameter mgcp_rsp_param := {
+ code := "Z",
+ val := cpars.mgcp_ep
+ };
+ mgcp_rsp.params[0] := mgcp_rsp_param;
MGCP.send(mgcp_rsp);
timer T := 30.0;
@@ -1291,7 +1307,16 @@ private function f_tc_mt_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) r
MGCP.receive(tr_CRCX) -> value mgcp_cmd;
cpars.mgcp_call_id := f_MgcpCmd_extract_call_id(mgcp_cmd);
- cpars.mgcp_ep := mgcp_cmd.line.ep;
+
+ /* Detect if the received CRCX is a wildcarded CRCX request. If yes,
+ * set an endpoint name that fits the pattern. If not, just use the
+ * endpoint name from the request */
+ if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard)) {
+ cpars.mgcp_ep := "rtpbridge/1@mgw";
+ } else {
+ cpars.mgcp_ep := mgcp_cmd.line.ep;
+ }
+
/* Respond to CRCX with error */
var MgcpResponse mgcp_rsp := {
line := {
@@ -1299,9 +1324,13 @@ private function f_tc_mt_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) r
trans_id := mgcp_cmd.line.trans_id,
string := "FORCED_FAIL"
},
- params := omit,
sdp := omit
}
+ var MgcpParameter mgcp_rsp_param := {
+ code := "Z",
+ val := cpars.mgcp_ep
+ };
+ mgcp_rsp.params[0] := mgcp_rsp_param;
MGCP.send(mgcp_rsp);
timer T := 30.0;