pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43752?usp=email )
Change subject: smf: Validate metrics ......................................................................
smf: Validate metrics
Change-Id: Idba67f84164a74c5778237cfd6fe753f8939dfef --- M smf/SMF_Session_CT.ttcn M smf/SMF_Session_CT_5G.ttcn M smf/SMF_Tests.default M smf/SMF_Tests.ttcn M smf/gen_links.sh M smf/regen_makefile.sh 6 files changed, 63 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/52/43752/1
diff --git a/smf/SMF_Session_CT.ttcn b/smf/SMF_Session_CT.ttcn index 2eae5c8..bb617cb 100644 --- a/smf/SMF_Session_CT.ttcn +++ b/smf/SMF_Session_CT.ttcn @@ -23,6 +23,8 @@ import from DIAMETER_Templates all; import from DIAMETER_Emulation all;
+import from Prometheus_Checker all; + import from NG_NAS_TypeDefs all;
import from PFCP_Types all; @@ -49,7 +51,8 @@
/* per-session component; we typically have 1..N per testcase */ type component SMF_Session_CT extends GTP2_ConnHdlr, GTP1U_ConnHdlr, DIAMETER_ConnHdlr, - PFCP_ConnHdlr, MutexCT, HTTP2_CT, HTTP2_ConnHdlr { + PFCP_ConnHdlr, MutexCT, HTTP2_CT, HTTP2_ConnHdlr, + Prometheus_Checker_CT { var SessionPars g_pars;
/* Address allocation */ @@ -301,6 +304,8 @@ runs on SMF_Session_CT { g_pars := valueof(pars);
+ f_prometheus_init(mp_smf_hostname, c_prometheus_default_http_port); + /* No need to register g_pars.pfcp_pars.gtp1u_pars.access.local.teid since we don't expect any message on it */ f_gtp1u_register_teid(g_pars.pfcp_pars.gtp1u_pars.core.local.teid);
diff --git a/smf/SMF_Session_CT_5G.ttcn b/smf/SMF_Session_CT_5G.ttcn index 0008235..61dfc0a 100644 --- a/smf/SMF_Session_CT_5G.ttcn +++ b/smf/SMF_Session_CT_5G.ttcn @@ -60,6 +60,7 @@ runs on SMF_Session_CT { /* Register SCP HTTP2 sever, where IUT will send all SBI requests: */ f_http2_server_emu_register(f_http2_server_path_match(), idx := HTTP2_CONN_SCP); + f_http2_adapter_init(); }
function f_handler_cleanup_5G() diff --git a/smf/SMF_Tests.default b/smf/SMF_Tests.default index 4c0b502..3a78848 100644 --- a/smf/SMF_Tests.default +++ b/smf/SMF_Tests.default @@ -1,6 +1,8 @@ [LOGGING]
[TESTPORT_PARAMETERS] +*.TCP.noDelay := "yes" // turn off nagle +*.HTTP.use_notification_ASPs := "yes"
[MODULE_PARAMETERS]
diff --git a/smf/SMF_Tests.ttcn b/smf/SMF_Tests.ttcn index 861004c..9341de4 100644 --- a/smf/SMF_Tests.ttcn +++ b/smf/SMF_Tests.ttcn @@ -23,6 +23,8 @@ import from DIAMETER_ts32_299_Templates all; import from DIAMETER_Emulation all;
+import from Prometheus_Checker all; + import from PFCP_Types all; import from PFCP_Emulation all; import from PFCP_Templates all; @@ -344,8 +346,21 @@
/* create an IPv4 session, then delete it again */ private function f_TC_createSession_deleteSession() runs on SMF_Session_CT { + var PrometheusExpects expects0 := valueof({ + ts_PrometheusExpect("ues_active", GAUGE, min := 0, max := 0), + ts_PrometheusExpect("gtp2_sessions_active", GAUGE, min := 0, max := 0) + }); + var PrometheusExpects expects1 := valueof({ + ts_PrometheusExpect("ues_active", GAUGE, min := 1, max := 1), + ts_PrometheusExpect("gtp2_sessions_active", GAUGE, min := 1, max := 1) + }); + f_prometheus_expect(expects0, wait_converge := true); + f_s5s8_create_session(); + f_prometheus_expect(expects1, wait_converge := true); + f_s5s8_delete_session(omit, Request_accepted); + f_prometheus_expect(expects0, wait_converge := true); setverdict(pass); } testcase TC_createSession_deleteSession() runs on SMF_Test_CT { @@ -379,6 +394,11 @@ f_shutdown(); }
+private function f_TC_createSession_deleteSession_250_Session() runs on SMF_Session_CT { + f_s5s8_create_session(); + f_s5s8_delete_session(omit, Request_accepted); + setverdict(pass); +} function f_TC_createSession_deleteSession_250(INT3b pdn_type) runs on SMF_Test_CT { var SMF_Session_CT vc_conn[250]; var integer i; @@ -387,7 +407,7 @@
for (i := 0; i < sizeof(vc_conn); i := i + 1) { var SessionPars pars := f_SessionPars(idx := i, pdn_type := pdn_type); - vc_conn[i] := f_start_handler(refers(f_TC_createSession_deleteSession), pars); + vc_conn[i] := f_start_handler(refers(f_TC_createSession_deleteSession_250_Session), pars); }
for (i := 0; i < sizeof(vc_conn); i := i + 1) { @@ -556,9 +576,21 @@
/* create an IPv4 session from 5G AMF, then delete it again */ private function f_TC_n11_createSession_deleteSession() runs on SMF_Session_CT { - f_n11_init(); + var PrometheusExpects expects0 := valueof({ + ts_PrometheusExpect("ues_active", GAUGE, min := 0, max := 0), + ts_PrometheusExpect("pfcp_sessions_active", GAUGE, min := 0, max := 0) + }); + var PrometheusExpects expects1 := valueof({ + ts_PrometheusExpect("ues_active", GAUGE, min := 1, max := 1), + ts_PrometheusExpect("pfcp_sessions_active", GAUGE, min := 1, max := 1) + }); + f_prometheus_expect(expects0, wait_converge := true); + f_n11_create_session(); + f_prometheus_expect(expects1, wait_converge := true); + f_n11_delete_session(); + f_prometheus_expect(expects0, wait_converge := true); setverdict(pass); } testcase TC_n11_createSession_deleteSession() runs on SMF_Test_CT { @@ -595,6 +627,11 @@ f_shutdown(); }
+private function f_TC_n11_createSession_deleteSession_250_Session() runs on SMF_Session_CT { + f_n11_create_session(); + f_n11_delete_session(); + setverdict(pass); +} function f_TC_n11_createSession_deleteSession_250(INT3b pdn_type) runs on SMF_Test_CT { var SMF_Session_CT vc_conn[250]; var integer i; @@ -603,7 +640,7 @@
for (i := 0; i < sizeof(vc_conn); i := i + 1) { var SessionPars pars := f_SessionPars(idx := i, pdn_type := pdn_type); - vc_conn[i] := f_start_handler(refers(f_TC_n11_createSession_deleteSession), pars); + vc_conn[i] := f_start_handler(refers(f_TC_n11_createSession_deleteSession_250_Session), pars); }
for (i := 0; i < sizeof(vc_conn); i := i + 1) { diff --git a/smf/gen_links.sh b/smf/gen_links.sh index 061f69a..7b7e678 100755 --- a/smf/gen_links.sh +++ b/smf/gen_links.sh @@ -54,6 +54,16 @@ FILES="DIAMETER_EncDec.cc" gen_links $DIR $FILES
+# Needed by HTTP_Adapter (Prometheus_Checker.ttcn metrics): +DIR=$BASEDIR/titan.TestPorts.Common_Components.Abstract_Socket/src +FILES="Abstract_Socket.cc Abstract_Socket.hh " +gen_links $DIR $FILES + +# Needed by HTTP_Adapter (Prometheus_Checker.ttcn metrics): +DIR=$BASEDIR/titan.TestPorts.HTTPmsg/src +FILES="HTTPmsg_MessageLen.ttcn HTTPmsg_MessageLen_Function.cc HTTPmsg_PT.cc HTTPmsg_PT.hh HTTPmsg_PortType.ttcn HTTPmsg_Types.ttcn " +gen_links $DIR $FILES + DIR=$BASEDIR/titan.ProtocolModules.HTTP2/src FILES="HTTP2_EncDec.cc HTTP2_Types.ttcn" gen_links $DIR $FILES @@ -126,6 +136,7 @@ FILES+="HTTP2_CodecPort.ttcn HTTP2_CodecPort_CtrlFunct.ttcn HTTP2_CodecPort_CtrlFunctDef.cc HTTP2_Templates.ttcn HTTP2_Functions.ttcn HTTP2_Msg.ttcn HTTP2_Adapter.ttcn HTTP2_Server_Emulation.ttcn " FILES+="TS29503_Nudm_UECM_Templates.ttcn TS29503_Nudm_SDM_Templates.ttcn TS29502_Nsmf_PDUSession_Templates.ttcn TS29512_Npcf_SMPolicyControl_Templates.ttcn TS29518_Namf_Communication_Templates.ttcn " FILES+="NG_NAS_Osmo_Types.ttcn NG_NAS_Osmo_Templates.ttcn NG_NAS_Functions.ttcn " +FILES+="HTTP_Adapter.ttcn Prometheus_Checker.ttcn " gen_links $DIR $FILES
gen_links_finish diff --git a/smf/regen_makefile.sh b/smf/regen_makefile.sh index 08a5b4a..b3d5863 100755 --- a/smf/regen_makefile.sh +++ b/smf/regen_makefile.sh @@ -5,6 +5,7 @@ FILES=" *.asn *.ttcn *.ttcnpp + Abstract_Socket.cc BSSGP_EncDec.cc common_ext.cc DIAMETER_CodecPort_CtrlFunctDef.cc @@ -14,6 +15,8 @@ GTPv1C_CodecPort_CtrlFunctDef.cc GTPv1U_CodecPort_CtrlFunctDef.cc GTPv2_CodecPort_CtrlFunctDef.cc + HTTPmsg_MessageLen_Function.cc + HTTPmsg_PT.cc HTTP2_EncDec.cc HTTP2_CodecPort_CtrlFunctDef.cc ICMPv6_EncDec.cc