<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/11501">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Use Misc_Helpers.f_shutdown for setverdict(fail)<br><br>Unfortunately all component.stop can not be called from the non-mtc<br>component. f_shutdown is a wrapper that will try to shutdown a test in<br>the best way calling all component.stop if it is called from the mtc and<br>just stopping the mtc if called from any other component.<br><br>Change-Id: I9b71f7f7bd70d2da21fbad60c340d5bf8b3b9536<br>---<br>M bsc/MSC_ConnectionHandler.ttcn<br>1 file changed, 30 insertions(+), 48 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>index dfdf10c..546fa2d 100644</span><br><span>--- a/bsc/MSC_ConnectionHandler.ttcn</span><br><span>+++ b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>@@ -1,5 +1,6 @@</span><br><span> module MSC_ConnectionHandler {</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from Misc_Helpers all;</span><br><span> import from General_Types all;</span><br><span> import from Osmocom_Types all;</span><br><span> import from GSM_Types all;</span><br><span>@@ -146,8 +147,9 @@</span><br><span>                     return i;</span><br><span>            }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       setverdict(fail, "Only 2 Connections per EP!");</span><br><span style="color: hsl(0, 100%, 40%);">-       mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Only 2 Connections per EP!");</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Should never be reached */</span><br><span style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span> }</span><br><span> </span><br><span> /* Helper function to pick a specific connection by its cid. Since we reach out</span><br><span>@@ -159,8 +161,9 @@</span><br><span>                         return i;</span><br><span>            }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       setverdict(fail, "No Connection for ID ", cid);</span><br><span style="color: hsl(0, 100%, 40%);">-       mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No Connection for ID ", cid));</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Should not be reached */</span><br><span style="color: hsl(120, 100%, 40%);">+   return -1;</span><br><span> }</span><br><span> </span><br><span> /* altstep for handling of IPACC media related commands. Activated by as_Media() to test</span><br><span>@@ -188,8 +191,7 @@</span><br><span>                /* Extract conn_id, ip, port, rtp_pt2 from request + use in response */</span><br><span>              b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_CONN_ID, ie);</span><br><span>             if (g_media.bts.conn_id != ie.ipa_conn_id) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    setverdict(fail, "IPA MDCX for unknown ConnId", rsl);</span><br><span style="color: hsl(0, 100%, 40%);">-                 mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("IPA MDCX for unknown ConnId", rsl));</span><br><span>           }</span><br><span>            /* mandatory */</span><br><span>              b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_REMOTE_IP, ie);</span><br><span>@@ -232,8 +234,7 @@</span><br><span>             /* Extract conn_id, ip, port, rtp_pt2 from request + use in response */</span><br><span>              b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_CONN_ID, ie);</span><br><span>             if (g_media.bts1.conn_id != ie.ipa_conn_id) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   setverdict(fail, "IPA MDCX for unknown ConnId", rsl);</span><br><span style="color: hsl(0, 100%, 40%);">-                 mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("IPA MDCX for unknown ConnId", rsl));</span><br><span>           }</span><br><span>            /* mandatory */</span><br><span>              b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_REMOTE_IP, ie);</span><br><span>@@ -268,8 +269,7 @@</span><br><span>             var integer cid := f_get_free_mgcp_conn();</span><br><span>           if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard)) {</span><br><span>                   if (cid != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         setverdict(fail, "MGCP wildcard EP only works in first CRCX");</span><br><span style="color: hsl(0, 100%, 40%);">-                                mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MGCP wildcard EP only works in first CRCX");</span><br><span>                   }</span><br><span>                    /* we keep the endpoint name allocated during MediaState_init */</span><br><span>             } else {</span><br><span>@@ -305,7 +305,7 @@</span><br><span>                       g_media.mgcp_conn[cid].peer.host := sdp.connection.conn_addr.addr;</span><br><span>                   g_media.mgcp_conn[cid].peer.port_nr := sdp.media_list[0].media_field.ports.port_number;</span><br><span>              } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        setverdict(fail, "MDCX has no [recognizable] SDP");</span><br><span style="color: hsl(120, 100%, 40%);">+                 Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MDCX has no [recognizable] SDP");</span><br><span>              }</span><br><span>            var MgcpConnState mgcp_conn := g_media.mgcp_conn[cid];</span><br><span>               sdp := valueof(ts_SDP(mgcp_conn.peer.host, mgcp_conn.peer.host, "foo", "21",</span><br><span>@@ -519,7 +519,7 @@</span><br><span>       else if (alg_bssmap == '80'O) {</span><br><span>              return RSL_ALG_ID_A5_7;</span><br><span>      } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                setverdict(fail, "Unexpected Encryption Algorithm");</span><br><span style="color: hsl(120, 100%, 40%);">+                Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected Encryption Algorithm");</span><br><span>             return RSL_ALG_ID_A5_0;</span><br><span>      }</span><br><span> }</span><br><span>@@ -553,14 +553,14 @@</span><br><span>       [] BSSAP.receive(tr_BSSMAP_CipherModeCompl) -> value bssap {</span><br><span>              // bssap.bssmap.cipherModeComplete.chosenEncryptionAlgorithm.algoritmhIdentifier</span><br><span>             if (exp_fail == true) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 setverdict(fail, "Unexpected Cipher Mode Complete");</span><br><span style="color: hsl(120, 100%, 40%);">+                        Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected Cipher Mode Complete");</span><br><span>             } else {</span><br><span>                     setverdict(pass);</span><br><span>            }</span><br><span>            }</span><br><span>    [] BSSAP.receive(tr_BSSMAP_CipherModeRej) -> value bssap {</span><br><span>                if (exp_fail == false) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        setverdict(fail, "Ciphering Mode Reject");</span><br><span style="color: hsl(120, 100%, 40%);">+                  Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Ciphering Mode Reject");</span><br><span>               } else {</span><br><span>                     setverdict(pass);</span><br><span>            }</span><br><span>@@ -586,13 +586,11 @@</span><br><span>            chan_nr := valueof(t_RslChanNr_SDCCH8(tn, bit2int(substr(inp, 2, 3))));</span><br><span>      }</span><br><span>    else {</span><br><span style="color: hsl(0, 100%, 40%);">-          setverdict(fail, "Unknown ChDesc!");</span><br><span style="color: hsl(0, 100%, 40%);">-          mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unknown ChDesc!");</span><br><span>     }</span><br><span> </span><br><span>        if (ch_desc.octet3 and4b '10'O == '10'O) {</span><br><span style="color: hsl(0, 100%, 40%);">-              setverdict(fail, "No support for Hopping");</span><br><span style="color: hsl(0, 100%, 40%);">-           mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "No support for Hopping");</span><br><span>      } else {</span><br><span>             var OCT2 concat := ch_desc.octet3 & ch_desc.octet4;</span><br><span>              arfcn := oct2int(concat);</span><br><span>@@ -635,17 +633,17 @@</span><br><span>    var RSL_IE_Body encr_info;</span><br><span>   if (ispresent(g_pars.encr) and g_pars.encr.enc_alg != '01'O) {</span><br><span>               if (not f_rsl_find_ie(chan_act, RSL_IE_ENCR_INFO, encr_info)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 setverdict(fail, "Missing Encryption IE in CHAN ACT");</span><br><span style="color: hsl(120, 100%, 40%);">+                      Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Missing Encryption IE in CHAN ACT");</span><br><span>           } else {</span><br><span>                     var RSL_AlgId alg := f_chipher_mode_bssmap_to_rsl(g_pars.encr.enc_alg);</span><br><span>                      if (not match(encr_info, tr_EncrInfo(alg, g_pars.encr.enc_key))) {</span><br><span style="color: hsl(0, 100%, 40%);">-                              setverdict(fail, "Wrong Encryption IE in CHAN ACT");</span><br><span style="color: hsl(120, 100%, 40%);">+                                Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Wrong Encryption IE in CHAN ACT");</span><br><span>                     }</span><br><span>            }</span><br><span>    } else {</span><br><span>             if (f_rsl_find_ie(chan_act, RSL_IE_ENCR_INFO, encr_info)) {</span><br><span>                  if (encr_info.encr_info.alg_id != RSL_ALG_ID_A5_0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            setverdict(fail, "Unexpected Encryption in CHAN ACT");</span><br><span style="color: hsl(120, 100%, 40%);">+                              Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected Encryption in CHAN ACT");</span><br><span>                   }</span><br><span>            }</span><br><span>    }</span><br><span>@@ -681,8 +679,7 @@</span><br><span>                      f_check_chan_act(st, chan_act);</span><br><span>                      repeat;</span><br><span>              } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        setverdict(fail, "Unexpected L3 received", l3);</span><br><span style="color: hsl(0, 100%, 40%);">-                       mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected L3 received", l3));</span><br><span>                 }</span><br><span>            }</span><br><span>    [st.rr_ass_cmpl_seen] RSL.receive(tr_RSL_REL_REQ(st.old_chan_nr, tr_RslLinkID_DCCH(0))) {</span><br><span>@@ -820,10 +817,10 @@</span><br><span>                ", mdcx_seen=", g_media.mgcp_conn[i].mdcx_seen, ", mdcx_seen_exp=", g_media.mgcp_conn[i].mdcx_seen_exp);</span><br><span> </span><br><span>                 if(g_media.mgcp_conn[i].crcx_seen != g_media.mgcp_conn[i].crcx_seen_exp) {</span><br><span style="color: hsl(0, 100%, 40%);">-                      setverdict(fail, "unexpected number of MGW-CRCX transactions");</span><br><span style="color: hsl(120, 100%, 40%);">+                     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "unexpected number of MGW-CRCX transactions");</span><br><span>          }</span><br><span>            if(g_media.mgcp_conn[i].mdcx_seen != g_media.mgcp_conn[i].mdcx_seen_exp) {</span><br><span style="color: hsl(0, 100%, 40%);">-                      setverdict(fail, "unexpected number of MGW-MDCX transactions");</span><br><span style="color: hsl(120, 100%, 40%);">+                     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "unexpected number of MGW-MDCX transactions");</span><br><span>          }</span><br><span>    }</span><br><span> }</span><br><span>@@ -862,14 +859,10 @@</span><br><span>       alt {</span><br><span>        [] BSSAP.receive(exp_l3_compl);</span><br><span>      [] BSSAP.receive(tr_BSSMAP_ComplL3) {</span><br><span style="color: hsl(0, 100%, 40%);">-           setverdict(fail, "Received non-matching COMPLETE LAYER 3 INFORMATION");</span><br><span style="color: hsl(0, 100%, 40%);">-               all component.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received non-matching COMPLETE LAYER 3 INFORMATION");</span><br><span>          }</span><br><span>    [] T.timeout {</span><br><span style="color: hsl(0, 100%, 40%);">-          setverdict(fail, "Timeout waiting for COMPLETE LAYER 3 INFORMATION");</span><br><span style="color: hsl(0, 100%, 40%);">-         all component.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for COMPLETE LAYER 3 INFORMATION");</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span>@@ -965,29 +958,19 @@</span><br><span>        [(st.is_assignment and st.assignment_done or</span><br><span>          (not st.is_assignment and (st.modify_done or not exp_modify))) and</span><br><span>   exp_compl] BSSAP.receive(tr_BSSMAP_AssignmentComplete) {</span><br><span style="color: hsl(0, 100%, 40%);">-               setverdict(fail, "Received non-matching ASSIGNMENT COMPLETE");</span><br><span style="color: hsl(0, 100%, 40%);">-                all component.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received non-matching ASSIGNMENT COMPLETE");</span><br><span>           }</span><br><span>    [exp_compl] BSSAP.receive(tr_BSSMAP_AssignmentFail) {</span><br><span style="color: hsl(0, 100%, 40%);">-           setverdict(fail, "Received unexpected ASSIGNMENT FAIL");</span><br><span style="color: hsl(0, 100%, 40%);">-              all component.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received unexpected ASSIGNMENT FAIL");</span><br><span>                 }</span><br><span>    [not exp_compl] BSSAP.receive(tr_BSSMAP_AssignmentComplete) {</span><br><span style="color: hsl(0, 100%, 40%);">-           setverdict(fail, "Received unexpected ASSIGNMENT COMPLETE");</span><br><span style="color: hsl(0, 100%, 40%);">-          all component.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received unexpected ASSIGNMENT COMPLETE");</span><br><span>             }</span><br><span>    [not exp_compl] BSSAP.receive(tr_BSSMAP_AssignmentFail) {</span><br><span style="color: hsl(0, 100%, 40%);">-               setverdict(fail, "Received non-matching ASSIGNMENT FAIL");</span><br><span style="color: hsl(0, 100%, 40%);">-            all component.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received non-matching ASSIGNMENT FAIL");</span><br><span>               }</span><br><span>    [] T.timeout {</span><br><span style="color: hsl(0, 100%, 40%);">-          setverdict(fail, "Timeout waiting for ASSIGNMENT COMPLETE");</span><br><span style="color: hsl(0, 100%, 40%);">-          all component.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for ASSIGNMENT COMPLETE");</span><br><span>             }</span><br><span>    }</span><br><span>    log("g_media ", g_media);</span><br><span>@@ -1055,8 +1038,7 @@</span><br><span>                  st.mdcx_seen_before_ho := g_media.mgcp_conn[0].mdcx_seen;</span><br><span>                    repeat;</span><br><span>              } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        setverdict(fail, "Unexpected L3 received", l3);</span><br><span style="color: hsl(0, 100%, 40%);">-                       mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                     Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected L3 received", l3));</span><br><span>                 }</span><br><span>            }</span><br><span>    [st.rr_ho_cmpl_seen] as_Media_ipacc();</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11501">change 11501</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/11501"/><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: merged </div>
<div style="display:none"> Gerrit-Change-Id: I9b71f7f7bd70d2da21fbad60c340d5bf8b3b9536 </div>
<div style="display:none"> Gerrit-Change-Number: 11501 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>