pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34254 )
Change subject: dia2gsup: initial refactoring ......................................................................
dia2gsup: initial refactoring
Do some refactoring to the core infrastructure of the tests before adding new testsi. Among others: - Move Tguard to main component - Avoid having to call f_init_handler in each handler (do it automatically during f_start_handler()).
Change-Id: I4a1bf6ca03549688704815e3fec4e5152d0181a6 --- M dia2gsup/DIA2GSUP_Tests.ttcn 1 file changed, 40 insertions(+), 21 deletions(-)
Approvals: fixeria: Looks good to me, but someone else must approve pespin: Looks good to me, approved osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/dia2gsup/DIA2GSUP_Tests.ttcn b/dia2gsup/DIA2GSUP_Tests.ttcn index d709512..6a3f85c 100644 --- a/dia2gsup/DIA2GSUP_Tests.ttcn +++ b/dia2gsup/DIA2GSUP_Tests.ttcn @@ -1,5 +1,6 @@ module DIA2GSUP_Tests {
+import from Misc_Helpers all; import from General_Types all; import from Osmocom_Types all; import from L3_Common all; @@ -21,11 +22,11 @@ var IPA_Emulation_CT vc_GSUP_IPA; port IPA_CTRL_PT GSUP_IPA_EVENT;
+ timer g_Tguard; };
type component D2G_ConnHdlr extends DIAMETER_ConnHdlr, GSUP_ConnHdlr { var D2G_ConnHdlrPars g_pars; - timer g_Tguard := 30.0; };
type record D2G_ConnHdlrPars { @@ -33,7 +34,7 @@ AuthVector vec optional };
-private function f_init_pars(integer imsi_suffix) +private function f_init_pars(integer imsi_suffix := 1) runs on MTC_CT return D2G_ConnHdlrPars { var D2G_ConnHdlrPars pars := { imsi := f_gen_imsi(imsi_suffix), @@ -59,10 +60,9 @@ charstring mp_diam_realm := "localdomain"; }
-private altstep as_Tguard() runs on D2G_ConnHdlr { +private altstep as_Tguard() runs on MTC_CT { [] g_Tguard.timeout { - setverdict(fail, "Tguard timeout"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Tguard timeout"); } }
@@ -95,18 +95,18 @@ } }
-private function f_init_handler(D2G_ConnHdlrPars pars, float t_guard := 20.0) runs on D2G_ConnHdlr { +private type function void_fn(charstring id) runs on D2G_ConnHdlr; + +private function f_init_handler(void_fn fn, charstring id, D2G_ConnHdlrPars pars) runs on D2G_ConnHdlr { g_pars := pars; - activate(as_Tguard()); - g_Tguard.start(t_guard);
/* tell GSUP dispatcher to send this IMSI to us */ f_create_gsup_expect(hex2str(g_pars.imsi)); + + fn.apply(id); }
-private type function void_fn(charstring id, D2G_ConnHdlrPars pars) runs on D2G_ConnHdlr; - -private function f_start_handler_with_pars(void_fn fn, D2G_ConnHdlrPars pars) +private function f_start_handler(void_fn fn, D2G_ConnHdlrPars pars) runs on MTC_CT return D2G_ConnHdlr { var D2G_ConnHdlr vc_conn; var charstring id := testcasename(); @@ -121,7 +121,7 @@
DIAMETER_UNIT.receive(DiameterCapabilityExchgInd:?);
- vc_conn.start(derefers(fn)(id, pars)); + vc_conn.start(f_init_handler(fn, id, pars)); return vc_conn; }
@@ -154,13 +154,17 @@ vc_DIAMETER.start(DIAMETER_Emulation.main(ops, pars, id)); }
-private function f_init() runs on MTC_CT { +private function f_init(float t_guard := 40.0) runs on MTC_CT { + + g_Tguard.start(t_guard); + activate(as_Tguard()); + f_init_gsup(testcasename()); f_init_diameter(testcasename()); }
-private function f_DIA_AI() runs on D2G_ConnHdlr { +private function f_DIA_AI_success() runs on D2G_ConnHdlr { var PDU_DIAMETER rx_dia; var UINT32 hbh_id := f_rnd_octstring(4); var UINT32 ete_id := f_rnd_octstring(4); @@ -191,25 +195,25 @@ [] DIAMETER.receive(tr_DIA_AIA) { setverdict(pass); } + [] DIAMETER.receive(PDU_DIAMETER:?) -> value rx_dia { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected Diameter msg rx: ", rx_dia)); + } } }
-private function f_TC_authinfo_normal(charstring id, D2G_ConnHdlrPars pars) runs on D2G_ConnHdlr { - f_init_handler(pars); - f_DIA_AI(); +private function f_TC_authinfo_normal(charstring id) runs on D2G_ConnHdlr { + f_DIA_AI_success(); }
testcase TC_authinfo_normal() runs on MTC_CT { - var D2G_ConnHdlrPars pars := f_init_pars(1); + var D2G_ConnHdlrPars pars := f_init_pars(); var D2G_ConnHdlr vc_conn; f_init(); - f_sleep(10.0); - vc_conn := f_start_handler_with_pars(refers(f_TC_authinfo_normal), pars); + vc_conn := f_start_handler(refers(f_TC_authinfo_normal), pars); vc_conn.done; setverdict(pass); }
- control { execute ( TC_authinfo_normal() ); }