pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41085?usp=email )
Change subject: mme: Introduce test TC_s1ap_tau_periodic ......................................................................
mme: Introduce test TC_s1ap_tau_periodic
Change-Id: I261c3421f6a082e0d610ece4cc96d3e031022891 --- M library/NAS_EPS_Templates.ttcn M mme/ConnHdlr.ttcn M mme/MME_Tests.ttcn M mme/expected-results.xml 4 files changed, 87 insertions(+), 9 deletions(-)
Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve
diff --git a/library/NAS_EPS_Templates.ttcn b/library/NAS_EPS_Templates.ttcn index 90c507a..d2502f0 100644 --- a/library/NAS_EPS_Templates.ttcn +++ b/library/NAS_EPS_Templates.ttcn @@ -585,6 +585,7 @@ /* 8.2.29 Tracking Area Update Request */ template (value) PDU_NAS_EPS ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(template (value) EPS_MobileIdentityLV old_guti, + template (value) EPS_UpdateTypeV eps_update_type := ts_EPS_UpdateTypeV(c_EPS_UPD_TYPE_TA_UPD), template (value) NAS_KeySetIdentifierV kset_id := ts_NAS_KeySetIdentifierV, template (omit) P_TMSISignatureTV old_ptmsi_sig := omit, template (omit) GUTI_TypeTV old_guti_type := omit, @@ -597,7 +598,7 @@ pDU_NAS_EPS_TrackingAreaUpdateRequest := { securityHeaderType := c_EPS_SEC_NONE, messageType := '01001000'B, - ePSupdateType := ts_EPS_UpdateTypeV, + ePSupdateType := eps_update_type, nasKeySetId := kset_id, oldGUTI := old_guti, nonCurrentNative_nasKeySetId := omit, diff --git a/mme/ConnHdlr.ttcn b/mme/ConnHdlr.ttcn index 4e94cbf..90e4366 100644 --- a/mme/ConnHdlr.ttcn +++ b/mme/ConnHdlr.ttcn @@ -850,6 +850,66 @@ } }
+function f_tau(BIT3 typeOfUpdate := c_EPS_UPD_TYPE_TA_UPD, boolean exp_sgsap_lu := false) runs on ConnHdlr { + var template (value) EPS_MobileIdentityV mi := ts_NAS_MobileId_IMSI(g_pars.ue_pars.imsi); + var template (value) S1AP_PDU tx; + var template (value) PDU_NAS_EPS nas_tau; + timer T := 5.0; + + nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti := ts_EPS_MobileId_GUTI_(g_pars.ue_pars.guti), + eps_update_type := ts_EPS_UpdateTypeV(typeOfUpdate), + kset_id := g_pars.kset_id); + tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, + p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), + p_tAI := ts_enb_S1AP_TAI(g_pars.enb_pars[g_pars.mme_idx]), + p_eUTRAN_CGI := ts_enb_S1AP_CGI(g_pars.enb_pars[g_pars.mme_idx]), + p_rrcCause := mo_Signalling); + S1AP.send(tx); + + /* Expect updated KSI from network following 5G Core standards + *(open5gs.git 70310979c58fe186e9eaa06bec9d9a31f24ff7a1): */ + if (g_pars.kset_id.identifier != c_NAS_KEY_SET_ID_NO_KEY) { + if (g_pars.kset_id.identifier == '110'B) { + g_pars.kset_id.identifier := '000'B; + } else { + g_pars.kset_id.identifier := int2bit(bit2int(g_pars.kset_id.identifier) + 1, 3); + } + } + + as_DIA_AuthInfo(); + as_s1ap_handle_auth(); + alt { + [] as_DIA_UpdLoc() { + as_s1ap_handle_sec_mode(); + } + [] as_s1ap_handle_sec_mode() { + as_DIA_UpdLoc(); + } + } + + if (exp_sgsap_lu) { + T.start; + alt { + [] as_sgsap_handle_lu_req(IMSI_attach); + [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No SGsAP message from MME")); } + } + } + + T.start; + alt { + [] as_s1ap_handle_IntialCtxSetupReq_TAU_Accept(); + [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No message from MME")); } + } + + /* We now expect the MME to send a Modify Bearer Request to the SGW-C */ + f_gtp2_register_udmsg('22'O); + T.start; + alt { + [] as_GTP2C_ModifyBearer_success(); + [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No message from MME")); } + } +} + /****************************** * RIM ******************************/ diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn index d4cecdc..18740bf 100644 --- a/mme/MME_Tests.ttcn +++ b/mme/MME_Tests.ttcn @@ -610,7 +610,8 @@
var hexstring mcc_mnc := f_convert_plmn(g_pars.enb_pars[g_pars.mme_idx].global_enb_id.pLMNidentity); var EPS_MobileIdentityLV old_guti := valueof(ts_EPS_MobileId_GUTI(mcc_mnc, '0001'O, '01'O, 'AABBCCDD'O)); - nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti, g_pars.kset_id); + nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti := old_guti, + kset_id := g_pars.kset_id);
tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), @@ -645,6 +646,20 @@ vc_conn.done; }
+private function f_TC_tau_periodic() runs on ConnHdlr { + f_attach(); + f_tau(c_EPS_UPD_TYPE_TA_UPD_PERIODIC); +} +testcase TC_s1ap_tau_periodic() runs on MTC_CT { + f_init(10, init_diameter := true, init_gtpv2c_s11:= true); + f_s1ap_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_tau_periodic), pars); + vc_conn.done; +} + private function f_TC_ue_cell_reselect_eutran_to_geran() runs on ConnHdlr { f_gtp_register_imsi(g_pars.ue_pars.imsi); f_attach(); @@ -714,12 +729,12 @@ rai_ptmsi2_guti(rai, ptmsi, guti_val); old_guti := ts_EPS_MobileId_GUTI_(guti_val);
- nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti, - g_pars.kset_id, - ts_PTMSI_SignatureTV(ptmsi_sig), - ts_GUTI_TypeTV(GUTI_TYPE_MAPPED), - ts_NonceTV('12345678'O), - ts_CipheringKeySequenceNumberTV('000'B), + nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti := old_guti, + kset_id := g_pars.kset_id, + old_ptmsi_sig := ts_PTMSI_SignatureTV(ptmsi_sig), + old_guti_type := ts_GUTI_TypeTV(GUTI_TYPE_MAPPED), + nonce_ue := ts_NonceTV('12345678'O), + gprs_cksn := ts_CipheringKeySequenceNumberTV('000'B), ue_net_cap := ue_net_cap); tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), @@ -778,6 +793,7 @@ execute( TC_s1ap_setup() ); execute( TC_s1ap_attach() ); execute( TC_s1ap_tau_unknown_guti() ); + execute( TC_s1ap_tau_periodic() ); execute( TC_gn_echo_request() ); execute( TC_RIM_RAN_INF() ); execute( TC_s1ap_reset() ); diff --git a/mme/expected-results.xml b/mme/expected-results.xml index 2e733c4..694b119 100644 --- a/mme/expected-results.xml +++ b/mme/expected-results.xml @@ -1,10 +1,11 @@ <?xml version="1.0"?> -<testsuite name='Titan' tests='16' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> +<testsuite name='Titan' tests='17' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> <testcase classname='MME_Tests' name='TC_s1ap_setup_unknown_global_enb_id_plmn' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_setup_wrong_tac' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_setup' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_attach' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_tau_unknown_guti' time='MASKED'/> + <testcase classname='MME_Tests' name='TC_s1ap_tau_periodic' time='MASKED'/> <testcase classname='MME_Tests' name='TC_gn_echo_request' time='MASKED'/> <testcase classname='MME_Tests' name='TC_RIM_RAN_INF' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_reset' time='MASKED'/>