From 853d097ee7c66b1a1c36a1f0ce84ddd8f59fb29e Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 24 Mar 2017 12:51:00 +0000 Subject: [PATCH] new IE(E-RABToBeSetup) prepared for Context Management Group and will be used in TCFunction module New test for Handover group added. --- ttcn3/LibS1AP/LibS1AP_Steps.ttcn | 9 +++ ttcn3/LibS1AP/LibS1AP_Templates.ttcn | 94 ++++++++++++++++++++++- ttcn3/LibS1AP/LibS1AP_TypesAndValues.ttcn | 5 ++ ttcn3/S1AP_TCFunctions.ttcn | 55 ++++++++++++- 4 files changed, 159 insertions(+), 4 deletions(-) diff --git a/ttcn3/LibS1AP/LibS1AP_Steps.ttcn b/ttcn3/LibS1AP/LibS1AP_Steps.ttcn index bf238a9..1e6f5fd 100644 --- a/ttcn3/LibS1AP/LibS1AP_Steps.ttcn +++ b/ttcn3/LibS1AP/LibS1AP_Steps.ttcn @@ -177,6 +177,15 @@ module LibS1AP_Steps { f_recv_S1AP_initiatingMessage(mw_HandoverRequired(p_value)) } // End of function f_recv_HandoverRequired + /** + * @desc Receive S1AP Message Handover Cancel + * @param p_value Receive template for Handover Cancel IEs + */ + function f_recv_HandoverCancel(in template (present) RecordOf_ProtocolIE p_value :=? + ) runs on S1APComponent { + f_recv_S1AP_initiatingMessage(mw_HandoverCancel(p_value)) + } // End of function f_recv_HandoverCancel + /** * @desc Receive S1AP Message InitialContext_SetupResponse * @param p_value Receive template for InitialContext_SetupResponse IEs diff --git a/ttcn3/LibS1AP/LibS1AP_Templates.ttcn b/ttcn3/LibS1AP/LibS1AP_Templates.ttcn index f6a86dc..9b9bfa2 100644 --- a/ttcn3/LibS1AP/LibS1AP_Templates.ttcn +++ b/ttcn3/LibS1AP/LibS1AP_Templates.ttcn @@ -614,9 +614,8 @@ module LibS1AP_Templates { mw_handoverType_IE(p_HandoverType_value), mw_cause_IE(p_Cause_value), mw_source_ToTarget_TransparentContainer_IE(p_Source_ToTarget_TransparentContainer_value) - - - } // End of template m_E_RABSetupReqIEs + } // End of template mw_HandoverRequiredIEs + }// End of group HandoverPreparation group HandoverPreparation{ @@ -627,6 +626,31 @@ module LibS1AP_Templates { }// End of group HandoverResourceAllocation + group HandoverCancelation{ + + /** + * @desc Receive template for InitiatingMessage message with Handover Cancel payload + * @param p_value The procedure code value + */ + template (present) InitiatingMessage mw_HandoverCancel( + template (present) RecordOf_ProtocolIE p_value) := { + procedureCode := id_HandoverCancel, + criticality := reject, + value_ := {RecordOf_ProtocolIE := p_value} + } // End of template mw_HandoverCancel + + template (value) RecordOf_ProtocolIE mw_HandoverCancelIEs( + template (present) MME_UE_S1AP_ID p_MME_value := ?, + template (present) ENB_UE_S1AP_ID p_eNB_value := ?, + template (present) Cause p_Cause_value := ? + ) := { + mw_MME_UE_S1AP_ID(p_MME_value), + mw_eNB_UE_S1AP_ID(p_eNB_value), + mw_cause_IE(p_Cause_value) + } // End of template mw_HandoverCancelIEs + + }// End of group HandoverCancelation + group ERABModify{ @@ -2758,6 +2782,20 @@ module LibS1AP_Templates { value_ := { RecordOf_E_RABToBeSetupItemBearerSUReq := valueof(p_value) } } // End of template m_E_RABToBeSetupList + /** + * @desc Send template for E-RABToBeSetupListCtxtSUReq protocol IE + * @param p_value Protocol IE value. Default: m_E_RABToBeSetupListCtxtSUReq + */ + template (value) ProtocolIE m_E_RABToBeSetupListCtxt( + in template (value) RecordOf_E_RABToBeSetupItemCtxtSUReq p_value := { m_E_RABToBeSetupItemCtxtSUReq } + ) := { + id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq, + criticality := reject, + value_ := { RecordOf_E_RABToBeSetupItemCtxtSUReq := valueof(p_value) } + } // End of template m_E_RABToBeSetupListCtxt + + + /** * @desc Send template for E-RABToBeModifiedItemBearerModReq protocol IE * @param p_value Protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq @@ -3064,6 +3102,18 @@ module LibS1AP_Templates { criticality := ignore, value_ := { RecordOf_E_RABSetupItemBearerSURes := p_value } } // End of template + + /** + * @desc Receive template for E-RABSetupListCtxtSUReq protocol IE + * @param p_value Expected protocol IE value. Default: m_E_RABToBeSetupItemBearerSUReq + */ + template (present) ProtocolIE mw_E_RABSetupListCtxt( + template (present) RecordOf_E_RABToBeSetupItemCtxtSUReq p_value := { mw_E_RABToBeSetupItemCtxtSUReq } + ) := { + id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq, + criticality := ignore, + value_ := { RecordOf_E_RABToBeSetupItemCtxtSUReq := p_value } + } // End of template /** * @desc Receive template for E-RABToBeSetupListBearerSUReq protocol IE @@ -3890,6 +3940,44 @@ module LibS1AP_Templates { iE_Extensions := * } // End of template mw_E_RABSetupItemBearerSURes + /** + * @desc + */ + template(omit) E_RABToBeSetupItemCtxtSUReq m_E_RABToBeSetupItemCtxtSUReq( + in E_RAB_ID p_e_RAB_ID := 0, + in template (value) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := m_e_RABlevelQoSParameters, + in template (value) TransportLayerAddress p_transportLayerAddress := '0'B, + in template (value) GTP_TEID p_gTP_TEID := '00000000'O, + in template (omit) NAS_PDU p_nAS_PDU := '0000'O, + in template (omit) E_RABToBeSetupItemCtxtSUReq.iE_Extensions p_iE_Extensions := omit + ) := { + e_RAB_ID := p_e_RAB_ID, + e_RABlevelQoSParameters := valueof(p_e_RABlevelQoSParameters), + transportLayerAddress := p_transportLayerAddress, + gTP_TEID := p_gTP_TEID, + nAS_PDU := p_nAS_PDU, + iE_Extensions := p_iE_Extensions + } // End of template m_E_RABToBeSetupItemCtxtSUReq + + /** + * @desc + */ + template (present) E_RABToBeSetupItemCtxtSUReq mw_E_RABToBeSetupItemCtxtSUReq( + template (present) E_RAB_ID p_e_RAB_ID := 0, + template (present) E_RABLevelQoSParameters p_e_RABlevelQoSParameters := mw_e_RABlevelQoSParameters, + template (present) TransportLayerAddress p_transportLayerAddress := '0'B, + template (present) GTP_TEID p_gTP_TEID := '00000000'O, + template NAS_PDU p_nAS_PDU := ?, + template E_RABToBeSetupItemCtxtSUReq.iE_Extensions p_iE_Extensions := * + ) := { + e_RAB_ID := p_e_RAB_ID, + e_RABlevelQoSParameters := p_e_RABlevelQoSParameters, + transportLayerAddress := p_transportLayerAddress, + gTP_TEID := p_gTP_TEID, + nAS_PDU := p_nAS_PDU, + iE_Extensions := p_iE_Extensions + } // End of template mw_E_RABToBeSetupItemCtxtSUReq + /** * @desc */ diff --git a/ttcn3/LibS1AP/LibS1AP_TypesAndValues.ttcn b/ttcn3/LibS1AP/LibS1AP_TypesAndValues.ttcn index 32edc46..5f327bc 100644 --- a/ttcn3/LibS1AP/LibS1AP_TypesAndValues.ttcn +++ b/ttcn3/LibS1AP/LibS1AP_TypesAndValues.ttcn @@ -20,6 +20,11 @@ module LibS1AP_TypesAndValues { */ type record of E_RABToBeSetupItemBearerSUReq RecordOf_E_RABToBeSetupItemBearerSUReq; + /** + * @desc List of E-RABToBeSetupItemCtxtSUReq IEs + */ + type record of E_RABToBeSetupItemCtxtSUReq RecordOf_E_RABToBeSetupItemCtxtSUReq; + /** * @desc List of E-RABModifiedItemBearerSURes IEs */ diff --git a/ttcn3/S1AP_TCFunctions.ttcn b/ttcn3/S1AP_TCFunctions.ttcn index adf2c39..462d415 100644 --- a/ttcn3/S1AP_TCFunctions.ttcn +++ b/ttcn3/S1AP_TCFunctions.ttcn @@ -1680,7 +1680,7 @@ module S1AP_TCFunctions { )} )); - + //TODO check case1 and case2 option f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); @@ -1693,6 +1693,59 @@ module S1AP_TCFunctions { } // End of function f_TC_S1AP_eNB_HAS_04 + /** + * @desc Testcase function for TC_S1AP_eNB_HAS_05 + */ + function f_TC_S1AP_eNB_HAS_05() runs on S1APComponent { + // Local variables + const E_RAB_ID c_E_RAB_ID_A := 0; + const NAS_PDU c_nAS_PDU := '0000'O; + + // Preamble + f_S1AP_enb_init(); + // Preamble action: TODO check if some preamble required + + f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); + + // Test body + // 1. to indicate a Handover to be forwarded + if (fx_eNB_Handover_preparation_procedure() == false) { + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + // 2. sends a HANDOVER_REQUIRED + f_recv_HandoverRequired( + mw_HandoverRequiredIEs( + vc_MME_UE_ID, + vc_eNB_UE_ID, + intralte,//handover_Type + -,//Cause + -,//TargetId + -//SourceToTargetTransparentContainer + )); + + log("No response is send to IUT before timer TS1RELOCprep expires."); + + //TODO f_wait + + f_recv_HandoverCancel( + mw_HandoverCancelIEs( + vc_MME_UE_ID, + vc_eNB_UE_ID, + -//Cause + )); + + + f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); + } + + // Postamble + f_postamble_S1AP_eNB(); + f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); + log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); + + } // End of function f_TC_S1AP_eNB_HAS_05 + } // End of group Handover_signalling_group /**