pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40750?usp=email ) Change subject: 5gc: Rework init code ...................................................................... 5gc: Rework init code * Move T_Guard to MTC, there's no need to have multiple of them (one per ConnHdlr). * Call f_init_handler() internally so it doesn't need to be called by each ConnHdlr test. * Change function attribute friend to private Change-Id: I71e5d552a6c0089345982a403285f66a92397413 --- M 5gc/C5G_Tests.ttcn 1 file changed, 28 insertions(+), 23 deletions(-) Approvals: pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve diff --git a/5gc/C5G_Tests.ttcn b/5gc/C5G_Tests.ttcn index f5b0931..3b84a58 100644 --- a/5gc/C5G_Tests.ttcn +++ b/5gc/C5G_Tests.ttcn @@ -114,12 +114,13 @@ port NGAP_PT NGAP_UNIT[NUM_NGRAN]; port NGAPEM_PROC_PT NGAP_PROC[NUM_NGRAN]; + timer g_Tguard := 30.0; + var UeParams g_ue_pars[NUM_UE]; } type component ConnHdlr extends NGAP_ConnHdlr { var ConnHdlrPars g_pars; - timer g_Tguard := 30.0; } type record ConnHdlrPars { @@ -134,13 +135,13 @@ } /* send incoming unit data messages (like reset) to global NGAP_UNIT port */ -friend function NGapForwardUnitdataCallback(NGAP_PDU msg) +private function NGapForwardUnitdataCallback(NGAP_PDU msg) runs on NGAP_Emulation_CT return template NGAP_PDU { NGAP_UNIT.send(msg); return omit; } -friend function f_init_one_ngran(integer num := 0) runs on MTC_CT { +private function f_init_one_ngran(integer num := 0) runs on MTC_CT { var charstring id := testcasename() & "-NGAP" & int2str(num); var NGAPOps ops := { create_cb := refers(NGAP_Emulation.ExpectedCreateCallback), @@ -177,12 +178,12 @@ NGAP_UNIT[num].receive(NGAPEM_Event:{up_down:=NGAPEM_EVENT_UP}); } -friend function f_init_one_ue(inout UeParams uep, integer imsi_suffix) { +private function f_init_one_ue(inout UeParams uep, integer imsi_suffix) { uep := valueof(ts_UeParams(imsi_suffix)); } -friend function f_init_ngap(integer imsi_suffix := 0) runs on MTC_CT { +private function f_init_ngap(integer imsi_suffix := 0) runs on MTC_CT { var integer i; for (i := 0; i < NUM_NGRAN; i := i+1) { f_init_one_ngran(i); @@ -192,8 +193,16 @@ } } +private function f_init(integer imsi_suffix := 0, float t_guard := 30.0) runs on MTC_CT { + /* start guard timer and activate it as default */ + g_Tguard.start(t_guard); + activate(as_Tguard()); + + f_init_ngap(imsi_suffix); +} + /* generate parameters for a connection handler */ -friend function f_init_pars(integer ue_idx := 0) +private function f_init_pars(integer ue_idx := 0) runs on MTC_CT return ConnHdlrPars { var ConnHdlrPars pars := { ngran_pars := g_ngran_pars, @@ -204,10 +213,10 @@ return pars; } -type function void_fn(ConnHdlrPars pars) runs on ConnHdlr; +type function void_fn() runs on ConnHdlr; /* start a connection handler with given parameters */ -friend function f_start_handler_with_pars(void_fn fn, ConnHdlrPars pars, integer ngap_idx := 0) +private function f_start_handler_with_pars(void_fn fn, ConnHdlrPars pars, integer ngap_idx := 0) runs on MTC_CT return ConnHdlr { var ConnHdlr vc_conn; var charstring id := testcasename() & int2str(ngap_idx); @@ -219,24 +228,21 @@ /* We cannot use vc_conn.start(f_init_handler(fn, id, pars)); as we cannot have * a stand-alone 'derefers()' call, see https://www.eclipse.org/forums/index.php/t/1091364/ */ - vc_conn.start(derefers(fn)(pars)); + vc_conn.start(f_init_handler(fn, pars)); return vc_conn; } /* altstep for the global guard timer */ -private altstep as_Tguard()runs on 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"); } } -friend function f_init_handler(ConnHdlrPars pars, float t_guard := 30.0) runs on ConnHdlr { +private function f_init_handler(void_fn fn, ConnHdlrPars pars) runs on ConnHdlr { /* make parameters available via component variable */ g_pars := pars; - /* start guard timre and activate it as default */ - g_Tguard.start(t_guard); - activate(as_Tguard()); + fn.apply(); } private template (value) NGAP_IEs.TAI ts_ngran_NGAP_TAI(NGRANParams ngran_pars) := { @@ -277,7 +283,7 @@ return valueof(p_ueLocInf); } -friend function f_ngap_setup(integer idx := 0, template (omit) NGAP_IEs.Cause cause := omit) runs on MTC_CT { +private function f_ngap_setup(integer idx := 0, template (omit) NGAP_IEs.Cause cause := omit) runs on MTC_CT { var template (present) NGAP_IEs.Cause exp_cause := ?; var boolean exp_fail := false; timer T := 5.0; @@ -563,30 +569,29 @@ /* NG Setup procedure to 5GC using a Global gNB ID containing unknown/foreign PLMN. * Related: https://github.com/open5gs/open5gs/issues/3544 */ testcase TC_ng_setup_unknown_global_gnb_id_plmn() runs on MTC_CT { - f_init_ngap(); + f_init(); g_ngran_pars[0].global_ngran_id.globalGNB_ID.pLMNIdentity := '62F224'O; f_ngap_setup(0); } /* Unsuccessful NG Setup procedure to AMF (wrong PLMN) */ testcase TC_ng_setup_wrong_tac() runs on MTC_CT { - f_init_ngap(); + f_init(); g_ngran_pars[0].supported_ta_list[0].broadcastPLMNList[0].pLMNIdentity := '62F224'O; f_ngap_setup(0, {misc:=unknown_PLMN_or_SNPN}); } /* NG Setup procedure to 5GC using a correct Global gNB ID. */ testcase TC_ng_setup() runs on MTC_CT { - f_init_ngap(); + f_init(); f_ngap_setup(0); } -private function f_TC_register(ConnHdlrPars pars) runs on ConnHdlr { - f_init_handler(pars); +private function f_TC_register() runs on ConnHdlr { f_register(); } testcase TC_ng_register() runs on MTC_CT { - f_init_ngap(); + f_init(); f_ngap_setup(0); var ConnHdlrPars pars := f_init_pars(ue_idx := 0); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40750?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I71e5d552a6c0089345982a403285f66a92397413 Gerrit-Change-Number: 40750 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge@osmocom.org> Gerrit-Reviewer: osmith <osmith@sysmocom.de> Gerrit-Reviewer: pespin <pespin@sysmocom.de>