pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37958?usp=email )
Change subject: s1gw: Initial StatsD support ......................................................................
s1gw: Initial StatsD support
Change-Id: Ib98c2fe68006a8d0f45de6966927b349a3b933ca --- M s1gw/S1GW_ConnHdlr.ttcn M s1gw/S1GW_Tests.cfg M s1gw/S1GW_Tests.ttcn M s1gw/gen_links.sh M s1gw/regen_makefile.sh 5 files changed, 43 insertions(+), 10 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/58/37958/1
diff --git a/s1gw/S1GW_ConnHdlr.ttcn b/s1gw/S1GW_ConnHdlr.ttcn index bb2a309..6a1eb39 100644 --- a/s1gw/S1GW_ConnHdlr.ttcn +++ b/s1gw/S1GW_ConnHdlr.ttcn @@ -34,9 +34,13 @@ import from S1AP_Constants all;
import from SCTP_Templates all; + +import from StatsD_Types all; +import from StatsD_Checker all; + import from S1AP_Server all;
-type component ConnHdlr extends S1APSRV_ConnHdlr, PFCP_ConnHdlr { +type component ConnHdlr extends S1APSRV_ConnHdlr, PFCP_ConnHdlr, StatsD_ConnHdlr { var ConnHdlrPars g_pars; port S1AP_CODEC_PT S1AP_ENB; var ConnectionId g_s1ap_conn_id := -1; @@ -45,7 +49,8 @@
type record ConnHdlrPars { integer idx, - Global_ENB_ID genb_id + Global_ENB_ID genb_id, + charstring statsd_prefix };
template Global_ENB_ID @@ -59,9 +64,10 @@ }
template (value) ConnHdlrPars -t_ConnHdlrPars(integer idx := 0) := { +t_ConnHdlrPars(integer idx := 0, charstring statsd_prefix := "") := { idx := idx, - genb_id := ts_Global_ENB_ID(idx) + genb_id := ts_Global_ENB_ID(idx), + statsd_prefix := statsd_prefix }
type function void_fn(charstring id) runs on ConnHdlr; diff --git a/s1gw/S1GW_Tests.cfg b/s1gw/S1GW_Tests.cfg index dfcdbb9..54e7992 100644 --- a/s1gw/S1GW_Tests.cfg +++ b/s1gw/S1GW_Tests.cfg @@ -17,6 +17,8 @@ S1GW_Tests.mp_mme_bind_ip := "127.0.2.10"; S1GW_Tests.mp_s1gw_upf_ip := "127.0.3.1"; S1GW_Tests.mp_upf_bind_ip := "127.0.3.10"; +S1GW_Tests.mp_local_statsd_ip := "127.0.4.10"; +S1GW_Tests.mp_local_statsd_port := 8125;
[MAIN_CONTROLLER]
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn index 00b83e8..67c4267 100644 --- a/s1gw/S1GW_Tests.ttcn +++ b/s1gw/S1GW_Tests.ttcn @@ -34,6 +34,12 @@ import from PFCP_CodecPort all;
import from SCTP_Templates all; + +import from StatsD_Types all; +import from StatsD_CodecPort all; +import from StatsD_CodecPort_CtrlFunct all; +import from StatsD_Checker all; + import from S1AP_Server all; import from S1GW_ConnHdlr all;
@@ -44,12 +50,18 @@ charstring mp_mme_bind_ip := "127.0.2.10"; /* MME address on which we get connections from S1GW */ charstring mp_s1gw_upf_ip := "127.0.3.1"; /* UPF facing address of the S1GW */ charstring mp_upf_bind_ip := "127.0.3.10"; /* UPF address on which we get connections from S1GW */ + + /* Our emulated StatsD server: */ + charstring mp_local_statsd_ip := "127.0.4.10"; + integer mp_local_statsd_port := 8125; + charstring mp_statsd_prefix := "s1gw."; }
-type component test_CT { +type component test_CT extends StatsD_Checker_CT { timer g_Tguard; var S1AP_Server_CT vc_S1APSRV; var PFCP_Emulation_CT vc_PFCP; + var StatsD_Checker_CT vc_STATSD; };
private altstep as_Tguard() runs on test_CT { @@ -64,6 +76,8 @@ g_Tguard.start(Tval); activate(as_Tguard());
+ f_init_statsd("VirtHNBGW", vc_STATSD, mp_local_statsd_ip, mp_local_statsd_port); + if (s1apsrv_start) { f_init_s1ap_srv(); } @@ -95,12 +109,20 @@ vc_PFCP.start(PFCP_Emulation.main(pfcp_cfg)); }
+function f_new_ConnHdlrPars(integer idx := 0) return ConnHdlrPars { + var ConnHdlrPars pars := valueof(t_ConnHdlrPars(idx, mp_statsd_prefix)); + return pars; +} + function f_ConnHdlr_spawn(void_fn fn, ConnHdlrPars pars) runs on test_CT return ConnHdlr { var ConnHdlr vc_conn; var charstring id := "ConnHdlr-" & testcasename() & "-" & int2str(pars.idx);
vc_conn := ConnHdlr.create(id) alive; + if (isbound(vc_STATSD) and vc_STATSD.running) { + connect(vc_conn:STATSD_PROC, vc_STATSD:STATSD_PROC); + } if (isbound(vc_S1APSRV) and vc_S1APSRV.running) { connect(vc_conn:S1AP_CONN, vc_S1APSRV:S1AP_CLIENT); connect(vc_conn:S1AP_PROC, vc_S1APSRV:S1AP_PROC); @@ -126,7 +148,7 @@ f_ConnHdlr_s1ap_unregister(g_pars.genb_id); } testcase TC_setup() runs on test_CT { - var ConnHdlrPars pars := valueof(t_ConnHdlrPars); + var ConnHdlrPars pars := f_new_ConnHdlrPars(); var ConnHdlr vc_conn;
f_init(); @@ -140,7 +162,7 @@ f_init();
for (var integer i := 0; i < 42; i := i + 1) { - var ConnHdlrPars pars := valueof(t_ConnHdlrPars(i)); + var ConnHdlrPars pars := f_new_ConnHdlrPars(i); var ConnHdlr vc_conn := f_ConnHdlr_spawn(refers(f_TC_setup), pars); vc_conns := vc_conns & { vc_conn }; } @@ -168,7 +190,7 @@ f_ConnHdlr_s1ap_unregister(g_pars.genb_id); } testcase TC_conn_term_by_mme() runs on test_CT { - var ConnHdlrPars pars := valueof(t_ConnHdlrPars); + var ConnHdlrPars pars := f_new_ConnHdlrPars(); var ConnHdlr vc_conn;
f_init(); @@ -188,7 +210,7 @@ setverdict(pass); } testcase TC_conn_term_mme_unavail() runs on test_CT { - var ConnHdlrPars pars := valueof(t_ConnHdlrPars); + var ConnHdlrPars pars := f_new_ConnHdlrPars(); var ConnHdlr vc_conn;
f_init(s1apsrv_start := false); @@ -263,7 +285,7 @@ f_ConnHdlr_s1ap_unregister(g_pars.genb_id); } testcase TC_e_rab_setup() runs on test_CT { - var ConnHdlrPars pars := valueof(t_ConnHdlrPars); + var ConnHdlrPars pars := f_new_ConnHdlrPars(); var ConnHdlr vc_conn;
f_init(); diff --git a/s1gw/gen_links.sh b/s1gw/gen_links.sh index ef8bdde..919e7f8 100755 --- a/s1gw/gen_links.sh +++ b/s1gw/gen_links.sh @@ -32,6 +32,7 @@ FILES+="PFCP_CodecPort.ttcn PFCP_CodecPort_CtrlFunct.ttcn PFCP_CodecPort_CtrlFunctDef.cc PFCP_Emulation.ttcn PFCP_Templates.ttcn " FILES+="S1AP_CodecPort.ttcn S1AP_CodecPort_CtrlFunctDef.cc S1AP_CodecPort_CtrlFunct.ttcn " FILES+="SCTP_Templates.ttcn " +FILES+="StatsD_Types.ttcn StatsD_CodecPort.ttcn StatsD_CodecPort_CtrlFunct.ttcn StatsD_CodecPort_CtrlFunctdef.cc StatsD_Checker.ttcnpp " gen_links $DIR $FILES
ignore_pp_results diff --git a/s1gw/regen_makefile.sh b/s1gw/regen_makefile.sh index 8c32b3d..adf765e 100755 --- a/s1gw/regen_makefile.sh +++ b/s1gw/regen_makefile.sh @@ -5,12 +5,14 @@ FILES=" *.asn *.ttcn + *.ttcnpp IPL4asp_PT.cc IPL4asp_discovery.cc Native_FunctionDefs.cc PFCP_CodecPort_CtrlFunctDef.cc S1AP_CodecPort_CtrlFunctDef.cc S1AP_EncDec.cc + StatsD_CodecPort_CtrlFunctdef.cc TCCConversion.cc TCCEncoding.cc TCCInterface.cc