pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40799?usp=email )
Change subject: 5gc: Introduce test TC_periodic_registration_updating ......................................................................
5gc: Introduce test TC_periodic_registration_updating
Related: SYS#7073 Change-Id: I63da25a3927cb459563d4325adc690beb8a67451 --- M 5gc/C5G_Tests.ttcn M 5gc/ConnHdlr.ttcn M 5gc/expected-results.xml 3 files changed, 50 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/99/40799/1
diff --git a/5gc/C5G_Tests.ttcn b/5gc/C5G_Tests.ttcn index 9eb6f30..30615f2 100644 --- a/5gc/C5G_Tests.ttcn +++ b/5gc/C5G_Tests.ttcn @@ -92,7 +92,8 @@ cn_gtpu_ip := omit, cn_gtpu_teid := omit, qfi := omit, - ue_ip := omit + ue_ip := omit, + guti := omit }
type component MTC_CT { @@ -301,6 +302,20 @@ vc_conn.done; }
+private function f_TC_periodic_registration_updating() runs on ConnHdlr { + f_register(); + f_periodic_register_update(); +} +testcase TC_periodic_registration_updating() runs on MTC_CT { + f_init(); + f_ngap_setup(0); + + var ConnHdlrPars pars := f_init_pars(ue_idx := 0); + var ConnHdlr vc_conn; + vc_conn := f_start_handler_with_pars(refers(f_TC_periodic_registration_updating), pars); + vc_conn.done; +} + private function f_TC_register_ping4() runs on ConnHdlr { f_register(); f_pdu_sess_establish(); @@ -340,6 +355,7 @@ execute( TC_ng_setup_unknown_global_gnb_id_plmn() ); execute( TC_ng_setup_wrong_tac() ); execute( TC_ng_register() ); + execute( TC_periodic_registration_updating() ); execute( TC_ng_register_ping4() ); execute( TC_ng_register_ping4_256() ); } diff --git a/5gc/ConnHdlr.ttcn b/5gc/ConnHdlr.ttcn index 144b00b..fe96b45 100644 --- a/5gc/ConnHdlr.ttcn +++ b/5gc/ConnHdlr.ttcn @@ -79,7 +79,8 @@ charstring cn_gtpu_ip optional, OCT4 cn_gtpu_teid optional, OCT1 qfi optional, - charstring ue_ip optional + charstring ue_ip optional, + octetstring guti optional };
type record RunProgParams { @@ -388,6 +389,35 @@ as_ngap_handle_sec_mode();
NGAP.receive(cr_NG_REGISTRATION_ACCEPT) -> value rx_nas; + g_pars.ue_pars.guti := rx_nas.registration_Accept.guti.otherDigits; + NGAP.send(cs_NG_REGISTRATION_COMPLETE); + + as_ngap_handle_configuration_update(); +} + +function f_periodic_register_update() runs on ConnHdlr { + var template (value) NG_NAS_UL_Message_Type nas_ul_msg; + var NG_NAS_DL_Message_Type rx_nas; + + nas_ul_msg := cs_NG_REGISTRATION_REQUEST(cs_RegistrationType(tsc_NG_RegistrationPeriodic, '1'B), + g_pars.kset_id.nasKeySetId, + g_pars.kset_id.tsc, + cs_NG_MobileIdentity_Guti(omit, g_pars.ue_pars.guti), + p_UESecurityCap := f_UE_SecurityCapability()); + NGAP.send(nas_ul_msg); + + /* Expect updated KSI from network following 5G Core standards + * (open5gs.git 70310979c58fe186e9eaa06bec9d9a31f24ff7a1): */ + if (g_pars.kset_id.nasKeySetId != tsc_NasKsi_NoKey) { + if (g_pars.kset_id.nasKeySetId == '110'B) { + g_pars.kset_id.nasKeySetId := '000'B; + } else { + g_pars.kset_id.nasKeySetId := int2bit(bit2int(g_pars.kset_id.nasKeySetId) + 1, 3); + } + } + + NGAP.receive(cr_NG_REGISTRATION_ACCEPT) -> value rx_nas; + g_pars.ue_pars.guti := rx_nas.registration_Accept.guti.otherDigits; NGAP.send(cs_NG_REGISTRATION_COMPLETE);
as_ngap_handle_configuration_update(); diff --git a/5gc/expected-results.xml b/5gc/expected-results.xml index 98dee58..a94eb6f 100644 --- a/5gc/expected-results.xml +++ b/5gc/expected-results.xml @@ -1,9 +1,10 @@ <?xml version="1.0"?> -<testsuite name='Titan' tests='1' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> +<testsuite name='Titan' tests='7' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> <testcase classname='C5G_Tests' name='TC_ng_setup_unknown_global_gnb_id_plmn' time='MASKED'/> <testcase classname='C5G_Tests' name='TC_ng_setup_wrong_tac' time='MASKED'/> <testcase classname='C5G_Tests' name='TC_ng_setup' time='MASKED'/> <testcase classname='C5G_Tests' name='TC_ng_register' time='MASKED'/> + <testcase classname='C5G_Tests' name='TC_periodic_registration_updating' time='MASKED'/> <testcase classname='C5G_Tests' name='TC_ng_register_ping4' time='MASKED'/> <testcase classname='C5G_Tests' name='TC_ng_register_ping4_256' time='MASKED'/> </testsuite>