<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/9268">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Print more self-explanatory error message on bind/connect failures<br><br>When sockets cannot be bound or connected, the existing TTCN-3 code prints<br>the following rather cryptic error messages:<br><br>"IPA-CTRL-IPA(47)@f70ff1fd5cfd: Dynamic test case error: Using the value of an optional field containing omit. (Transport endpoint is not connected)"<br><br>The "Transport endpoint is not connected" sort-of gives it away, but<br>let's make it more explicit by introducing explicit checks for the<br>res.connId and manual setverdict(fail) statements with proper error<br>message.<br><br>Change-Id: Id22a1b5189d81c4fca03d5e7aff60ffdd1ad56bf<br>---<br>M bsc-nat/MGCP_Adapter.ttcn<br>M bts/BTS_Tests.ttcn<br>M library/IPA_Emulation.ttcnpp<br>M library/MGCP_Emulation.ttcn<br>M library/NS_Emulation.ttcn<br>M library/RTP_Emulation.ttcn<br>M library/SMPP_Emulation.ttcn<br>M mgw/MGCP_Test.ttcn<br>M mgw/RTP_Endpoint.ttcn<br>M selftest/Selftest.ttcn<br>10 files changed, 68 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/68/9268/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc-nat/MGCP_Adapter.ttcn b/bsc-nat/MGCP_Adapter.ttcn</span><br><span>index 1351997..6491c68 100644</span><br><span>--- a/bsc-nat/MGCP_Adapter.ttcn</span><br><span>+++ b/bsc-nat/MGCP_Adapter.ttcn</span><br><span>@@ -47,6 +47,10 @@</span><br><span>      res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP_UDP, mp_mgw_ip, mp_mgw_udp_port,</span><br><span>                                                 mp_callagent_ip, mp_callagent_udp_port,</span><br><span>                                              0, { udp:={} });</span><br><span style="color: hsl(120, 100%, 40%);">+      if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not connect MGCP, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+               self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_mgcp_conn_id := res.connId;</span><br><span> </span><br><span>    while (true) {</span><br><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index 49bf45e..bc3f186 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -396,6 +396,10 @@</span><br><span>   var Result res;</span><br><span>      res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port,</span><br><span>                                                      "", -1, -1, {udp:={}}, {});</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+         self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_bb_trxc_conn_id := res.connId;</span><br><span> }</span><br><span> </span><br><span>@@ -1043,6 +1047,10 @@</span><br><span>   var Result res;</span><br><span>      res := TRXC_CodecPort_CtrlFunct.f_IPL4_connect(BB_TRXC, mp_bb_trxc_ip, mp_bb_trxc_port,</span><br><span>                                                      "", -1, -1, {udp:={}}, {});</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not connect to trx-control interface of trxcon, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+         self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_bb_trxc_conn_id := res.connId;</span><br><span> }</span><br><span> </span><br><span>diff --git a/library/IPA_Emulation.ttcnpp b/library/IPA_Emulation.ttcnpp</span><br><span>index be64dd1..41a3968 100644</span><br><span>--- a/library/IPA_Emulation.ttcnpp</span><br><span>+++ b/library/IPA_Emulation.ttcnpp</span><br><span>@@ -201,6 +201,10 @@</span><br><span>        var IPL4asp_Types.Result res;</span><br><span>        res := IPA_CodecPort_CtrlFunct.f_IPL4_connect(IPA_PORT, remote_host, remote_port,</span><br><span>                                            local_host, local_port, 0, { tcp:={} });</span><br><span style="color: hsl(120, 100%, 40%);">+      if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not connect IPA socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+         self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_ipa_conn_id := res.connId;</span><br><span>         g_ccm_pars := ccm_pars;</span><br><span>      g_is_bsc_mgw := true;</span><br><span>@@ -212,6 +216,10 @@</span><br><span>         var IPL4asp_Types.Result res;</span><br><span>        res := IPA_CodecPort_CtrlFunct.f_IPL4_listen(IPA_PORT, </span><br><span>                                              local_host, local_port, { tcp:={} });</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not listen IPA socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+          self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_ipa_conn_id := res.connId;</span><br><span>         g_ccm_pars := ccm_pars;</span><br><span>      g_is_bsc_mgw := false;</span><br><span>diff --git a/library/MGCP_Emulation.ttcn b/library/MGCP_Emulation.ttcn</span><br><span>index aaef39e..e2f79b3 100644</span><br><span>--- a/library/MGCP_Emulation.ttcn</span><br><span>+++ b/library/MGCP_Emulation.ttcn</span><br><span>@@ -237,7 +237,10 @@</span><br><span>       } else {</span><br><span>             res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP, p.callagent_ip, p.callagent_udp_port, p.mgw_ip, p.mgw_udp_port, -1, { udp:={} });</span><br><span>       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+     if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not connect MGCP socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_mgcp_conn_id := res.connId;</span><br><span> </span><br><span>    while (true) {</span><br><span>@@ -268,6 +271,10 @@</span><br><span>                                /* we aren't yet connected to the remote side port, let's fix this */</span><br><span>                                p.callagent_udp_port := mrf.remPort;</span><br><span>                                 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:={} });</span><br><span style="color: hsl(120, 100%, 40%);">+                            if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                      setverdict(fail, "Could not connect MGCP socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                                        self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                            }</span><br><span>                    }</span><br><span>                    if (ischosen(mrf.msg.command)) {</span><br><span>                             cmd := mrf.msg.command;</span><br><span>diff --git a/library/NS_Emulation.ttcn b/library/NS_Emulation.ttcn</span><br><span>index 27acae2..d43d15c 100644</span><br><span>--- a/library/NS_Emulation.ttcn</span><br><span>+++ b/library/NS_Emulation.ttcn</span><br><span>@@ -81,6 +81,10 @@</span><br><span>                var Result res;</span><br><span>              /* Connect the UDP socket */</span><br><span>                 res := f_IPL4_connect(NSCP, mp_remote_ip, mp_remote_udp_port, mp_local_ip, mp_local_udp_port, 0, { udp := {}});</span><br><span style="color: hsl(120, 100%, 40%);">+               if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Could not connect NS UDP socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                      self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>            g_conn_id := res.connId;</span><br><span>             f_change_state(NSE_S_DEAD_BLOCKED);</span><br><span>          /* Send the first NS-ALIVE to test the connection */</span><br><span>diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn</span><br><span>index a3a0509..20e4299 100644</span><br><span>--- a/library/RTP_Emulation.ttcn</span><br><span>+++ b/library/RTP_Emulation.ttcn</span><br><span>@@ -264,10 +264,18 @@</span><br><span>                    }</span><br><span>                    res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTP, g_local_host,</span><br><span>                                                              g_local_port, {udp:={}});</span><br><span style="color: hsl(120, 100%, 40%);">+                     if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              setverdict(fail, "Could not listen on RTP socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                               self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span>                    g_rtp_conn_id := res.connId;</span><br><span>                         tr_rtp.connId := g_rtp_conn_id;</span><br><span>                      res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTCP, g_local_host,</span><br><span>                                                             g_local_port+1, {udp:={}});</span><br><span style="color: hsl(120, 100%, 40%);">+                   if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              setverdict(fail, "Could not listen on RTCP socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                              self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span>                    g_rtcp_conn_id := res.connId;</span><br><span>                        tr_rtcp.connId := g_rtcp_conn_id;</span><br><span>                    CTRL.reply(RTPEM_bind:{g_local_host, g_local_port});</span><br><span>@@ -282,10 +290,18 @@</span><br><span>                                                                 g_remote_port,</span><br><span>                                                               g_local_host, g_local_port,</span><br><span>                                                          g_rtp_conn_id, {udp:={}});</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              setverdict(fail, "Could not connect to RTP socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                              self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span>                    res := RTP_CodecPort_CtrlFunct.f_IPL4_connect(RTCP, g_remote_host,</span><br><span>                                                           g_remote_port+1,</span><br><span>                                                             g_local_host, g_local_port+1,</span><br><span>                                                                g_rtcp_conn_id, {udp:={}});</span><br><span style="color: hsl(120, 100%, 40%);">+                   if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              setverdict(fail, "Could not connect to RTCP socket, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                             self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span>                    CTRL.reply(RTPEM_connect:{g_remote_host, g_remote_port});</span><br><span>            }</span><br><span>            [] CTRL.getcall(RTPEM_mode:{RTPEM_MODE_NONE}) {</span><br><span>diff --git a/library/SMPP_Emulation.ttcn b/library/SMPP_Emulation.ttcn</span><br><span>index 83e7801..c14340c 100644</span><br><span>--- a/library/SMPP_Emulation.ttcn</span><br><span>+++ b/library/SMPP_Emulation.ttcn</span><br><span>@@ -134,6 +134,10 @@</span><br><span>      var IPL4asp_Types.Result res;</span><br><span>        res := SMPP_CodecPort_CtrlFunct.f_IPL4_connect(SMPP_PORT, remote_host, remote_port,</span><br><span>                                                  local_host, local_port, 0, { tcp :={} });</span><br><span style="color: hsl(120, 100%, 40%);">+     if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not connect to SMPP port, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+               self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_smpp_conn_id := res.connId;</span><br><span> }</span><br><span> </span><br><span>diff --git a/mgw/MGCP_Test.ttcn b/mgw/MGCP_Test.ttcn</span><br><span>index c1ff3fc..1892a42 100644</span><br><span>--- a/mgw/MGCP_Test.ttcn</span><br><span>+++ b/mgw/MGCP_Test.ttcn</span><br><span>@@ -68,6 +68,10 @@</span><br><span>                      * source/destionation ip/port and store the connection id in g_mgcp_conn_id</span><br><span>                          * */</span><br><span>                        res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP, mp_remote_ip, mp_remote_udp_port, mp_local_ip, mp_local_udp_port, 0, { udp := {} });</span><br><span style="color: hsl(120, 100%, 40%);">+                     if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              setverdict(fail, "Could not connect MGCP, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                               self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span>                    g_mgcp_conn_id := res.connId;</span><br><span> </span><br><span>                    for (var integer i := 0; i < sizeof(vc_RTPEM); i := i+1) {</span><br><span>diff --git a/mgw/RTP_Endpoint.ttcn b/mgw/RTP_Endpoint.ttcn</span><br><span>index d33423a..3c939a2 100644</span><br><span>--- a/mgw/RTP_Endpoint.ttcn</span><br><span>+++ b/mgw/RTP_Endpoint.ttcn</span><br><span>@@ -109,8 +109,10 @@</span><br><span> </span><br><span>            res := f_IPL4_connect(RTP, sub.remote_name, sub.remote_port,</span><br><span>                                         sub.local_name, sub.local_port, sub.connection_id, { udp := {} });</span><br><span style="color: hsl(0, 100%, 40%);">-              /* FIXME: Check for success (no res.errorCode) */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+             if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Could not connect RTP, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                        self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>            /* connect without previous bind: save conenction id allocated by IPL4asp */</span><br><span>                 if (sub.connection_id == -1) {</span><br><span>                       sub.connection_id := res.connId;</span><br><span>@@ -132,7 +134,10 @@</span><br><span>              var Result res;</span><br><span>              rtp_endpoint_sub_close(RTP, sub);</span><br><span>            res := f_IPL4_listen(RTP, sub.local_name, sub.local_port, { udp := {} });</span><br><span style="color: hsl(0, 100%, 40%);">-               /* FIXME: Check for success (no res.errorCode) */</span><br><span style="color: hsl(120, 100%, 40%);">+             if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Could not listen to RTP, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                      self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>            sub.connection_id := res.connId;</span><br><span>     }</span><br><span> </span><br><span>diff --git a/selftest/Selftest.ttcn b/selftest/Selftest.ttcn</span><br><span>index 1ff17fe..826d244 100644</span><br><span>--- a/selftest/Selftest.ttcn</span><br><span>+++ b/selftest/Selftest.ttcn</span><br><span>@@ -55,6 +55,10 @@</span><br><span>      var Result res;</span><br><span>      map(self:IP, system:IP);</span><br><span>     res := IPL4asp_PortType.f_IPL4_connect(IP, "127.0.0.1", 55555, "", -1,-1, {tcp:={}});</span><br><span style="color: hsl(120, 100%, 40%);">+     if (not ispresent(res.connId)) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "Could not connect to TCP port, check your configuration");</span><br><span style="color: hsl(120, 100%, 40%);">+                self.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span>    g_ip_conn_id := res.connId;</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9268">change 9268</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/9268"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Id22a1b5189d81c4fca03d5e7aff60ffdd1ad56bf </div>
<div style="display:none"> Gerrit-Change-Number: 9268 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>