From 9220f6336e0716849ab4ebaa35b71adfe179da8d Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 23 May 2018 20:27:02 +0200 Subject: 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 --- library/IPA_Emulation.ttcnpp | 8 ++++++++ library/MGCP_Emulation.ttcn | 9 ++++++++- library/NS_Emulation.ttcn | 4 ++++ library/RTP_Emulation.ttcn | 16 ++++++++++++++++ library/SMPP_Emulation.ttcn | 4 ++++ 5 files changed, 40 insertions(+), 1 deletion(-) (limited to 'library') diff --git a/library/IPA_Emulation.ttcnpp b/library/IPA_Emulation.ttcnpp index be64dd17..41a3968d 100644 --- a/library/IPA_Emulation.ttcnpp +++ b/library/IPA_Emulation.ttcnpp @@ -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; diff --git a/library/MGCP_Emulation.ttcn b/library/MGCP_Emulation.ttcn index aaef39eb..e2f79b32 100644 --- a/library/MGCP_Emulation.ttcn +++ b/library/MGCP_Emulation.ttcn @@ -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; diff --git a/library/NS_Emulation.ttcn b/library/NS_Emulation.ttcn index 27acae27..d43d15c1 100644 --- a/library/NS_Emulation.ttcn +++ b/library/NS_Emulation.ttcn @@ -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 */ diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn index a3a05090..20e4299c 100644 --- a/library/RTP_Emulation.ttcn +++ b/library/RTP_Emulation.ttcn @@ -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}) { diff --git a/library/SMPP_Emulation.ttcn b/library/SMPP_Emulation.ttcn index 83e7801f..c14340ca 100644 --- a/library/SMPP_Emulation.ttcn +++ b/library/SMPP_Emulation.ttcn @@ -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; } -- cgit v1.2.3