STF519 Week #19:

- Implementation of MME/Unknown, Unforseen and Erroneous Protocol Data group TPs
This commit is contained in:
garciay 2017-05-09 11:32:12 +00:00
parent 44ea064b18
commit d52e3c0700
7 changed files with 271 additions and 67 deletions

View File

@ -226,7 +226,7 @@ module LibS1AP_Pixits {
modulepar TriggeringMessage PX_TRIGGERING_CODE := initiating_message;
modulepar Criticality PX_CRITICALITY := reject;
modulepar Criticality PX_CRITICALITY := ignore;
} // End of module LibS1AP_Pixits

View File

@ -903,7 +903,7 @@ module LibS1AP_Steps {
) runs on S1APComponent {
f_recv_S1AP_initiatingMessage(mw_UeRadioCapabilityMatchRequest(p_value))
} // End of f_recv_UeRadioCapabilityMatchRequest
/**
* @desc Receive S1AP Message Connection Establishment Indication
* @param p_value Receive template for Connection Establishment Indication
@ -1014,6 +1014,15 @@ module LibS1AP_Steps {
f_send_S1AP_initiatingMessage(m_E_RABModifiedRequest(p_value))
} // End of function f_send_E_RABModifiedRequest
/**
* @desc Send S1AP Message E-RAB_ModifiedInd
* @param p_value Send template with IE for E-RAB_ModifiedInd
*/
function f_send_E_RABModifiedInd(in template (value) RecordOf_ProtocolIE p_value
) runs on S1APComponent {
f_send_S1AP_initiatingMessage(m_E_RABModifiedInd(p_value))
} // End of function f_send_E_RABModifiedInd
/**
* @desc Send S1AP Message InitialContext_SetupRequest
* @param p_value Send template with IE for InitialContext_SetupRequest

View File

@ -275,28 +275,17 @@ module LibS1AP_Templates {
m_E_RABToBeSetupList(p_RecordOf_E_RABToBeSetupItem_value)
} // End of template m_E_RABSetupReqIEs
}// End of group ERABSetup
group ERABModify {
/**
* @desc Send template for InitiatingMessage message with E-RABRelease payload
* @param p_value The procedure code value
*/
template (value) InitiatingMessage m_E_RABReleaseRequest(
in template (value) RecordOf_ProtocolIE p_value) := {
procedureCode := id_E_RABRelease,
criticality := reject,
value_ := {RecordOf_ProtocolIE := valueof(p_value)}
} // End of template m_E_RABRleaseRequest
} // End of group ERABSetup
group ERABModifyRequest {
/**
* @desc Send template for InitiatingMessage message with E-RABModify payload
* @param p_value The procedure code value
*/
template (value) InitiatingMessage m_E_RABModifiedRequest(
in template (value) RecordOf_ProtocolIE p_value) := {
procedureCode := id_E_RABSetup,
procedureCode := id_E_RABModify,
criticality := reject,
value_ := {RecordOf_ProtocolIE := valueof(p_value)}
} // End of template m_E_RABModifiedRequest
@ -310,11 +299,47 @@ module LibS1AP_Templates {
m_eNB_UE_S1AP_ID(p_eNB_value),
m_E_RABToBeModifiedList(p_RecordOf_E_RABToBeModifiedItem_value)
} // End of template m_E_RABSetupReqIEs
}
} // End of group ERABModifyRequest
group ERABModifyInd {
/**
* @desc Send template for InitiatingMessage message with E-RABModifyInd payload
* @param p_value The procedure code value
*/
template (value) InitiatingMessage m_E_RABModifiedInd(
in template (value) RecordOf_ProtocolIE p_value) := {
procedureCode := id_E_RABModificationIndication,
criticality := reject,
value_ := {RecordOf_ProtocolIE := valueof(p_value)}
} // End of template m_E_RABModifiedInd
template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs(
in template (value) MME_UE_S1AP_ID p_MME_value,
in template (value) ENB_UE_S1AP_ID p_eNB_value,
in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
) := {
m_MME_UE_S1AP_ID(p_MME_value),
m_eNB_UE_S1AP_ID(p_eNB_value),
m_E_RABToBeModifiedItemBearerModIndList(p_RecordOf_E_RABToBeModifiedItemBearerModInd_value)
} // End of template m_E_RABModifiedIndIEs
} // End of group ERABModifyInd
group ERABRelease {
/**
* @desc Send template for InitiatingMessage message with E-RABRelease payload
* @param p_value The procedure code value
*/
template (value) InitiatingMessage m_E_RABReleaseRequest(
in template (value) RecordOf_ProtocolIE p_value) := {
procedureCode := id_E_RABRelease,
criticality := reject,
value_ := {RecordOf_ProtocolIE := valueof(p_value)}
} // End of template m_E_RABRleaseRequest
template (value) RecordOf_ProtocolIE m_E_RABReleaseReqIEs(
in template (value) MME_UE_S1AP_ID p_MME_value,
in template (value) ENB_UE_S1AP_ID p_eNB_value,
@ -502,18 +527,34 @@ module LibS1AP_Templates {
in template (value) MME_UE_S1AP_ID p_MME_value,
in template (value) ENB_UE_S1AP_ID p_eNB_value
) := {
mw_MME_UE_S1AP_ID(p_MME_value, ignore),
mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
m_MME_UE_S1AP_ID(p_MME_value, ignore),
m_eNB_UE_S1AP_ID(p_eNB_value, ignore)
} // End of template m_UeContextResumeRequestIEs
template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_RABFailedToResumeItem(
in template (value) MME_UE_S1AP_ID p_MME_value,
in template (value) ENB_UE_S1AP_ID p_eNB_value,
in template (value) E_RABFailedToResumeItemResumeReq p_E_RABFailedToResumeItemResumeReq
in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
) modifies m_UeContextResumeRequestIEs := {
m_E_RABFailedToResumeListResumeReq_IE(p_E_RABFailedToResumeItemResumeReq)
m_E_RABFailedToResumeItemResumeReqList(p_RecordOf_E_RABFailedToResumeItemResumeReq_value)
} // End of template m_UeContextResumeRequestIEs_RABFailedToResumeItem
template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_Unknown_ID(
in template (value) MME_UE_S1AP_ID p_MME_value,
in template (value) ENB_UE_S1AP_ID p_eNB_value,
in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
) modifies m_UeContextResumeRequestIEs_RABFailedToResumeItem := {
m_Unknown_ID_IE(-, reject)
} // End of template m_UeContextResumeRequestIEs_Unknown_ID
template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_no_eNB(
in template (value) MME_UE_S1AP_ID p_MME_value,
in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
) := {
m_MME_UE_S1AP_ID(p_MME_value, ignore),
m_E_RABFailedToResumeItemResumeReqList(p_RecordOf_E_RABFailedToResumeItemResumeReq_value)
} // End of template m_UeContextResumeRequestIEs_no_eNB
/**
* @desc Send template for InitiatingMessage message with m_UeContextModificationRequest payload
* @param p_value Expected procedure code
@ -609,14 +650,6 @@ module LibS1AP_Templates {
m_UE_Radio_capability_IE(p_UeRadioCapabilities)
} // End of template m_ContextModificationReqIEsSecCap
template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_Unknown_ID(
in template (value) MME_UE_S1AP_ID p_MME_value,
in template (value) ENB_UE_S1AP_ID p_eNB_value,
in template (value) E_RABFailedToResumeItemResumeReq p_E_RABFailedToResumeItemResumeReq
) modifies m_UeContextResumeRequestIEs := {
m_Unknown_ID_IE(-, reject)
} // End of template m_UeContextResumeRequestIEs_Unknown_ID
}// End of group Context_management_group
/**
@ -1677,7 +1710,7 @@ module LibS1AP_Templates {
mw_MME_UE_S1AP_ID(p_MME_value, ignore),
mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
} // End of template mw_UeRadioCapabilityMatchRequestIEs
/**
* @desc Receive template for mw_ConnectionEstablishmentIndication message
* @param p_procedureCode Expected procedure code. Default: ?
@ -3707,14 +3740,36 @@ module LibS1AP_Templates {
* @param p_value Protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq
*/
template (value) ProtocolIE m_E_RABToBeModifiedList(
in template (value) RecordOf_E_RABToBeModifiedItemBearerModReq p_value := { m_E_RABToBeModifiedItemBearerSUReq }
in template (value) RecordOf_E_RABToBeModifiedItemBearerModReq p_value := { m_E_RABToBeModifiedItemBearerSUReq }
) := {
id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModReq,
criticality := reject,
value_ := { RecordOf_E_RABToBeModifiedItemBearerModReq := valueof(p_value) }
} // End of template m_E_RABToBeSetupList
/**
* @desc Send template for E-RABToBeModifiedItemBearerModInd protocol IE
* @param p_value Protocol IE value
*/
template (value) ProtocolIE m_E_RABToBeModifiedItemBearerModIndList(
in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_value
) := {
id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModInd,
criticality := reject,
value_ := { RecordOf_E_RABToBeModifiedItemBearerModInd := valueof(p_value) }
} // End of template m_E_RABToBeModifiedItemBearerModIndList
/**
* @desc Send template for E-RABFailedToResumeItemResumeReq protocol IE
* @param p_value Protocol IE value
*/
template (value) ProtocolIE m_E_RABFailedToResumeItemResumeReqList(
in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_value
) := {
id := S1AP_Constants.id_E_RABFailedToResumeItemResumeReq,
criticality := reject,
value_ := { RecordOf_E_RABFailedToResumeItemResumeReq := valueof(p_value) }
} // End of template m_E_RABFailedToResumeItemResumeReqList
} // End of group E_RAB_IEsend
@ -3767,7 +3822,7 @@ module LibS1AP_Templates {
} // End of template m_target_ToSource_TransparentContainer_IE
}//end group Handover_group {
} // End of group Handover_group
/**
* @desc Management group
@ -5667,6 +5722,17 @@ module LibS1AP_Templates {
iE_Extensions := omit
} // End of template m_E_RABFailedToResumeItemResumeReq
template (value) E_RABToBeModifiedItemBearerModInd m_E_RABToBeModifiedItemBearerModInd(
in template (value) E_RAB_ID p_e_RAB_ID,
in template (value) TransportLayerAddress p_transportLayerAddress := '0'B,
in template (value) GTP_TEID p_dL_GTP_TEID := '00000000'O
) := {
e_RAB_ID := p_e_RAB_ID,
transportLayerAddress := p_transportLayerAddress,
dL_GTP_TEID := p_dL_GTP_TEID,
iE_Extensions := omit
} // End of template m_E_RABToBeModifiedItemBearerModInd
} // End of group Unknown_unforseen_errorneous_group
} // End of group g_IEParameters

View File

@ -30,6 +30,11 @@ module LibS1AP_TypesAndValues {
*/
type record of E_RABToBeModifiedItemBearerModReq RecordOf_E_RABToBeModifiedItemBearerModReq;
/**
* @desc List of E-RABToBeModifiedItemBearerModInd IEs
*/
type record of E_RABToBeModifiedItemBearerModInd RecordOf_E_RABToBeModifiedItemBearerModInd;
/**
* @desc List of E-RABSetupItemBearerSURes IEs
*/
@ -55,6 +60,11 @@ module LibS1AP_TypesAndValues {
*/
type record of E_RABItem RecordOf_E_RABItem;
/**
* @desc List of E-RABFailedToResumeItemResumeReq IEs
*/
type record of E_RABFailedToResumeItemResumeReq RecordOf_E_RABFailedToResumeItemResumeReq;
/**
* @desc List of E-RABs Subject to Forwarding
*/

View File

@ -4361,7 +4361,7 @@ module S1AP_TCFunctions {
// Preamble
f_S1AP_mme_init();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
@ -4565,18 +4565,20 @@ module S1AP_TCFunctions {
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// Test body
f_send_Ue_Context_Resume_Request(
m_UeContextResumeRequestIEs_RABFailedToResumeItem(
vc_MME_UE_ID,
vc_MME_UE_ID,
vc_eNB_UE_ID,
m_E_RABFailedToResumeItemResumeReq(
c_E_RAB_ID_A,
m_cause_ran(user_inactivity)
)
{
m_E_RABFailedToResumeItemResumeReq(
c_E_RAB_ID_A,
m_cause_ran(user_inactivity)
)
}
)
);
f_recv_Ue_Context_Resume_Failure(mw_UeContextResumeFailureIEs);
// Postamble
@ -4587,7 +4589,7 @@ module S1AP_TCFunctions {
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_S1AP_eNB_CMP_10
/**
* @desc Testcase function for TC_S1AP_mME_CMP_11
*/
@ -5768,10 +5770,12 @@ module S1AP_TCFunctions {
m_UeContextResumeRequestIEs_RABFailedToResumeItem(
vc_MME_UE_ID,
vc_eNB_UE_ID,
m_E_RABFailedToResumeItemResumeReq(
c_E_RAB_ID_A,
m_cause_ran(user_inactivity)
)
{
m_E_RABFailedToResumeItemResumeReq(
c_E_RAB_ID_A,
m_cause_ran(user_inactivity)
)
}
),
PX_VA_CRITICALITY
);
@ -5818,12 +5822,13 @@ module S1AP_TCFunctions {
m_UeContextResumeRequestIEs_Unknown_ID(
vc_MME_UE_ID,
vc_eNB_UE_ID,
m_E_RABFailedToResumeItemResumeReq(
c_E_RAB_ID_A,
m_cause_ran(user_inactivity)
)
)
);
{
m_E_RABFailedToResumeItemResumeReq(
c_E_RAB_ID_A,
m_cause_ran(user_inactivity)
)
}
));
// 2. sends an UE_CONTEXT_RESUME_FAILURE
f_recv_Ue_Context_Resume_Failure(
mw_UeContextResumeFailureIEs(
@ -5831,9 +5836,9 @@ module S1AP_TCFunctions {
vc_eNB_UE_ID,
mw_cause_protocol(unspecified),
mw_criticalityDiagnostics(
PX_PROCEURE_CODE,
PX_TRIGGERING_CODE,
PX_CRITICALITY,
?,
?,
?,
{
mw_criticalityDiagnostics_IE_Item(
reject,
@ -5869,15 +5874,18 @@ module S1AP_TCFunctions {
// Test body
// 1. on receipt of a E-RAB_MODIFICATION_INDICATION
// TODO
// f_send_Ue_Context_Resume_Request(
// m_UeContextResumeRequestIEs(
// vc_MME_UE_ID,
// vc_eNB_UE_ID,
// m_E_RABFailedToResumeItemResumeReq(
// c_E_RAB_ID_A,
// m_cause_ran(user_inactivity)
// )));
f_send_E_RABModifiedInd(
m_E_RABModifiedIndIEs(
vc_MME_UE_ID,
vc_eNB_UE_ID,
{
m_E_RABToBeModifiedItemBearerModInd(
c_E_RAB_ID_A,
-,
-
)
}
));
// 2. sends an ERROR_INDICATION
f_recv_Error_Indication(
mw_error_IndicationIEs(
@ -5908,6 +5916,61 @@ module S1AP_TCFunctions {
} // End of function f_TC_S1AP_MME_ERR_03
/**
* @desc Testcase function for TC_S1AP_MME_ERR_04
*/
function f_TC_S1AP_MME_ERR_04() runs on S1APComponent {
// Local variables
const E_RAB_ID c_E_RAB_ID_A := 0;
// Preamble
f_S1AP_mme_init();
// Preamble action: E-RAB Setup is exchanged
f_rABSetupRequest();
f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
// Test body
// 1. on receipt of a UE_CONTEXT_RESUME_REQUEST
f_send_Ue_Context_Resume_Request(
m_UeContextResumeRequestIEs_no_eNB(
vc_MME_UE_ID,
{
m_E_RABFailedToResumeItemResumeReq(
c_E_RAB_ID_A,
m_cause_ran(user_inactivity)
)
}
));
// 2. sends an UE_CONTEXT_RESUME_FAILURE
f_recv_Ue_Context_Resume_Failure(
mw_UeContextResumeFailureIEs(
vc_MME_UE_ID,
vc_eNB_UE_ID,
mw_cause_protocol(unspecified),
mw_criticalityDiagnostics(
?,
?,
?,
{
mw_criticalityDiagnostics_IE_Item(
reject,
-,
missing
)
}
)
));
f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
// Postamble
f_rABSetupRelease();
f_postamble_S1AP_MME();
f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
} // End of function f_TC_S1AP_MME_ERR_04
} // End of group Unknown_unforseen_errorneous_group
} // End of group MME_Role

View File

@ -2499,7 +2499,7 @@ module S1AP_TestCases {
f_cf_Down();
} // End of testcase TC_S1AP_MME_CMP_02
testcase TC_S1AP_MME_CMP_03() runs on S1AP system TestAdapter {
// Local variables
var S1AP v_s1ap_mme;
@ -3980,6 +3980,61 @@ module S1AP_TestCases {
} // End of testcase TC_S1AP_MME_ERR_03
/**
* @desc Verify that the IUT rejects the procedure if message not contains mandatory IEs/IE groups and include
* Information Element Criticality Diagnostics IE in the Criticality Diagnostics IE for each reported
* IEs/IE groups within response message for this procedure.
* <pre>
* Pics Selection: A.4/2.8 and A.4/6.2.2 and A.4/17.2
* Configuration: CF_S1-MME
* Ensure that the IUT
* on receipt of a UE_CONTEXT_RESUME_REQUEST,
* with Criticality set to value from the Table 5
* containing an MME UE_S1AP_ID
* not containing an eNB_UE_S1AP_ID
* containing an E-RAB_Failed_to_Resume_List
* containing an E-RAB_Failed_to_Resume_Item 1
* containing an E-RAB_ID
* containing a Cause
* indicating an appropriate value
* sends an UE_CONTEXT_RESUME_FAILURE
* containing an MME_UE_S1AP_ID
* containing an eNB_UE_S1AP_ID
* containing a Cause
* indicating appropriate Protocol Cause
* containing a Criticality_Diagnostics
* containing an Information Element Criticality_Diagnostics
* containing an IE_Criticality
* containing an IE_ID
* containing an IE_Type_of_Error.
* </pre>
*
* @see ETSI TS 103 497-2 TP_S1AP_MME_ERR_04
* @reference ETSI TS 136 413 V13.4.0 Clause 10.3.5¶3(1st dashed line) and 13
*/
testcase TC_S1AP_MME_ERR_04() runs on S1AP system TestAdapter {
// Local variables
var S1AP v_s1ap_mme;
// Test control
if (not (PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE)) {
log("*** " & __SCOPE__ & ": ERROR: 'PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE' shall be set to true for executing the TC. ***");
stop;
}
// Test component configuration
f_cf_S1AP_MME_Up(v_s1ap_mme);
// Start
v_s1ap_mme.start(f_TC_S1AP_MME_ERR_04());
// synchronize PTC on 1 sychronization points
f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
f_cf_Down();
} // End of testcase TC_S1AP_MME_ERR_04
} // End of group Unknown_unforseen_errorneous_group
} // End of group MME_Role

View File

@ -144,6 +144,7 @@ module S1AP_TestControl {
execute(TC_S1AP_MME_ERR_01());
execute(TC_S1AP_MME_ERR_02());
execute(TC_S1AP_MME_ERR_03());
execute(TC_S1AP_MME_ERR_04());
}
} // End of 'Control' statement