S1AP_TCFunctions.ttcn 303 KB
Newer Older
                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,
                            ltetogeran,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//TODO Check if SourceBSSToTargetBSSTransparentContainer
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_03
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_04
             */
            function f_TC_S1AP_eNB_HAS_04() 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: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                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
                    ));
                    
                    f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {m_E_RABToBeModifiedItemBearerSUReq(
                            c_E_RAB_ID_A,
                            m_e_RABlevelQoSParameters(5),
                            c_nAS_PDU
                        )}
                    ));
                    
                    if (PX_VA==1)//cASE 1
                    {
                        f_recv_HandoverCancel(
                            mw_HandoverCancelIEs(
                                vc_MME_UE_ID,
                                vc_eNB_UE_ID,
                                ?
                        ));
                        
                        f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            {
                                mw_E_RABModifyItemBearerModRes(
                                    c_E_RAB_ID_A
                                )
                            }
                        ));
                    } 
                    else
                    if (PX_VA==2)//cASE 2
                    {
                        f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            {
                                mw_E_RABItem(
                                    c_E_RAB_ID_A,
                                    {
                                        radioNetwork := (s1_intra_system_handover_triggered,
                                                     s1_inter_system_handover_triggered)
                                    }
                                )
                            }
                        ));

                        f_recv_HandoverCommand(mw_HandoverCommandIEs_ERABSubj2FwList(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,
                            ?,
                            ?
                        ));
                    }
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // 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
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                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.");
                    
                    //wait for timer TS1RELOCprep
                    f_sleepIgnoreDef(1.0);
                        mw_HandoverCancelIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -//Cause
                    ));
                    f_send_HandoverCancelAcknowledge(
                        m_HandoverCancelAckIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_05
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_06
             */
            function f_TC_S1AP_eNB_HAS_06() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs(
                                   vc_MME_UE_ID,
                                   intralte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, 
                                                            PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities
                                   m_securityContext//SecurityContext
                               ));

                f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,//ERabsAdmittedList
                    -//TargetToSourceTransparentContainer
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_06
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_07
             */
            function f_TC_S1AP_eNB_HAS_07() runs on S1APComponent { 
                // Local variables
                const NASSecurityParameterstoE_UTRAN c_nASSecurityParameterstoE_UTRAN := '000000000000'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs_nASSecParToEUTRAN(
                                   vc_MME_UE_ID,
                                   utrantolte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, 
                                                            PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities
                                   m_securityContext,//SecurityContext
                                   c_nASSecurityParameterstoE_UTRAN//NASSecurityParameterstoE_UTRAN//for coding see TS 124 301 clause 9.9.2.7
                               ));

                f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,//ERabsAdmittedList
                    -//TargetToSourceTransparentContainer
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_07
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_08
             */
            function f_TC_S1AP_eNB_HAS_08() runs on S1APComponent { 
                // Local variables
                const NASSecurityParameterstoE_UTRAN c_nASSecurityParameterstoE_UTRAN := '000000000000'O;
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs_nASSecParToEUTRAN(
                                   vc_MME_UE_ID,
                                   gerantolte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, 
                                                            PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities
                                   m_securityContext,//SecurityContext
                                   c_nASSecurityParameterstoE_UTRAN//NASSecurityParameterstoE_UTRAN//for coding see TS 124 301 clause 9.9.2.7
                               ));

                f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,//ERabsAdmittedList
                    -//TargetToSourceTransparentContainer
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_08
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_09
             */
            function f_TC_S1AP_eNB_HAS_09() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs_cSGMembershipStatus(
                                   vc_MME_UE_ID,
                                   gerantolte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, 
                                                            PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities
                                   m_securityContext,//SecurityContext
                                   member//CSG_MembershipStatus
                               ));

                f_recv_HandoverFailure(mw_HandoverFailureIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_cause_ran(?)
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_09
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_10
             */
            function f_TC_S1AP_eNB_HAS_10() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And UE is not exchanged
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate handover notification procedureE
                if (fx_eNB_Handover_notification_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER NOTIFY
                    f_recv_HandoverNotify(
                        mw_HandoverNotifyIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,//E-UTRAN_CGI
                            -//TAI
                    ));

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_10
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_11
             */
            function f_TC_S1AP_eNB_HAS_11() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And UE is not exchanged
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate path switch request procedureE
                if (fx_eNB_Path_switch_request_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PATH SWITCH REQUEST
                    f_recv_PathSwitchRequest(
                        mw_PathSwitchRequestIEs(
                            vc_eNB_UE_ID,
                            -,//E-RAB to be Switched
                            vc_MME_UE_ID,//Source MME_UE_S1AP_ID
                            -,//E-UTRAN_CGI
                            -,//TAI
                            -//UE Security capabilities
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                    

                    f_send_PathSwitchRequestAcknowledge(m_PathSwitchRequestAckIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        m_securityContext//Security Context
                    ));
                
                }
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_11
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_12
             */
            function f_TC_S1AP_eNB_HAS_12() runs on S1APComponent {
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                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.");
                    
                    //wait for timer TS1RELOCprep
                    f_sleepIgnoreDef(1.0);
                    
                    f_recv_HandoverCancel(
                        mw_HandoverCancelIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -//Cause
                    ));
                    
                    f_send_HandoverCancelAcknowledge(
                        m_HandoverCancelAckIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_12
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_13
             */
            function f_TC_S1AP_eNB_HAS_13() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                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
                    ));
                     
                    f_send_HandoverCommand(
                        m_HandoverCommandIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER//TargetToSourceTransparentContainer
                    ));

                    action("Await eNB_STATUS_TRANSFER MESSAGE.");
                    
                    f_recv_EnbStatusTransfer(
                        mw_EnbStatusTransferIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            mw_eNBStatusTransferTransparentContainer//eNB Status Transfer Transparent Container
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_13
        } // End of group Handover_signalling_group
        
        /**
         * @desc Paging group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.5  Paging group
         */
        group Paging_group {
        } // End of group Paging_group
        
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.6   NAS transport group
         */
        group NAS_transport_group {
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_01
             */
            function f_TC_S1AP_eNB_NAS_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate the initiation of a NAS Transport procedure
                if (fx_eNB_Initiate_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an INITIAL UE MESSAGE
                    f_recv_Initial_UE_Message(
                        mw_initial_uE_MessageIEs(
                            vc_eNB_UE_ID,
                            -,
                            mw_TAI(
                                PX_PLMN_IDENTITY, 
                                PX_TAC
                            ),
                            mw_eUTRAN_CGI(
                                PX_PLMN_IDENTITY, 
                                PX_CELL_ID
                            ),
garciay's avatar
garciay committed
                            mw_cause_ran
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_01
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_02
             */
            function f_TC_S1AP_eNB_NAS_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And a NAS procedure is initiated
                fx_eNB_Initiate_NAS_transport_procedure();
                f_recv_Initial_UE_Message(
                    mw_initial_uE_MessageIEs(
                        vc_eNB_UE_ID,
                        -,
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
garciay's avatar
garciay committed
                        mw_cause_ran
                ));
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an ongoing NAS Transport procedure
                if (fx_eNB_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an UPLINK_NAS_TRANSPORT
                    f_recv_Uplink_NAS_Transport(
                        mw_uplink_nAS_TransportIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,
                            mw_eUTRAN_CGI(
                                PX_PLMN_IDENTITY, 
                                PX_CELL_ID
                            ),
                            mw_TAI(
                                PX_PLMN_IDENTITY, 
                                PX_TAC
                    )));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_02
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_03
             */
            function f_TC_S1AP_eNB_NAS_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And UE is not exchanged
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a UE has not received a INITIAL_UE_MESSAGE
                if (fx_eNB_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a NAS_NON_DELIVERY_INDICATION
                    f_recv_NAS_Non_Delivery_Indication(
                        mw_nAS_Non_Delivery_IndicationIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,
                            mw_cause_ran(
garciay's avatar
garciay committed
                                unspecified // Check the value to be used
                            )
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_03
            
        } // End of group NAS_transport_group
        
        /**
         * @desc Management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.7 Management group
         */
        group Management_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
garciay's avatar
garciay committed
                            unspecified // Check the value to be used
                        ),
                        m_resetType_all
                ));
                
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                                    vc_eNB_UE_ID
                            ))*/
                        }
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_01
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_02
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Reset procedure initiated from the E-UTRAN
garciay's avatar
garciay committed
                if (fx_eNB_Reset_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a RESET
                    f_recv_Reset(
                        mw_resetIEs(
                            mw_cause_nas(
garciay's avatar
garciay committed
                                unspecified // Check the value to be used
                            ),
                            m_resetType_all
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_02
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_03
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
garciay's avatar
garciay committed
                            unspecified // Check the value to be used
                        ),
                        m_resetType_partOfS1_Interface(
                            {
                                /*m_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                    m_uE_associatedLogicalS1_ConnectionItem(
                                        0,
                                        0
                                )),*/
                         // Following code replaces upper commented line due to validation check error
                         //expression at [0].criticality is not of type 'enumerated 
                         // Type_824701419588_UE_associatedLogicalS1_ConnectionListRes_3 {
                         //  reject(0),
                         //  ignore(1),
                         //  notify(2)
                         //}'
                                {
                                    id := 91,//S1AP_Constants.id_UE_associatedLogicalS1_ConnectionItem,
                                    criticality := reject,
                                    value_ := { UE_associatedLogicalS1_ConnectionItem := valueof(m_uE_associatedLogicalS1_ConnectionItem(0,0))}
                                }
                            }
                        )
                ));
                
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                                    vc_eNB_UE_ID
                            ))*/
                        }
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_03
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_04
             */
            function f_TC_S1AP_eNB_MNP_04() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an Error Indication procedure
                if (fx_eNB_Error_Indication_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a ERROR_INDICATION
                    f_recv_Error_Indication(
                        superset (
                            all from 
                                mw_error_IndicationIEs(
                                    vc_MME_UE_ID,
                                    vc_eNB_UE_ID, 
                                    mw_cause_IE(
                                        -
                                    )
                                ),
                                mw_error_IndicationIEs(
                                    vc_MME_UE_ID,
                                    vc_eNB_UE_ID, 
                                    mw_criticalityDiagnostics_IE(
                                        -
                                    )
                                )
                        )
                    );
garciay's avatar
garciay committed
                }
                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_MNP_04
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_05
             */
            function f_TC_S1AP_eNB_MNP_05() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a S1 Setup procedure
                if (fx_eNB_S1_Setup_Request_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a S1 SETUP REQUEST
                    f_recv_S1_Setup_Request(
                        mw_s1_Setup_RequestIEs(
                            mw_Global_eNB_ID(
                                PX_PLMN_IDENTITY, 
                                PX_eNB_ID
                            ),
                            {
                                mw_supportedTAs_Item(
                                    PX_TAC,
                                    {
                                        PX_PLMN_IDENTITY
                                    } 
                                )
                            },
                            PX_PAGING_DRX
                    ));
                    // Send the response to finalyse the procedure
                    f_send_S1_Setup_Response(
                        m_s1_Setup_ResponseIEs(
                            {
                                m_servedGUMMEIsItem(
                                    { PX_PLMN_IDENTITY },
                                    { PX_MME_GROUP_ID },
                                    { PX_MME_CODE }
                                )
                            }, 
garciay's avatar
garciay committed
                    ));
                }
                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_MNP_05
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_06
             */
            function f_TC_S1AP_eNB_MNP_06() runs on S1APComponent { 
                // Local variables