S1AP_TCFunctions.ttcn 248 KB
Newer Older
garciay's avatar
garciay committed
                        vc_MME_UE_ID,
                        {
                            m_E_RABToBeSetupItemBearerSUReq (
                                -,
                                m_e_RABlevelQoSParameters(5)
                            )
                        }
                ));
                // 2. sends an ERROR_INDICATION
                f_recv_Error_Indication(
                    mw_error_IndicationIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        mw_criticalityDiagnostics_IE(
                             mw_criticalityDiagnostics(
                                PX_PROCEURE_CODE,
                                PX_TRIGGERING_CODE,
                                PX_CRITICALITY,
                                { 
                                    mw_criticalityDiagnostics_IE_Item(
                                        reject, 
                                        -, 
                                        missing
                                    ) 
                                }
                            )
                        )
                ));
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                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_ERR_05
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_06
             */
            function f_TC_S1AP_ENB_ERR_06() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST
                f_send_InitialContext_SetupRequest(
garciay's avatar
garciay committed
                    m_InitialContextSetupReqIEs_duplicate_eNB(
garciay's avatar
garciay committed
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        m_UEAggregateMaximumBitrate(1,1),
                        {
                            m_E_RABToBeSetupItemCtxtSUReq (
                                -,
                                m_e_RABlevelQoSParameters
                                (0),
                                -
                        )},
                        m_UESecurityCapabilities(
                            PX_UNSUPPORTED_ENCRYPTION_ALGORITHM,
                            '0101010101010101'B
                        ),
                        m_securityKey
                    )
                );
                // 2. sends an INITIAL_CONTEXT_SETUP_FAILURE
                f_recv_InitialContext_SetupResponse(
                    mw_InitialContextSetupFailureIEs_CriticalyDiagnostic(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        mw_cause_protocol(abstract_syntax_error_falsely_constructed_message),
                        mw_criticalityDiagnostics(
                            PX_PROCEURE_CODE,
                            PX_TRIGGERING_CODE,
                            PX_CRITICALITY
                )));
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_ENB_ERR_06
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_07
             */
            function f_TC_S1AP_ENB_ERR_07() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_enb_init();
                // to indicate an ENB Configuration Transfer procedure
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // Test body
                // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST
                f_send_E_RABSetupRequest(
                    m_E_RABSetupReqIEs_duplicate_ENB(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeSetupItemBearerSUReq (
                                -,
                                m_e_RABlevelQoSParameters(5)
                            )
                        }
                ));
                // 2. sends an ERROR_INDICATION
                f_recv_Error_Indication(
                    mw_error_IndicationIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        mw_cause_IE(
                            mw_cause_protocol(abstract_syntax_error_falsely_constructed_message)
                        )
                ));
garciay's avatar
garciay committed
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_ENB_ERR_07
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_08
             */
            function f_TC_S1AP_ENB_ERR_08() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                // 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. ***");
garciay's avatar
garciay committed
                // Test body
                // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST
                f_send_E_RABSetupRequest(
                    m_E_RABSetupReqIEs_duplicate_ENB(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeSetupItemBearerSUReq (
                                -,
                                m_e_RABlevelQoSParameters(5)
                            )
                        }
                ));
                // 2. sends an ERROR_INDICATION
                f_recv_Error_Indication(
                    mw_error_IndicationIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        mw_cause_IE(
                            mw_cause_ran(unknown_enb_ue_s1ap_id)
                        )
                ));
                
                // Postamble
                f_rABSetupRelease();
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                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_ERR_08
        } // End of group Unknown_unforseen_errorneous_group
garciay's avatar
garciay committed
    } // End of group eNB_Role
