<p>daniel has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19582">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Add statsd checker and use it in TC_assignment_sign<br><br>Related: SYS#4877<br>Change-Id: I8526b645dc4af59adcc1855699421a026f505c1d<br>---<br>M bsc/BSC_Tests.default<br>M bsc/BSC_Tests.ttcn<br>M bsc/MSC_ConnectionHandler.ttcn<br>M bsc/README.md<br>M bsc/gen_links.sh<br>M bsc/osmo-bsc.cfg<br>M bsc/regen_makefile.sh<br>7 files changed, 55 insertions(+), 3 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/82/19582/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.default b/bsc/BSC_Tests.default</span><br><span>index 8818359..c5d1559 100644</span><br><span>--- a/bsc/BSC_Tests.default</span><br><span>+++ b/bsc/BSC_Tests.default</span><br><span>@@ -17,8 +17,18 @@</span><br><span> *.BSCVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"</span><br><span> *.BSCVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"</span><br><span> *.BSCVTY.PROMPT1 := "OsmoBSC> "</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_MODE := "client"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_HOSTNAME := "127.0.0.1"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_PORTNUM := "4242"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_LOGIN_SKIPPED := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_READMODE := "buffered"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.STATSVTY.PROMPT1 := "OsmoBSC> "</span><br><span> </span><br><span> [MODULE_PARAMETERS]</span><br><span> Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoBSC";</span><br><span style="color: hsl(120, 100%, 40%);">+StatsD_Checker.mp_enable_stats := true;</span><br><span> </span><br><span> [EXECUTE]</span><br><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index 799d6a1..b58887d 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -45,6 +45,11 @@</span><br><span> import from Osmocom_CTRL_Types all;</span><br><span> import from Osmocom_CTRL_Adapter all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_CodecPort all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_CodecPort_CtrlFunct all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_Checker all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> import from Osmocom_VTY_Functions all;</span><br><span> import from TELNETasp_PortType all;</span><br><span> </span><br><span>@@ -454,6 +459,9 @@</span><br><span>        var MGCP_Emulation_CT vc_MGCP;</span><br><span>       port TELNETasp_PT BSCVTY;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* StatsD */</span><br><span style="color: hsl(120, 100%, 40%);">+  var StatsD_Checker_CT vc_STATSD;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   var RAN_Adapter g_bssap[NUM_MSC];</span><br><span>    /* for old legacy-tests only */</span><br><span>      port BSSAP_CODEC_PT BSSAP;</span><br><span>@@ -487,6 +495,8 @@</span><br><span>     integer mp_bsc_rsl_port := 3003;</span><br><span>     /* port number to which to establish the IPA CTRL connection */</span><br><span>      integer mp_bsc_ctrl_port := 4249;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* port number to which to listen for STATSD metrics */</span><br><span style="color: hsl(120, 100%, 40%);">+       integer mp_bsc_statsd_port := 8125;</span><br><span>  /* IP address at which the test binds */</span><br><span>     charstring mp_test_ip := "127.0.0.1";</span><br><span> </span><br><span>@@ -776,6 +786,13 @@</span><br><span>                     "sccp-timer iar " & int2str(g_bsc_sccp_timer_iar)});</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_init_statsd(charstring id) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        id := id & "-STATS";</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_STATSD := StatsD_Checker_CT.create(id);</span><br><span style="color: hsl(120, 100%, 40%);">+    vc_STATSD.start(StatsD_Checker.main(mp_test_ip, mp_bsc_statsd_port));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> private function f_logp(charstring log_msg) runs on MSC_ConnHdlr</span><br><span> {</span><br><span>  // log on TTCN3 log output</span><br><span>@@ -873,6 +890,8 @@</span><br><span>     }</span><br><span> </span><br><span>        var my_BooleanList allow_attach := { false, false, false };</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init_statsd("VirtMSC");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        for (bssap_idx := 0; bssap_idx < nr_msc; bssap_idx := bssap_idx+1) {</span><br><span>              allow_attach[bssap_idx] := true;</span><br><span>             /* Call a function of our 'parent component' RAN_Adapter_CT to start the</span><br><span>@@ -2610,6 +2629,7 @@</span><br><span>     connect(vc_conn:BSSAP, g_bssap[bssap_idx].vc_RAN:CLIENT);</span><br><span>    connect(vc_conn:MGCP, vc_MGCP:MGCP_CLIENT);</span><br><span>  connect(vc_conn:MGCP_MULTI, vc_MGCP:MGCP_CLIENT_MULTI);</span><br><span style="color: hsl(120, 100%, 40%);">+       connect(vc_conn:STATSD_PROC, vc_STATSD:STATSD_PROC);</span><br><span> }</span><br><span> </span><br><span> function f_start_handler(void_fn fn, template (omit) TestHdlrParams pars := omit)</span><br><span>@@ -2771,7 +2791,15 @@</span><br><span>  var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, omit);</span><br><span>        var PDU_BSSAP ass_cmd := f_gen_ass_req();</span><br><span>    ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeSIGNAL);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_statsd_reset();</span><br><span>    f_establish_fully(ass_cmd, exp_compl);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      var StatsDExpects expect := {</span><br><span style="color: hsl(120, 100%, 40%);">+         { name := "TTCN3.bsc.0.assignment.attempted", mtype := "c", min := 1, max := 1},</span><br><span style="color: hsl(120, 100%, 40%);">+          { name := "TTCN3.bsc.0.assignment.completed", mtype := "c", min := 1, max := 1}</span><br><span style="color: hsl(120, 100%, 40%);">+   };</span><br><span style="color: hsl(120, 100%, 40%);">+    f_statsd_expect(expect);</span><br><span> }</span><br><span> </span><br><span> testcase TC_assignment_sign() runs on test_CT {</span><br><span>diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>index 7b8f087..bf96eff 100644</span><br><span>--- a/bsc/MSC_ConnectionHandler.ttcn</span><br><span>+++ b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>@@ -30,6 +30,8 @@</span><br><span> import from MGCP_Emulation all;</span><br><span> import from SDP_Types all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_Checker all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> import from RSL_Emulation all;</span><br><span> import from RSL_Types all;</span><br><span> </span><br><span>@@ -409,7 +411,7 @@</span><br><span> /* this component represents a single subscriber connection at the MSC.</span><br><span>  * There is a 1:1 mapping between SCCP connections and RAN_ConnHdlr components.</span><br><span>  * We inherit all component variables, ports, functions, ... from RAN_ConnHdlr */</span><br><span style="color: hsl(0, 100%, 40%);">-type component MSC_ConnHdlr extends RAN_ConnHdlr, RSL_DchanHdlr, MGCP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+type component MSC_ConnHdlr extends RAN_ConnHdlr, RSL_DchanHdlr, MGCP_ConnHdlr, StatsD_ConnHdlr {</span><br><span>        /* SCCP Connecction Identifier for the underlying SCCP connection */</span><br><span>         var integer g_sccp_conn_id;</span><br><span> </span><br><span>diff --git a/bsc/README.md b/bsc/README.md</span><br><span>index 015687c..47714e9 100644</span><br><span>--- a/bsc/README.md</span><br><span>+++ b/bsc/README.md</span><br><span>@@ -8,6 +8,7 @@</span><br><span>     * MGW side: MGCP (emulates MGW side)</span><br><span>     * VTY</span><br><span>     * CTRL</span><br><span style="color: hsl(120, 100%, 40%);">+    * StatsD</span><br><span> </span><br><span> {% dot bsc_tests.svg</span><br><span> digraph G {</span><br><span>@@ -22,6 +23,7 @@</span><br><span>   ATS -> BSC [label="A-bis RSL"];</span><br><span>   ATS -> BSC [label="CTRL"];</span><br><span>   ATS -> BSC [label="VTY"];</span><br><span style="color: hsl(120, 100%, 40%);">+  BSC -> ATS [label="StatsD"];</span><br><span>   ATS -> STP [label="A BSSAP\nSCCP/M3UA"];</span><br><span>   BSC -> STP [label="A BSSAP\nSCCP/M3UA"];</span><br><span> }</span><br><span>@@ -39,6 +41,7 @@</span><br><span>   ATS -> BSC [label="A-bis RSL"];</span><br><span>   ATS -> BSC [label="CTRL"];</span><br><span>   ATS -> BSC [label="VTY"];</span><br><span style="color: hsl(120, 100%, 40%);">+  BSC -> ATS [label="StatsD"];</span><br><span>   ATS -> BSC [label="A BSSAP\nSCCP/IPA"];</span><br><span> }</span><br><span> %}</span><br><span>diff --git a/bsc/gen_links.sh b/bsc/gen_links.sh</span><br><span>index 343cc1c..02e093d 100755</span><br><span>--- a/bsc/gen_links.sh</span><br><span>+++ b/bsc/gen_links.sh</span><br><span>@@ -70,6 +70,7 @@</span><br><span> FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn RAN_Adapter.ttcnpp Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.ttcn SCCP_Templates.ttcn IPA_Testing.ttcn GSM_SystemInformation.ttcn GSM_RestOctets.ttcn "</span><br><span> FILES+="CBSP_Types.ttcn CBSP_Templates.ttcn "</span><br><span> FILES+="CBSP_CodecPort.ttcn CBSP_CodecPort_CtrlFunct.ttcn CBSP_CodecPort_CtrlFunctdef.cc CBSP_Adapter.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES+="StatsD_Types.ttcn StatsD_CodecPort.ttcn StatsD_CodecPort_CtrlFunct.ttcn StatsD_CodecPort_CtrlFunctdef.cc StatsD_Checker.ttcn"</span><br><span> gen_links $DIR $FILES</span><br><span> </span><br><span> ignore_pp_results</span><br><span>diff --git a/bsc/osmo-bsc.cfg b/bsc/osmo-bsc.cfg</span><br><span>index a4c767a..1662d00 100644</span><br><span>--- a/bsc/osmo-bsc.cfg</span><br><span>+++ b/bsc/osmo-bsc.cfg</span><br><span>@@ -41,7 +41,15 @@</span><br><span>  logging level lm3ua notice</span><br><span>  logging level lmgcp notice</span><br><span> !</span><br><span style="color: hsl(0, 100%, 40%);">-stats interval 5</span><br><span style="color: hsl(120, 100%, 40%);">+stats interval 0</span><br><span style="color: hsl(120, 100%, 40%);">+stats reporter statsd</span><br><span style="color: hsl(120, 100%, 40%);">+ prefix TTCN3</span><br><span style="color: hsl(120, 100%, 40%);">+ level subscriber</span><br><span style="color: hsl(120, 100%, 40%);">+ remote-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+ remote-port 8125</span><br><span style="color: hsl(120, 100%, 40%);">+ flush-period 1</span><br><span style="color: hsl(120, 100%, 40%);">+ mtu 1024</span><br><span style="color: hsl(120, 100%, 40%);">+ enable</span><br><span> !</span><br><span> line vty</span><br><span>  no login</span><br><span>diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh</span><br><span>index def4a3f..f1ea963 100755</span><br><span>--- a/bsc/regen_makefile.sh</span><br><span>+++ b/bsc/regen_makefile.sh</span><br><span>@@ -2,7 +2,7 @@</span><br><span> </span><br><span> MAIN=BSC_Tests.ttcn</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc CBSP_CodecPort_CtrlFunctdef.cc *.c"</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc CBSP_CodecPort_CtrlFunctdef.cc StatsD_CodecPort_CtrlFunctdef.cc *.c"</span><br><span> </span><br><span> export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP -DIPA_EMULATION_CTRL -DIPA_EMULATION_SCCP -DRAN_EMULATION_BSSAP -DRAN_EMULATION_MGCP -DRAN_EMULATION_CTRL -DUSE_MTP3_DISTRIBUTOR"</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19582">change 19582</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/+/19582"/><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: I8526b645dc4af59adcc1855699421a026f505c1d </div>
<div style="display:none"> Gerrit-Change-Number: 19582 </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-MessageType: newchange </div>