S1AP_TCFunctions.ttcn 173 KB
Newer Older
                    )));
                }
                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(
                                unspecified // TODO 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(
                            unspecified // TODO 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(
                                unspecified // TODO 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(
                            unspecified // TODO Check the value to be used
                        ),
                        m_resetType_partOfS1_Interface(
                            {
                                m_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                    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 }
                                )
                            }, 
                            PX_RELATIVE_MME_CAPAVCITY
                    ));
                }
                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
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an eNB Configuration Update procedure
                if (fx_eNB_Configuration_Update_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an ENB_CONFIGURATION_UPDATE
                    f_recv_eNB_Configuration_Update(
                        mw_eNB_Configuration_UpdateIEs(
                            mw_Global_eNB_ID(
                                PX_PLMN_IDENTITY, 
                                PX_eNB_ID
                            ),
                            {
                                mw_supportedTAs_Item(
                                    PX_TAC,
                                    {
                                        PX_PLMN_IDENTITY
                                    } 
                                )
                            }
                    ));
                    // Send the acknowledge to finalyse the procedure
                    f_send_eNB_Configuration_Update_Acknowledge(
                        m_eNB_Configuration_Update_AcknowledgeIEs
                    );
                }
                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_06
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_07
             */
            function f_TC_S1AP_eNB_MNP_07() 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_MME_Configuration_Update(
                    m_mME_Configuration_UpdateIEs(
                        {
                            m_servedGUMMEIsItem(
                                { PX_PLMN_IDENTITY },
                                { PX_MME_GROUP_ID },
                                { PX_MME_CODE }
                            )
                        } 
                ));
                
                f_recv_MME_Configuration_Update_Acknowledge(
                    mw_mME_Configuration_Update_AcknowledgeIEs
                );
                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_07
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_08
             */
            function f_TC_S1AP_eNB_MNP_08() 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_MME_Configuration_Update(
                    m_mME_Configuration_UpdateIEs(
                        {
                            m_servedGUMMEIsItem(
                                { 
                                    PX_PLMN_IDENTITY,
                                    PX_PLMN_IDENTITY_UNKNOWN
                                },
                                { PX_MME_GROUP_ID },
                                { PX_MME_CODE }
                            )
                        } 
                ));
                
                f_recv_MME_Configuration_Update_Failure(
                    mw_mME_Configuration_Update_FailureIEs(
                        mw_cause_misc(
                            unknown_PLMN
                )));
                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_08
            
        } // End of group Management_group 
        
        /**
         * @desc S1 CDMA 2000 tunnelling group 
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.8   S1 CDMA 2000 tunnelling group 
         */
        group S1_CDMA_2000_tunnelling_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_STP_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_STP_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 a CDMA2000 to be forwarded
