pespin submitted this change.

View Change

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
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(-)

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'/>

To view, visit change 41085. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I261c3421f6a082e0d610ece4cc96d3e031022891
Gerrit-Change-Number: 41085
Gerrit-PatchSet: 4
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>