S1AP_TCFunctions.ttcn 95 KB
Newer Older
garciay's avatar
garciay committed
 *    @author   ETSI / STF519
garciay's avatar
garciay committed
 *    @desc     This module provides RfRo test functions used by the test cases.
 *    @copyright   ETSI Copyright Notification
 *                 No part may be reproduced except as authorized by written permission.
 *                 The copyright and the foregoing restriction extend to reproduction in all media.
 *                 All rights reserved.
 *    @see      ETSI TS 136 413 / 3GPP TS 36.413 version 13.4.0 Release 13
 */
module S1AP_TCFunctions {
garciay's avatar
garciay committed
    
    // LibCommon
    import from LibCommon_Sync all;
garciay's avatar
garciay committed
    import from LibCommon_VerdictControl all;
    // LibS1AP
    import from S1AP_Constants language "ASN.1:1997" all;
    import from S1AP_CommonDataTypes language "ASN.1:1997" all;
    // import from S1AP_Containers language "ASN.1:1997" all;
    import from S1AP_IEs language "ASN.1:1997" all;
    import from S1AP_PDU_Contents language "ASN.1:1997" all;
    import from S1AP_PDU_Descriptions language "ASN.1:1997" all;
    
garciay's avatar
garciay committed
    import from LibS1AP_Pixits all;
    //import from LibS1AP_TypesAndValues all;
    import from LibS1AP_Templates all;
    import from LibS1AP_Interface all;
    import from LibS1AP_Steps all;

    // Ats
    import from S1AP_Templates all;
    import from S1AP_Steps all;
garciay's avatar
garciay committed
    import from S1AP_Pixits all;
    import from S1AP_TestSystem all;
    
garciay's avatar
garciay committed
    group eNB_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
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_RAB_01
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_RAB_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. ***");
                
//                f_send_S1AP_initiatingMessage(
//                    m_E_RABSetupRequest(
//                    {
//                        m_MME_UE_S1AP_ID(vc_MME_UE_ID),
garciay's avatar
garciay committed
//                        m_eNB_UE_S1AP_ID(vc_eNB_UE_ID),
//                        m_E_RABToBeSetupList(
//                        {
//                            m_E_RABToBeSetupItemBearerSUReq
//                            (
//                                -,
//                                m_e_RABlevelQoSParameters
//                                (5)
//                            )
//                        }
//                        )
//                    }
//                    )
//                );
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
                    {m_E_RABToBeSetupItemBearerSUReq (
                        -,
                        m_e_RABlevelQoSParameters
                        (5)
                    )}
                ));

                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
garciay's avatar
garciay committed
                    {
                        mw_E_RABSetupItemBearerSURes
garciay's avatar
garciay committed
                    }
garciay's avatar
garciay committed
                
//                f_recv_S1AP_successfulOutcome(
//                    mw_E_RABSetupResponse(
//                        {
//                            mw_MME_UE_S1AP_ID(vc_MME_UE_ID,ignore),
garciay's avatar
garciay committed
//                            mw_eNB_UE_S1AP_ID(vc_eNB_UE_ID,ignore),
//                            mw_E_RABSetupList(
//                            {
//                                mw_E_RABSetupItemBearerSURes
//                            }
//                            )
//                        }
//                    )
//                );
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_RAB_01
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_RAB_02
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_RAB_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. ***");
                
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
garciay's avatar
garciay committed
                    {
                         m_E_RABToBeSetupItemBearerSUReq(1),
                         m_E_RABToBeSetupItemBearerSUReq(
                            2,
                            m_e_RABlevelQoSParameters
                            (255)
garciay's avatar
garciay committed
                         )
                     }
garciay's avatar
garciay committed
                
//                f_send_S1AP_initiatingMessage(
//                    m_E_RABSetupRequest(
//                    {
//                         m_MME_UE_S1AP_ID(vc_MME_UE_ID),
garciay's avatar
garciay committed
//                         m_eNB_UE_S1AP_ID(vc_eNB_UE_ID),
//                         m_E_RABToBeSetupList(
//                         {
//                             m_E_RABToBeSetupItemBearerSUReq(1),
//                             m_E_RABToBeSetupItemBearerSUReq(
//                                2,
//                                m_e_RABlevelQoSParameters
//                                (255)
//                             )
//                         }
//                         )
//                     }
//                     )
//                     
//                );

                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
                    {
                          mw_E_RABSetupItemBearerSURes(1)
                    },
                    {
                        mw_E_RABItem(
                            2,
garciay's avatar
garciay committed
                            {
                                radioNetwork :=not_supported_QCI_value
garciay's avatar
garciay committed
                            }
                        )
                    }
                ));
                
//                f_recv_S1AP_successfulOutcome(
//                    mw_E_RABSetupResponse(
//                        {
//                            mw_MME_UE_S1AP_ID(vc_MME_UE_ID,ignore),
garciay's avatar
garciay committed
//                            mw_eNB_UE_S1AP_ID(vc_eNB_UE_ID,ignore),
//                            mw_E_RABSetupList(
//                            {
//                                  mw_E_RABSetupItemBearerSURes(1)
//                            }
//                            ),
//                            mw_E_RABFailedToSetupList(
//                            {
//                                mw_E_RABItem(
//                                    2,
//                                    {
//                                        radioNetwork :=not_supported_QCI_value
//                                    }
//                                )
//                            }
//                            )
//                        }
//                    )
//                );
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_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.1.3  Context management group
		 */
		group Context_management_group {

             * @desc Testcase function for TC_S1AP_eNB_CMP_01
            function f_TC_S1AP_eNB_CMP_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_InitialContext_SetupRequest(m_InitialContextSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
				    m_UEAggregateMaximumBitrate(1,1),
                    {m_E_RABToBeSetupItemBearerSUReq (
                        -,
                        m_e_RABlevelQoSParameters
                        (5),
                        -,
                        - // TODO should be omit
                    )},
				    m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),
				    m_securityKey
				f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABSetupItemBearerSURes
                    }
                ));
                
                
                // 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_CMP_01
            
		} // End of group Context_management_group


		/**
		 * @desc Handover signalling group
		 * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.4  Handover signalling group
		 */
		group Handover_signalling_group {

            
		} // 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 {

            
		} // 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 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 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 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(
                        mw_error_IndicationIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID // TODO To be refined
                    ));
                }
                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_MME();
                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_MME();
                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();