Print more self-explanatory error message on bind/connect failures

When sockets cannot be bound or connected, the existing TTCN-3 code prints
the following rather cryptic error messages:

"IPA-CTRL-IPA(47)@f70ff1fd5cfd: Dynamic test case error: Using the value of an optional field containing omit. (Transport endpoint is not connected)"

The "Transport endpoint is not connected" sort-of gives it away, but
let's make it more explicit by introducing explicit checks for the
res.connId and manual setverdict(fail) statements with proper error
message.

Change-Id: Id22a1b5189d81c4fca03d5e7aff60ffdd1ad56bf
This commit is contained in:
Harald Welte 2018-05-23 20:27:02 +02:00
parent 898a7e06cc
commit 9220f6336e
10 changed files with 68 additions and 4 deletions

View File

@ -47,6 +47,10 @@ function main() runs on MGCP_Adapter_CT {
res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP_UDP, mp_mgw_ip, mp_mgw_udp_port,
mp_callagent_ip, mp_callagent_udp_port,
0, { udp:={} });
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect MGCP, check your configuration");
self.stop;
}
g_mgcp_conn_id := res.connId;
while (true) {

View File

@ -396,6 +396,10 @@ private function f_trxc_connect() runs on ConnHdlr {
var Result res;
res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port,
"", -1, -1, {udp:={}}, {});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration");
self.stop;
}
g_bb_trxc_conn_id := res.connId;
}
@ -1043,6 +1047,10 @@ private function f_main_trxc_connect() runs on test_CT {
var Result res;
res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port,
"", -1, -1, {udp:={}}, {});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration");
self.stop;
}
g_bb_trxc_conn_id := res.connId;
}

View File

@ -201,6 +201,10 @@ function f_connect(charstring remote_host, IPL4asp_Types.PortNumber remote_port,
var IPL4asp_Types.Result res;
res := IPA_CodecPort_CtrlFunct.f_IPL4_connect(IPA_PORT, remote_host, remote_port,
local_host, local_port, 0, { tcp:={} });
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect IPA socket, check your configuration");
self.stop;
}
g_ipa_conn_id := res.connId;
g_ccm_pars := ccm_pars;
g_is_bsc_mgw := true;
@ -212,6 +216,10 @@ function f_bind(charstring local_host, IPL4asp_Types.PortNumber local_port,
var IPL4asp_Types.Result res;
res := IPA_CodecPort_CtrlFunct.f_IPL4_listen(IPA_PORT,
local_host, local_port, { tcp:={} });
if (not ispresent(res.connId)) {
setverdict(fail, "Could not listen IPA socket, check your configuration");
self.stop;
}
g_ipa_conn_id := res.connId;
g_ccm_pars := ccm_pars;
g_is_bsc_mgw := false;

View File

@ -237,7 +237,10 @@ function main(MGCPOps ops, MGCP_conn_parameters p, charstring id) runs on MGCP_E
} else {
res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP, p.callagent_ip, p.callagent_udp_port, p.mgw_ip, p.mgw_udp_port, -1, { udp:={} });
}
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect MGCP socket, check your configuration");
self.stop;
}
g_mgcp_conn_id := res.connId;
while (true) {
@ -268,6 +271,10 @@ function main(MGCPOps ops, MGCP_conn_parameters p, charstring id) runs on MGCP_E
/* we aren't yet connected to the remote side port, let's fix this */
p.callagent_udp_port := mrf.remPort;
res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP, p.callagent_ip, p.callagent_udp_port, p.mgw_ip, p.mgw_udp_port, g_mgcp_conn_id, { udp:={} });
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect MGCP socket, check your configuration");
self.stop;
}
}
if (ischosen(mrf.msg.command)) {
cmd := mrf.msg.command;

View File

@ -81,6 +81,10 @@ module NS_Emulation {
var Result res;
/* Connect the UDP socket */
res := f_IPL4_connect(NSCP, mp_remote_ip, mp_remote_udp_port, mp_local_ip, mp_local_udp_port, 0, { udp := {}});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect NS UDP socket, check your configuration");
self.stop;
}
g_conn_id := res.connId;
f_change_state(NSE_S_DEAD_BLOCKED);
/* Send the first NS-ALIVE to test the connection */

View File

@ -264,10 +264,18 @@ function f_main() runs on RTP_Emulation_CT
}
res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTP, g_local_host,
g_local_port, {udp:={}});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not listen on RTP socket, check your configuration");
self.stop;
}
g_rtp_conn_id := res.connId;
tr_rtp.connId := g_rtp_conn_id;
res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTCP, g_local_host,
g_local_port+1, {udp:={}});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not listen on RTCP socket, check your configuration");
self.stop;
}
g_rtcp_conn_id := res.connId;
tr_rtcp.connId := g_rtcp_conn_id;
CTRL.reply(RTPEM_bind:{g_local_host, g_local_port});
@ -282,10 +290,18 @@ function f_main() runs on RTP_Emulation_CT
g_remote_port,
g_local_host, g_local_port,
g_rtp_conn_id, {udp:={}});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect to RTP socket, check your configuration");
self.stop;
}
res := RTP_CodecPort_CtrlFunct.f_IPL4_connect(RTCP, g_remote_host,
g_remote_port+1,
g_local_host, g_local_port+1,
g_rtcp_conn_id, {udp:={}});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect to RTCP socket, check your configuration");
self.stop;
}
CTRL.reply(RTPEM_connect:{g_remote_host, g_remote_port});
}
[] CTRL.getcall(RTPEM_mode:{RTPEM_MODE_NONE}) {

View File

@ -134,6 +134,10 @@ runs on SMPP_Emulation_CT {
var IPL4asp_Types.Result res;
res := SMPP_CodecPort_CtrlFunct.f_IPL4_connect(SMPP_PORT, remote_host, remote_port,
local_host, local_port, 0, { tcp :={} });
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect to SMPP port, check your configuration");
self.stop;
}
g_smpp_conn_id := res.connId;
}

