<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22012">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">CTRL: Introduce support to run osmocom CTRL server<br><br>Change-Id: I37db9962f51baf2c63bd58ec47ec89f773d7a255<br>---<br>M bsc-nat/BSCNAT_Tests.ttcn<br>M bsc/BSC_Tests.ttcn<br>M bts/BTS_Tests.ttcn<br>M hlr/HLR_Tests.ttcn<br>M library/Osmocom_CTRL_Adapter.ttcn<br>M library/Osmocom_CTRL_Functions.ttcn<br>M msc/BSC_ConnectionHandler.ttcn<br>M msc/MSC_Tests.ttcn<br>M sip/SIP_Tests.ttcn<br>9 files changed, 60 insertions(+), 22 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc-nat/BSCNAT_Tests.ttcn b/bsc-nat/BSCNAT_Tests.ttcn</span><br><span>index 41d58d7..1b24855 100644</span><br><span>--- a/bsc-nat/BSCNAT_Tests.ttcn</span><br><span>+++ b/bsc-nat/BSCNAT_Tests.ttcn</span><br><span>@@ -151,7 +151,7 @@</span><br><span> </span><br><span>     f_init_vty("VirtBSCNAT");</span><br><span>  f_vty_allow_osmux(use_osmux);</span><br><span style="color: hsl(0, 100%, 40%);">-   f_ipa_ctrl_start(mp_nat_ip, mp_nat_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ipa_ctrl_start_client(mp_nat_ip, mp_nat_ctrl_port);</span><br><span> </span><br><span>    for (i := 0; i < NUM_MSC; i := i+1) {</span><br><span>             f_init_MscState(msc[i], mp_msc_pc +i, mp_bsc_pc, mp_msc_ssn, mp_bsc_ssn);</span><br><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index a1fa4dd..2c02e36 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -1103,7 +1103,7 @@</span><br><span>       /* start the test with exactly all enabled MSCs allowed to attach */</span><br><span>         f_vty_msc_allow_attach(BSCVTY, allow_attach);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       f_ipa_ctrl_start(mp_bsc_ip, mp_bsc_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ipa_ctrl_start_client(mp_bsc_ip, mp_bsc_ctrl_port);</span><br><span> </span><br><span>    f_init_mgcp("VirtMSC");</span><br><span> </span><br><span>@@ -3080,7 +3080,7 @@</span><br><span>        bts[0].rsl.ccm_pars.name := "Osmocom TTCN-3 BTS Simulator";</span><br><span>        bts[0].rsl.ccm_pars.unit_id := "99/0/0"; /* value which is unknown at BTS */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      f_ipa_ctrl_start(mp_bsc_ip, mp_bsc_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ipa_ctrl_start_client(mp_bsc_ip, mp_bsc_ctrl_port);</span><br><span> </span><br><span>    f_init_mgcp("VirtMSC");</span><br><span> </span><br><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index 16e3d71..c843032 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -547,7 +547,7 @@</span><br><span>     f_init_rsl(id);</span><br><span>      f_sleep(0.5);   /* workaround for OS#3000 */</span><br><span>         f_init_vty(id);</span><br><span style="color: hsl(0, 100%, 40%);">- f_ipa_ctrl_start(mp_ctrl_ip, mp_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_ipa_ctrl_start_client(mp_ctrl_ip, mp_ctrl_port);</span><br><span> </span><br><span>       /* Send SI3 to the BTS, it is needed for various computations */</span><br><span>     f_rsl_bcch_fill(RSL_SYSTEM_INFO_3, ts_SI3_default);</span><br><span>@@ -5376,7 +5376,7 @@</span><br><span> </span><br><span>      /* re-connect CTRL port from BTS to BSC */</span><br><span>   f_ipa_ctrl_stop();</span><br><span style="color: hsl(0, 100%, 40%);">-      f_ipa_ctrl_start(mp_bsc_ctrl_ip, mp_bsc_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_ipa_ctrl_start_client(mp_bsc_ctrl_ip, mp_bsc_ctrl_port);</span><br><span> </span><br><span>       /* Send that OML Alert */</span><br><span>    PCU.send(t_SD_PCUIF(g_pcu_conn_id, ts_PCUIF_TXT_IND(0, PCU_OML_ALERT, testcasename())));</span><br><span>diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn</span><br><span>index 36e28b8..ea450b3 100644</span><br><span>--- a/hlr/HLR_Tests.ttcn</span><br><span>+++ b/hlr/HLR_Tests.ttcn</span><br><span>@@ -245,7 +245,7 @@</span><br><span>          f_init_gsup_server("HLR_Test");</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   f_ipa_ctrl_start(mp_hlr_ip, mp_hlr_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ipa_ctrl_start_client(mp_hlr_ip, mp_hlr_ctrl_port);</span><br><span> }</span><br><span> </span><br><span> /*! Start HLR_ConnHdlr from testCT in a separate thread.</span><br><span>diff --git a/library/Osmocom_CTRL_Adapter.ttcn b/library/Osmocom_CTRL_Adapter.ttcn</span><br><span>index 0be3ebb..fefff8b 100644</span><br><span>--- a/library/Osmocom_CTRL_Adapter.ttcn</span><br><span>+++ b/library/Osmocom_CTRL_Adapter.ttcn</span><br><span>@@ -26,12 +26,24 @@</span><br><span>    port IPA_CTRL_PT IPA_CTRL;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*! Start the CTRL connection to the specified BSC IP+Port */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_ipa_ctrl_start(charstring bsc_host, PortNumber bsc_port)</span><br><span style="color: hsl(120, 100%, 40%);">+/* wait for IPA CTRL link to connect and send UP */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_ipa_ctrl_wait_link_up()</span><br><span> runs on CTRL_Adapter_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       var charstring id := "IPA-CTRL"</span><br><span>    timer T := 10.0;</span><br><span style="color: hsl(120, 100%, 40%);">+      T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] IPA_CTRL.receive(tr_ASP_IPA_EV(ASP_IPA_EVENT_UP)) { }</span><br><span style="color: hsl(120, 100%, 40%);">+      [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                setverdict(fail, "Timeout CTRL waiting for ASP_IPA_EVENT_UP");</span><br><span style="color: hsl(120, 100%, 40%);">+              mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Start the CTRL client connection to the specified CTRL IP+Port server*/</span><br><span style="color: hsl(120, 100%, 40%);">+function f_ipa_ctrl_start_client(charstring bsc_host, PortNumber bsc_port)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on CTRL_Adapter_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+    var charstring id := "IPA-CTRL-CLI"</span><br><span> </span><br><span>    vc_CTRL_IPA := IPA_Emulation_CT.create(id & "-IPA");</span><br><span> </span><br><span>@@ -41,15 +53,21 @@</span><br><span>         vc_CTRL_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", 0,</span><br><span>                                                 c_IPA_default_ccm_pars, false));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        /* wait for IPA CTRL link to connect and send UP */</span><br><span style="color: hsl(0, 100%, 40%);">-     T.start;</span><br><span style="color: hsl(0, 100%, 40%);">-        alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] IPA_CTRL.receive(tr_ASP_IPA_EV(ASP_IPA_EVENT_UP)) { }</span><br><span style="color: hsl(0, 100%, 40%);">-        [] T.timeout {</span><br><span style="color: hsl(0, 100%, 40%);">-          setverdict(fail, "Timeout CTRL waiting for ASP_IPA_EVENT_UP");</span><br><span style="color: hsl(0, 100%, 40%);">-                mtc.stop;</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ipa_ctrl_wait_link_up();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Start the CTRL server on the specified CTRL IP+Port */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_ipa_ctrl_start_server(charstring listen_host, PortNumber listen_port)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on CTRL_Adapter_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var charstring id := "IPA-CTRL-SRV"</span><br><span style="color: hsl(120, 100%, 40%);">+ timer T := 10.0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    vc_CTRL_IPA := IPA_Emulation_CT.create(id & "-IPA");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  map(vc_CTRL_IPA:IPA_PORT, system:IPA_CODEC_PT);</span><br><span style="color: hsl(120, 100%, 40%);">+       connect(vc_CTRL_IPA:IPA_CTRL_PORT, self:IPA_CTRL);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_CTRL_IPA.start(IPA_Emulation.main_server(listen_host, listen_port, false));</span><br><span> }</span><br><span> </span><br><span> function f_ipa_ctrl_stop() runs on CTRL_Adapter_CT {</span><br><span>diff --git a/library/Osmocom_CTRL_Functions.ttcn b/library/Osmocom_CTRL_Functions.ttcn</span><br><span>index d26dc89..294fe33 100644</span><br><span>--- a/library/Osmocom_CTRL_Functions.ttcn</span><br><span>+++ b/library/Osmocom_CTRL_Functions.ttcn</span><br><span>@@ -117,6 +117,26 @@</span><br><span>              return rx.cmd.val;</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Expect a matching SET, optionally answer */</span><br><span style="color: hsl(120, 100%, 40%);">+        function f_ctrl_exp_get(IPA_CTRL_PT pt, template CtrlVariable variable,</span><br><span style="color: hsl(120, 100%, 40%);">+                                template (omit) CtrlValue rsp := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                float timeout_val := 2.0) {</span><br><span style="color: hsl(120, 100%, 40%);">+          timer T := timeout_val;</span><br><span style="color: hsl(120, 100%, 40%);">+               var CtrlMessage rx;</span><br><span style="color: hsl(120, 100%, 40%);">+           T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+              alt {</span><br><span style="color: hsl(120, 100%, 40%);">+         [] pt.receive(tr_CtrlMsgGet(?, variable)) -> value rx {</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (ispresent(rsp)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                         pt.send(ts_CtrlMsgGetRepl(rx.cmd.id, valueof(variable), valueof(rsp)));</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                        setverdict(fail, "Timeout waiting for GET ", variable);</span><br><span style="color: hsl(120, 100%, 40%);">+                     mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* Expect a matching GET result */</span><br><span>   function f_ctrl_get_exp(IPA_CTRL_PT pt, CtrlVariable variable, template CtrlValue exp) {</span><br><span>             var charstring ctrl_resp;</span><br><span>diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn</span><br><span>index 6ea4f86..3996a87 100644</span><br><span>--- a/msc/BSC_ConnectionHandler.ttcn</span><br><span>+++ b/msc/BSC_ConnectionHandler.ttcn</span><br><span>@@ -182,7 +182,7 @@</span><br><span>         }</span><br><span> </span><br><span>        if (g_pars.ipa_ctrl_enable == true) {</span><br><span style="color: hsl(0, 100%, 40%);">-           f_ipa_ctrl_start(g_pars.ipa_ctrl_ip, g_pars.ipa_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+           f_ipa_ctrl_start_client(g_pars.ipa_ctrl_ip, g_pars.ipa_ctrl_port);</span><br><span>   }</span><br><span> </span><br><span>        map(self:MSCVTY, system:MSCVTY);</span><br><span>diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn</span><br><span>index 5129c5b..e6681bb 100644</span><br><span>--- a/msc/MSC_Tests.ttcn</span><br><span>+++ b/msc/MSC_Tests.ttcn</span><br><span>@@ -318,7 +318,7 @@</span><br><span>          }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   f_ipa_ctrl_start(mp_msc_ip, mp_msc_ctrl_port);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ipa_ctrl_start_client(mp_msc_ip, mp_msc_ctrl_port);</span><br><span>        f_init_mncc("MSC_Test");</span><br><span>   f_init_mgcp("MSC_Test");</span><br><span> </span><br><span>diff --git a/sip/SIP_Tests.ttcn b/sip/SIP_Tests.ttcn</span><br><span>index 053395e..37c158e 100644</span><br><span>--- a/sip/SIP_Tests.ttcn</span><br><span>+++ b/sip/SIP_Tests.ttcn</span><br><span>@@ -134,7 +134,7 @@</span><br><span> }</span><br><span> </span><br><span> function f_init() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       //f_ipa_ctrl_start(mp_osmosip_host, mp_osmosip_port_ctrl);</span><br><span style="color: hsl(120, 100%, 40%);">+    //f_ipa_ctrl_start_client(mp_osmosip_host, mp_osmosip_port_ctrl);</span><br><span>    f_init_mncc("SIP_Test");</span><br><span>   log("end of f_init_mncc");</span><br><span>         f_init_sip(vc_SIP, "SIP_Test");</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22012">change 22012</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/c/osmo-ttcn3-hacks/+/22012"/><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-Change-Id: I37db9962f51baf2c63bd58ec47ec89f773d7a255 </div>
<div style="display:none"> Gerrit-Change-Number: 22012 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>