diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-08-28 18:11:16 +0200 |
---|---|---|
committer | pespin <pespin@sysmocom.de> | 2023-08-31 11:50:47 +0000 |
commit | 28dba3aa6e6dec5cb3ceb6ab67a084dee45f6c16 (patch) | |
tree | 8b7813d229c4bdbd278ebc888e277454d234d804 | |
parent | 4e76926683dd720ef02a1629c89cb76d03dbaa7b (diff) |
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
-rw-r--r-- | dia2gsup/DIA2GSUP_Tests.ttcn | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/dia2gsup/DIA2GSUP_Tests.ttcn b/dia2gsup/DIA2GSUP_Tests.ttcn index d7095122..6a3f85c8 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 @@ type component MTC_CT { 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 @@ type record D2G_ConnHdlrPars { 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 @@ modulepar { 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_gsup(charstring id) runs on MTC_CT { } } -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)); -} -private type function void_fn(charstring id, D2G_ConnHdlrPars pars) runs on D2G_ConnHdlr; + fn.apply(id); +} -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 @@ runs on MTC_CT return D2G_ConnHdlr { 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 @@ private function f_init_diameter(charstring id) runs on MTC_CT { 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 @@ private function f_DIA_AI() runs on D2G_ConnHdlr { [] 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() ); } |