garciay's avatar
garciay committed
    group MME_Role {
        
        /**
         * @desc E-RAB management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.2  E-RAB management group
         */
garciay's avatar
garciay committed
        group ERAB_management_group { 
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_RAB_01
garciay's avatar
garciay committed
             */
            function f_TC_S1AP_MME_RAB_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                         
                // Test body
                action("trigger an Initial E-RAB Setup procedure");
              
                f_recv_E_RABSetupRequest(mw_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
garciay's avatar
garciay committed
                    { mw_E_RABToBeSetupItemBearerSUReq(?,?,?,?,?) }
garciay's avatar
garciay committed
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 

                // Postamble                                
                f_send_E_RABSetupResponse(m_E_RABSetupResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABSetupItemBearerSURes}
                ));  
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_MME_RAB_01
rennoch's avatar
rennoch committed

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_02
             */
            function f_TC_S1AP_MME_RAB_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_rABSetupRequest();
                                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                         
                // Test body
                action("trigger an E-RAB Modify request");
              
                f_recv_E_RABModifiedRequest(mw_E_RABModifiedReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_E_RABToBeModifiedList({mw_E_RABToBeModifiedItemBearerSUReq(?,mw_e_RABlevelQoSParameters(5),?)})
rennoch's avatar
rennoch committed
                ));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 

                // Postamble                                

                f_postamble_S1AP_MME();
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_RAB_02
garciay's avatar
garciay committed
            
        } // End of group ERAB_management_group
        /**
         * @desc Context management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.3  Context management group
         */
        group Context_management_group {
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_01
             */
            function f_TC_S1AP_mME_CMP_01() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // Test body
                action("trigger an Initial Context Setup procedure");
garciay's avatar
garciay committed
                f_recv_InitialContext_SetupRequest(mw_InitialContextSetupRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_UEAggregateMaximumBitrate(?,?),
                    {
                        mw_E_RABToBeSetupItemCtxtSUReq(?,mw_e_RABlevelQoSParameters(5),?,?,?,omit)
                    },
                    ?,                       
                    ?
                ));
garciay's avatar
garciay committed
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_CMP_01

            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_02
             */
            function f_TC_S1AP_mME_CMP_02() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
                select(PX_VA){
                    case(1){v_cause := m_cause_ran(user_inactivity)}
                    case(2){v_cause := m_cause_ran(radio_connection_with_ue_lost)}
                    case(3){v_cause := m_cause_nas(csg_subscription_expiry)}
                    case(4){v_cause := m_cause_ran(cs_fallback_triggered)}
                    case(5){v_cause := m_cause_ran(redirection_towards_1xRTT)}
                    case(6){v_cause := m_cause_ran(interrat_redirection)}
                    case(7){v_cause := m_cause_ran(ue_not_available_for_ps_service)}
                    case else {setverdict(fail, "undefined PIXIT value for variant")}
                }
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_mme_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // Test body
garciay's avatar
garciay committed
                f_send_UE_Context_Release_Command(m_UeContextReleaseRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    v_cause
                    ));
garciay's avatar
garciay committed
                f_recv_InitialContext_SetupRequest((mw_UeContextReleaseCommandIEs_MME, mw_UeContextReleaseCommandIEs_ENB));                
garciay's avatar
garciay committed
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
garciay's avatar
garciay committed
                f_send_UE_Context_Release_Complete(m_UeContextReleaseCompleteIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                    ));
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_CMP_02
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_03
             */
            function f_TC_S1AP_mME_CMP_03() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_mme_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // Test body                    
                action("trigger a UE context modification request");
                f_recv_UE_Context_Modification_Request(mw_UeContextModificationRequestIEs);                
garciay's avatar
garciay committed
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_CMP_03
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_04
             */
            function f_TC_S1AP_mME_CMP_04() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_mme_init();
garciay's avatar
garciay committed
                
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // Test body                    
                action("trigger a UE radio capability match request");
                f_recv_UE_Context_Modification_Request(mw_UeRadioCapabilityMatchRequestIEs);                
garciay's avatar
garciay committed
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_CMP_04
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_05
             */
            function f_TC_S1AP_mME_CMP_05() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_mme_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // Test body
garciay's avatar
garciay committed
                f_send_UE_Context_Modification_Indication(m_UeContextModificationIndicationIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                    ));
garciay's avatar
garciay committed
                f_recv_Ue_Context_Modification_Confirm(mw_UeContextModificationConfirmIEs);                
garciay's avatar
garciay committed
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_CMP_05
            
            function f_TC_S1AP_mME_CMP_06() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