garciay's avatar
garciay committed
                if (fx_eNB_Uplink_S1_CDMA2000_Tunnelling_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a an UPLINK_S1_CDMA2000_TUNNELLING
                    f_recv_Uplink_S1_CDMA2000_Tunnelling(
                        mw_uplink_S1_CDMA2000_TunnellingIEs(
                            vc_MME_UE_ID,
garciay's avatar
garciay committed
                            vc_eNB_UE_ID,
                            PX_CDMA200_RAT_TYPE, 
                            PX_CDMA200_SECTOR_ID,
                            PX_CDMA200_PDU
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                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_STP_01
            
        } // End of group S1_CDMA_2000_tunnelling_group
        
        /**
         * @desc UE capability info indication group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.9   UE capability info indication group
         */
        group UE_capability_info_indication_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_UEC_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_UEC_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 a capability-related information update
garciay's avatar
garciay committed
                if (fx_eNB_UE_Capability_Info_Indication_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a UE_CAPABILITY_INFO_INDICATION
                    f_recv_eNB_UE_Capability_Info_Indication(
                        mw_uE_Capability_Info_IndicationIEs(
                            vc_MME_UE_ID,
garciay's avatar
garciay committed
                            vc_eNB_UE_ID,
                            - // TODO To be refined
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                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_UEC_01
            
        } // End of group UE_capability_info_indication_group
        
garciay's avatar
garciay committed
        /**
         * @desc Warning message transmission group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.10  Trace group
         */
        group Trace_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_01
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_TRP_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated.
                f_rABSetupRequest();
                f_initiate_handover();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Trace_Start(
                    m_trace_StartIEs(
                        m_traceActivation(
                            PX_EUTRAN_TRACE_ID,
                            PX_INTERFACES_TO_TRACE,
                            PX_TRACE_DEPTH,
                            PX_TRANSPORT_LAYER_ADDRESS
                )));
                
                f_recv_Trace_Failure_Indication(
                    mw_trace_Failure_IndicationIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        PX_EUTRAN_TRACE_ID,
                        - // TODO To be refined
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                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_TRP_01
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_02
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_TRP_02() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated.
                f_rABSetupRequest();
                f_initiate_traceStart();
                f_initiate_handover();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_deactivate_Trace(
                    m_deactivate_TraceIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        PX_EUTRAN_TRACE_ID
                ));
                
                f_recv_Trace_Failure_Indication(
                    mw_trace_Failure_IndicationIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        PX_EUTRAN_TRACE_ID,
                        - // TODO To be refined
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_initiate_deactivateTrace();
                f_rABSetupRelease();
                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_TRP_02
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_03
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_TRP_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_initiate_traceStart();
                
                f_recv_Cell_Traffic_Trace(
                    mw_cell_Traffic_TraceIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
                        PX_EUTRAN_TRACE_ID,
                        mw_eUTRAN_CGI,
                        - // TODO To be refined
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_initiate_deactivateTrace();
                f_rABSetupRelease();
                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_TRP_03
garciay's avatar
garciay committed
        } // End of group Trace_group
        
        /**
         * @desc Warning message transmission group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.11  Location reporting group
         */
        group Location_reporting_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_01
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // 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_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            direct,
                            PX_REPORT_AREA
                )));
                
                f_recv_Location_Report(
                    mw_location_ReportIEs(
                        ?,
                        ?,
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_request_Type(
                            direct,
                            PX_REPORT_AREA
                )));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                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_LRP_01
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_02
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_02() runs on S1APComponent { 
garciay's avatar
garciay committed
                // 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_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                
                fx_move_UE_to_new_cell(); // when UE changes to new cell
                
                f_recv_Location_Report(
                    mw_location_ReportIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_request_Type(
                            change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                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_LRP_02
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_03
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_03() runs on S1APComponent { 
garciay's avatar
garciay committed
                // 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_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            stop_change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                
                fx_check_UE_stops_reporting(); // when UE stop reporting at change of serving cell
                
                f_recv_Location_Report(
                    mw_location_ReportIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_request_Type(
                            stop_change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                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_LRP_03
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_04
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_04() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated.
                f_rABSetupRequest();
                f_initiate_handover();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            PX_EVENT_TYPE,
                            PX_REPORT_AREA
                )));
                
                f_recv_Location_Report_Failure_Indication(
                    mw_location_Report_Failure_IndicationIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        ? // TODO To be refined: what kind of cause :-(
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                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_LRP_04
garciay's avatar
garciay committed
            
        } // End of group Location_reporting_group
        
        /**
         * @desc Warning message transmission group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.12 Warning message transmission group
         */
        group Warning_message_transmission_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_01
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Write_Replace_Warning_Request(
                    m_write_Replace_Warning_RequestIEs(
                        PX_MESSAGE_IDENTIFIER,
                        PX_SERIAL_NUMBER,
                        PX_REPETITION_PERIOD, 
                        PX_NUMBER_OF_BROADCASTS_REQUESTED
                ));
                
                f_recv_Write_Replace_Warning_Response(
                    mw_write_Replace_Warning_ResponseIEs(
                        ?,
                        ?
                ));
                
                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_WTP_01
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_02
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_02() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Kill_Request(
                    m_kill_RequestIEs(
                        PX_MESSAGE_IDENTIFIER,
                        PX_SERIAL_NUMBER
                ));
                
                f_recv_Kill_Response(
                    mw_kill_ResponseIEs(
                        ?,
                        ?
                ));
                
                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_WTP_02
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_03
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_03() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a PWS Restart Indication procedure
garciay's avatar
garciay committed
                if (fx_eNB_PWS_Restart_Indication_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PWS_RESTART_INDICATION
                    f_recv_eNB_PWS_Restart_Indication(
                        mw_pWS_Restart_IndicationIEs( 
                            { 
                                mw_eUTRAN_CGI(
                                    PX_PLMN_IDENTITY, 
                                    PX_CELL_ID
                                ) 
                            },
garciay's avatar
garciay committed
                            mw_Global_eNB_ID(
garciay's avatar
garciay committed
                                PX_PLMN_IDENTITY, 
garciay's avatar
garciay committed
                                PX_eNB_ID
garciay's avatar
garciay committed
                            ),
                            { 
                                mw_TAI(
                                    PX_PLMN_IDENTITY, 
                                    PX_TAC
                                ) 
                            },
                            { PX_EMERGENCY_AREA_ID }
                    ));
                }
                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_WTP_03
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_04
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_04() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a PWS Failure Indication procedure
garciay's avatar
garciay committed
                if (fx_eNB_PWS_Failure_Indication_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PWS_FAILURE_INDICATION
                    f_recv_eNB_PWS_Failure_Indication(
                        mw_pWS_Failure_IndicationIEs( 
                            { 
                                mw_eUTRAN_CGI(
                                    PX_PLMN_IDENTITY, 
                                    PX_CELL_ID
                                ) 
                            },
garciay's avatar
garciay committed
                            mw_Global_eNB_ID(
garciay's avatar
garciay committed
                                PX_PLMN_IDENTITY, 
garciay's avatar
garciay committed
                                PX_eNB_ID
garciay's avatar
garciay committed
                            )
                    ));
                }
                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_WTP_04
garciay's avatar
garciay committed
            
        } // End of group Warning_message_transmission_group
        
        /**
         * @desc eNB direct information transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.13  eNB direct information transfer group
         */
        group ENB_direct_information_transfer_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_EIT_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_EIT_01() 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 ENB Direct Information Transfer procedure
garciay's avatar
garciay committed
                if (fx_eNB_Direct_Information_Transfer_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a ENB_DIRECT_INFORMATION_TRANSFER