View File

@ -68,6 +68,10 @@ module MGCP_Test {
* source/destionation ip/port and store the connection id in g_mgcp_conn_id
* */
res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP, mp_remote_ip, mp_remote_udp_port, mp_local_ip, mp_local_udp_port, 0, { udp := {} });
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect MGCP, check your configuration");
self.stop;
}
g_mgcp_conn_id := res.connId;
for (var integer i := 0; i < sizeof(vc_RTPEM); i := i+1) {

View File

@ -109,8 +109,10 @@ module RTP_Endpoint {
res := f_IPL4_connect(RTP, sub.remote_name, sub.remote_port,
sub.local_name, sub.local_port, sub.connection_id, { udp := {} });
/* FIXME: Check for success (no res.errorCode) */
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect RTP, check your configuration");
self.stop;
}
/* connect without previous bind: save conenction id allocated by IPL4asp */
if (sub.connection_id == -1) {
sub.connection_id := res.connId;
@ -132,7 +134,10 @@ module RTP_Endpoint {
var Result res;
rtp_endpoint_sub_close(RTP, sub);
res := f_IPL4_listen(RTP, sub.local_name, sub.local_port, { udp := {} });
/* FIXME: Check for success (no res.errorCode) */
if (not ispresent(res.connId)) {
setverdict(fail, "Could not listen to RTP, check your configuration");
self.stop;
}
sub.connection_id := res.connId;
}

View File

@ -55,6 +55,10 @@ function f_tcp_client_init() runs on IPA_selftest_CT {
var Result res;
map(self:IP, system:IP);
res := IPL4asp_PortType.f_IPL4_connect(IP, "127.0.0.1", 55555, "", -1,-1, {tcp:={}});
if (not ispresent(res.connId)) {
setverdict(fail, "Could not connect to TCP port, check your configuration");
self.stop;
}
g_ip_conn_id := res.connId;
}