rennoch's avatar
rennoch committed
                                
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_mme_init();
rennoch's avatar
rennoch committed
                
garciay's avatar
garciay committed
                f_rABSetupRequest();
rennoch's avatar
rennoch committed
                
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
rennoch's avatar
rennoch committed
                
garciay's avatar
garciay committed
                // Test body
rennoch's avatar
rennoch committed

garciay's avatar
garciay committed
                f_send_UE_Context_Modification_Indication(m_UeContextModificationIndicationIEsCSG(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    m_CSGMembershipInfo
                    ));
rennoch's avatar
rennoch committed
                    
				f_recv_Ue_Context_Modification_Confirm(mw_UeContextModificationConfirmIEsCSG);                
rennoch's avatar
rennoch committed
                
				// Postamble
				f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
				f_postamble_S1AP_MME();
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
				log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
			} // End of function f_TC_S1AP_eNB_CMP_06  


            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_07
             */
            function f_TC_S1AP_mME_CMP_07() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
                                
                // Preamble
                f_S1AP_mme_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body

                f_send_UE_Context_Modification_Indication(m_UeContextModificationIndicationIEsCSG(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    m_CSGMembershipInfo(-,-,hybrid)
                    ));
                    
garciay's avatar
garciay committed
                f_recv_Ue_Context_Modification_Confirm(mw_UeContextModificationConfirmIEs);                
                
                f_recv_InitialContext_SetupRequest((mw_UeContextReleaseCommandIEs_MME, mw_UeContextReleaseCommandIEs_ENB));                
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_CMP_07  
rennoch's avatar
rennoch committed


            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_08
             */
            function f_TC_S1AP_mME_CMP_08() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
                                
                // Preamble
                f_S1AP_mme_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body

                f_send_UE_Context_Suspend_Request(m_UeContextSuspendRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                    ));
                    
                f_recv_Ue_Context_Suspend_Response(mw_UeContextSuspendResponseIEs);                
rennoch's avatar
rennoch committed
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_CMP_08
garciay's avatar
garciay committed
              
            
rennoch's avatar
rennoch committed
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_09
             */
            function f_TC_S1AP_mME_CMP_09() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
                                
                // Preamble
                f_S1AP_mme_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body

garciay's avatar
garciay committed
                f_send_Ue_Context_Resume_Request(m_UeContextResumeRequestIEs(
rennoch's avatar
rennoch committed
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
garciay's avatar
garciay committed
                ));
rennoch's avatar
rennoch committed
                    
                f_recv_Ue_Context_Resume_Response(mw_UeContextResumeResponseIEs);                
rennoch's avatar
rennoch committed
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_CMP_09              
rennoch's avatar
rennoch committed


            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_10
             */
            function f_TC_S1AP_mME_CMP_10() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
rennoch's avatar
rennoch committed
                const E_RAB_ID c_E_RAB_ID_A := 0;
rennoch's avatar
rennoch committed
                                
                // Preamble
                f_S1AP_mme_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
garciay's avatar
garciay committed

                f_send_Ue_Context_Resume_Request(
                    m_UeContextResumeRequestIEs_RABFailedToResumeItem(
garciay's avatar
garciay committed
                    vc_MME_UE_ID,
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        {
                            m_E_RABFailedToResumeItemResumeReq(
                                c_E_RAB_ID_A,
                                m_cause_ran(user_inactivity)
                            )
                        }
garciay's avatar
garciay committed
                    
rennoch's avatar
rennoch committed
                f_recv_Ue_Context_Resume_Failure(mw_UeContextResumeFailureIEs);                
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_CMP_10 
garciay's avatar
garciay committed
            
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_11
             */
            function f_TC_S1AP_mME_CMP_11() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
                                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body                    
                action("trigger a Connection establishment indication");
                f_recv_Connection_Establishment_Indication(mw_ConnectionEstablishmentIndicationIEs);                
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_CMP_11
garciay's avatar
garciay committed
            
        } // End of group Context_management_group
        /**
         * @desc Handover signalling group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.4  Handover signalling group
         */
        group Handover_signalling_group {
            /**
             * @desc Testcase function for TC_S1AP_MME_HAS_01
             */
            function f_TC_S1AP_MME_HAS_01() runs on S1APComponent { 
                // Local variables
                const Source_ToTarget_TransparentContainer c_source_ToTarget_TransparentContainer := '12121212'O;
                const Target_ToSource_TransparentContainer c_target_ToSource_TransparentContainer := '12121212'O;
                
                // Preamble
                f_S1AP_mme_init();
                // Preamble action: E-RAB Setup is exchanged.
                //f_rABSetup...;
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // sends a HANDOVER_REQUIRED
                f_send_HandoverRequired(
                    m_HandoverRequiredIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        intralte,
                        m_cause_ran(unspecified),
                        m_TargeteNB_ID(m_Global_ENB_ID('000001'O,
                                                       m_ENB_ID_macro),
                                       m_TAI('000001'O,
                                             '0001'O)),
                        c_source_ToTarget_TransparentContainer
                ));
                 
                f_recv_HandoverCommand(
                    mw_HandoverCommandIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        intralte,//handover_Type
                        c_target_ToSource_TransparentContainer//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_MME_HAS_01
        } // End of group Handover_signalling_group
        /**
         * @desc Paging group
         * @see ETSI TS 103 497-2 Clause 5.2.2.2.5  Paging group
        group Pagin_group {
            /**
             * @desc Testcase function for TC_S1AP_MME_PAG_01
             */
            function f_TC_S1AP_MME_PAG_01() runs on S1APComponent { 
                // Local variables
                
                // 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. to indicate a Paging procedure
                if (fx_MME_Paging_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PAGING
                    f_recv_Paging(
                        mw_pagingIEs(
                            PX_UE_IDENTITY_INDEX_VALUE,
                            mw_uEPagingID_iMSI(
                                PX_IMSI
                            ),
garciay's avatar
garciay committed
                            PX_CNDOMAIN
                    ));
                    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_PAG_01
            
        } // End of group Pagin_group
        
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.6  NAS transport group
         */
        group NAS_transport_group {
            /**
             * @desc Testcase function for TC_S1AP_MME_NAS_01
             */
            function f_TC_S1AP_MME_NAS_01() runs on S1APComponent { 
                // Local variables
                // 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. to indicate an ongoing NAS Transport procedure
                if (fx_MME_Downlink_NAS_Transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a DOWNLINK_NAS_TRANSPORT
                    f_recv_Downlink_NAS_Transport(
                        mw_downlink_nAS_TransportIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -
                    ));
                    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_NAS_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_NAS_02
             */
            function f_TC_S1AP_MME_NAS_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                // Preamble action: E-RAB Setup is exchanged, and a NAS procedure is initiated.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Reroute NAS Request procedure
                if (fx_MME_Reroute_NAS_Request_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a REROUTE_NAS_REQUEST
                    f_recv_Reroute_NAS_Request(
                        mw_reroute_nAS_RequestIEs(
                            vc_MME_UE_ID,
                            -,
                            PX_MME_GROUP_ID
                    ));
                    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_NAS_02
            
        } // End of group NAS_transport_group
garciay's avatar
garciay committed
        
garciay's avatar
garciay committed
        /**
         * @desc Management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.7 Management group
         */
        group Management_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_01
             */
            function f_TC_S1AP_MME_MNP_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Reset procedure initiated from the MME
                if (fx_MME_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_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_MNP_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_02
             */
            function f_TC_S1AP_MME_MNP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_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_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_MNP_02
            
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_03
             */
            function f_TC_S1AP_MME_MNP_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_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
garciay's avatar
garciay committed
                        ),
                        m_resetType_all
                ));
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
                                    vc_eNB_UE_ID
                            ))*/
                        }
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
garciay's avatar
garciay committed
                
                // Postamble
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_MNP_03
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_04
             */
            function f_TC_S1AP_MME_MNP_04() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an Error Indication procedure
                if (fx_MME_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_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_MNP_04
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_05
             */
            function f_TC_S1AP_MME_MNP_05() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");