S1AP_TCFunctions.ttcn 268 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 {
    // LibCommon
    import from LibCommon_Sync all;
garciay's avatar
garciay committed
    import from LibCommon_VerdictControl all;
    import from LibCommon_Time {function f_sleepIgnoreDef;}
    import from S1AP_IEs language "ASN.1:1997" all;
garciay's avatar
garciay committed
    import from LibS1AP_Pixits all;
    import from LibS1AP_Templates all;
    import from LibS1AP_Interface all;
    import from LibS1AP_Steps all;
garciay's avatar
garciay committed
    import from LibS1AP_Pixits all;
    // S1AP_Ats
    import from S1AP_Steps all;
garciay's avatar
garciay committed
    import from S1AP_Pixits 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_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_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
                         )
                     }
                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
                            }
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
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_03
             */
            function f_TC_S1AP_eNB_RAB_03() runs on S1APComponent { 
                // 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,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABToBeSetupItemBearerSUReq
                    }
                ));
       
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -, //omit
                    {
                        mw_E_RABItem(
                            0,
                            {
                                radioNetwork :=
                            (s1_intra_system_handover_triggered,
                             s1_inter_system_handover_triggered,
                             x2_handover_triggered)
                            }
                        )
                    }
                ));
                                
               f_recv_Handover_Required(mw_HandoverRequiredIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    ltetoutran,
                    ?,
                    ?,
                    ?
                ));
                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_RAB_03
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_04
             */
            function f_TC_S1AP_eNB_RAB_04() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                const QCI c_qci_id := 1; 
                
                // 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,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeSetupItemBearerSUReq (
                        -,
                        m_e_RABlevelQoSParameters(c_qci_id)
                    )}
                ));
                
                
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -, //omit
                    {
                        mw_E_RABItem(
                            0,
                            {
                                radioNetwork := not_supported_QCI_value
                            }
                        )
                    }
                ));
                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_RAB_04
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_05
             */
            function f_TC_S1AP_eNB_RAB_05() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                const QCI c_qci_id := 1;
    
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
    
                // Test body
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                   vc_MME_UE_ID,
                   vc_eNB_UE_ID,
                   {
                        m_E_RABToBeSetupItemBearerSUReq(1),
                        m_E_RABToBeSetupItemBearerSUReq(1)
                    }
               ));
    
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -, //omit
                    {
                        mw_E_RABItem(
                            1,
                            {
                                radioNetwork := multiple_E_RAB_ID_instances
                            }
                        ),
                        mw_E_RABItem(
                            1,
                            {
                                radioNetwork := multiple_E_RAB_ID_instances
                            }
                        )
                    }
                ));
                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_RAB_05
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_06
             */
            function f_TC_S1AP_eNB_RAB_06() 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_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeSetupItemBearerSUReq (
                        1,
                        m_e_RABlevelQoSParameters
                        (5)
                    )}
                ));
    
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABSetupItemBearerSURes
                    }
                ));
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                         m_E_RABToBeSetupItemBearerSUReq(1)
                     }
                ));
                
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -, //omit
                    {
                        mw_E_RABItem(
                            1,
                            {
                                radioNetwork := multiple_E_RAB_ID_instances
                            }
                        )
                    }
                ));     
                               
                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_RAB_06        
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_07
             */
            function f_TC_S1AP_eNB_RAB_07() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                  const TransportLayerAddress c_transportLayerAddress := '0'B;
                   const GTP_TEID c_gTP_TEID := '00000000'O;
                   const NAS_PDU c_nAS_PDU := '0000'O;
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
            
                // Test body
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (1),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU,
                        {m_correlationID_IE('01020304'O), m_SIPTO_correlationID_IE('01020304'O)} // iE_Extensions
                    )}
                ));
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -, //omit
                    {
                        mw_E_RABItem(
                            1,
                            ?
                        )
                    }
                )); 
             
                               
                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_RAB_07     
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_08
             */
            function f_TC_S1AP_eNB_RAB_08() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                
                // Preamble
                f_S1AP_enb_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeModifiedItemBearerSUReq(
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters(5),
                        c_nAS_PDU
                    )}
                ));
                
                f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABModifyItemBearerModRes(c_E_RAB_ID_A)
                    }
                ));
                
                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_RAB_08          
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_09
             */
            function f_TC_S1AP_eNB_RAB_09 () runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                // Preamble
                f_S1AP_enb_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeModifiedItemBearerSUReq(
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters(255),
                        c_nAS_PDU
                    )}
                ));
                f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    omit,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork := not_supported_QCI_value
                            }
                        )
                    }
                ));
                            
                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_RAB_09 
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_10
             */
            function f_TC_S1AP_eNB_RAB_10 () runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                
                // Preamble
                f_S1AP_enb_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeModifiedItemBearerSUReq(
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters(255),
                        c_nAS_PDU
                    )}
                ));
                
                f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    omit,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork := (s1_intra_system_handover_triggered,
                                             s1_inter_system_handover_triggered,
                                             x2_handover_triggered)
                            }
                        )
                    }
                ));
            
            
                f_recv_Handover_Required(mw_HandoverRequiredIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    ltetoutran,
                    ?,
                    ?,
                    ?
                ));
            
                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_RAB_10
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_11
             */
            function f_TC_S1AP_eNB_RAB_11 () runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                const QCI c_qci_id := 1; 
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                
                // Preamble
                f_S1AP_enb_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeModifiedItemBearerSUReq(
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters(c_qci_id),
                        c_nAS_PDU
                    )}
                ));
            
                f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList(
                   vc_MME_UE_ID,
                   vc_eNB_UE_ID,
                   omit,
                   {
                       mw_E_RABItem(
                           c_E_RAB_ID_A,
                           ?
                       )
                   }
                ));
            
                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_RAB_11
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_12
             */
            function f_TC_S1AP_eNB_RAB_12  () runs on S1APComponent {
                // Local variables
                const QCI c_qci_id := 0; 
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                
                // Preamble
                f_S1AP_enb_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABToBeModifiedItemBearerSUReq(
                            c_E_RAB_ID_A,
                            m_e_RABlevelQoSParameters(c_qci_id),
                            c_nAS_PDU
                        ),m_E_RABToBeModifiedItemBearerSUReq(
                            c_E_RAB_ID_A,
                            m_e_RABlevelQoSParameters(c_qci_id),
                            c_nAS_PDU
                        )
                    }
                ));
                
                f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    omit,
                    {
                         mw_E_RABItem(
                             c_E_RAB_ID_A,
                             {
                                 radioNetwork := multiple_E_RAB_ID_instances
                             }
                         ),
                         mw_E_RABItem(
                             c_E_RAB_ID_A,
                             {
                                 radioNetwork := multiple_E_RAB_ID_instances
                             }
                         )
                     }
                ));
                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_RAB_12
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_13
             */
            function f_TC_S1AP_eNB_RAB_13  () runs on S1APComponent {
                // Local variables
garciay's avatar
garciay committed
                const QCI c_qci_id := 99; // Unknown QCI Id 
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                
                
                // Preamble
                f_S1AP_enb_init();
garciay's avatar
garciay committed
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABToBeModifiedItemBearerSUReq(
                            c_E_RAB_ID_A,
                            m_e_RABlevelQoSParameters(c_qci_id),
                            c_nAS_PDU
                        )
                    }
                ));
                
                f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    omit,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork := unknown_E_RAB_ID
                            }
                         )
                     }
                ));

                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_RAB_13

garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_14
             */
            function f_TC_S1AP_eNB_RAB_14  () runs on S1APComponent {
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_enb_init();
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork :=not_supported_QCI_value
                            }
                        )
                    }
                ));
                
                f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A
                        )
                    }
                ));
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. ***");

            } // End of function f_TC_S1AP_eNB_RAB_14

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_15
             */
            function f_TC_S1AP_eNB_RAB_15  () runs on S1APComponent {
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_enb_init();
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // S1-MME Interface
                
                f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork :=not_supported_QCI_value
                            }
                        )
                    }
                )
                );
                
                f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A
                        )
                    },
                    mw_UserLocationInformation(?,?)
                ));
                

                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_RAB_15
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_16
             */
            function f_TC_S1AP_eNB_RAB_16  () runs on S1APComponent {
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_enb_init();
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork :=not_supported_QCI_value
                            }
                        )
                    }
                ));
                
                f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A
                        )
                    }
                ));
                
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {m_E_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5)
                    )}
                ));
garciay's avatar
garciay committed
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABSetupItemBearerSURes(c_E_RAB_ID_A)
                    }
                ));                
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
garciay's avatar
garciay committed
                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_16
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_17
             */
            function f_TC_S1AP_eNB_RAB_17  () runs on S1APComponent {
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_enb_init();
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // 1. to indicate a LPPa Transport procedure using a UE associated signalling
                if (fx_eNB_erab_Release_indication_procedure(false) == false) {
                   f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    f_recv_E_RABReleaseIndication(mw_E_RABReleaseIndicationIEs(
garciay's avatar
garciay committed
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            mw_E_RABItem(
                                c_E_RAB_ID_A
                            )
                        }
                    ));
                    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_RAB_17
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_18
             */
            function f_TC_S1AP_eNB_RAB_18  () runs on S1APComponent {
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_enb_init();
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
garciay's avatar
garciay committed
                // 1. to indicate a LPPa Transport procedure using a UE associated signalling
                if (fx_eNB_erab_Release_indication_procedure(false) == false) {
                   f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    f_recv_E_RABReleaseIndication(mw_E_RABReleaseIndicationIEs(
garciay's avatar
garciay committed
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            mw_E_RABItem(
                                c_E_RAB_ID_A
                            )
                        },
                        mw_UserLocationInformation(?,?)
                    ));
                    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_RAB_18
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_19
             */
            function f_TC_S1AP_eNB_RAB_19  () runs on S1APComponent {
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork :=not_supported_QCI_value
                            }
                        ),
                        m_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork :=not_supported_QCI_value
                            }
                        )
                    }
                ));

                f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A
                        )
                    }
                ));
                
                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_RAB_19
            
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_20
             */
            function f_TC_S1AP_eNB_RAB_20  () runs on S1APComponent {
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 99;
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        m_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                                radioNetwork :=not_supported_QCI_value
                            }
                        )
                    }
                ));

                f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A
                        )
                    }
                ));
                
                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_20
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_21
             */
            function f_TC_S1AP_eNB_RAB_21  () runs on S1APComponent {
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_enb_init();
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                // 1. to indicate a LPPa Transport procedure using a UE associated signalling
                if (fx_eNB_erab_modification_indication_procedure(false) == false) {
                   f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    f_recv_E_RABModificationIndication(mw_E_RABModificationIndicationIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            mw_E_RABToBeModifiedItemBearerModInd(
                                -
                            )
                        }
                    ));
                    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_RAB_21

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_RABToBeSetupItemCtxtSUReq (
                        -,
                        m_e_RABlevelQoSParameters
                    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
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_02
             */
            function f_TC_S1AP_eNB_CMP_02() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const E_RAB_ID c_E_RAB_ID_B := 1;
                const TransportLayerAddress c_transportLayerAddress := '0'B;
                const GTP_TEID c_gTP_TEID := '00000000'O;
                const NAS_PDU c_nAS_PDU := '0000'O;
                // 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_RABToBeSetupItemCtxtSUReq (
                                c_E_RAB_ID_A,
                                m_e_RABlevelQoSParameters(5),
                                c_transportLayerAddress,
                            m_E_RABToBeSetupItemCtxtSUReq(
                                c_E_RAB_ID_B,
                                m_e_RABlevelQoSParameters(255),
                                c_transportLayerAddress,
                        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(c_E_RAB_ID_A)
                        },
                        {
                            mw_E_RABItem(
                                c_E_RAB_ID_B,
                                {
                                    radioNetwork :=not_supported_QCI_value
                                }
                            )
                        }
                ));
                
                
                // 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_02

            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_03
             */
            function f_TC_S1AP_eNB_CMP_03() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const TransportLayerAddress c_transportLayerAddress := '0'B;
                const GTP_TEID c_gTP_TEID := '00000000'O;
                const NAS_PDU c_nAS_PDU := '0000'O;
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs(
                    m_UEAggregateMaximumBitrate(1,1),
                    {m_E_RABToBeSetupItemCtxtSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (1),
                        c_transportLayerAddress,
                    m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),
                    m_securityKey
                f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs(
                ));
                
                
                // 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_03

            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_04
             */
            function f_TC_S1AP_eNB_CMP_04() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const TransportLayerAddress c_transportLayerAddress := '0'B;
                const GTP_TEID c_gTP_TEID := '00000000'O;
                const NAS_PDU c_nAS_PDU := '0000'O;
                // 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_RABToBeSetupItemCtxtSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                    m_E_RABToBeSetupItemCtxtSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                    )},
                    m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),
                    m_securityKey
                ));
                f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                            radioNetwork := multiple_E_RAB_ID_instances
                            }                    
                        ),
                        mw_E_RABItem(
                            c_E_RAB_ID_A,
                            {
                            radioNetwork := multiple_E_RAB_ID_instances
                            }                            
                        )
                    }
                ));
                
                
                // 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_04
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_05
             */
            function f_TC_S1AP_eNB_CMP_05() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const TransportLayerAddress c_transportLayerAddress := '0'B;
                const GTP_TEID c_gTP_TEID := '00000000'O;
                const NAS_PDU c_nAS_PDU := '0000'O;
                const EncryptionAlgorithms c_notSupportedEncryptionAlgorithms := '0000000000000000'B;
                // 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_RABToBeSetupItemCtxtSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                    )},
                    m_UESecurityCapabilities(c_notSupportedEncryptionAlgorithms,'0101010101010101'B),
                    m_securityKey
                ));
                f_recv_InitialContext_SetupResponse(mw_InitialContextSetupFailureIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_cause_ran(encryption_and_or_integrity_protection_algorithms_not_supported)
                ));
                // 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_05
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_06
             */
            function f_TC_S1AP_eNB_CMP_06() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const TransportLayerAddress c_transportLayerAddress := '0'B;
                const GTP_TEID c_gTP_TEID := '00000000'O;
                const NAS_PDU c_nAS_PDU := '0000'O;
                const IntegrityProtectionAlgorithms c_notSupportedIntegrityProtectionAlgorithms := '0000000000000000'B;
                // 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_RABToBeSetupItemCtxtSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                    )},
                    m_UESecurityCapabilities('0101010101010101'B, c_notSupportedIntegrityProtectionAlgorithms),
                    m_securityKey
                ));
                f_recv_InitialContext_SetupResponse(mw_InitialContextSetupFailureIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_cause_ran(encryption_and_or_integrity_protection_algorithms_not_supported)
                ));
                // 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_06
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_07
             */
            function f_TC_S1AP_eNB_CMP_07() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const TransportLayerAddress c_transportLayerAddress := '0'B;
                const GTP_TEID c_gTP_TEID := '00000000'O;
                const NAS_PDU c_nAS_PDU := '0000'O;
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. NOTE: the cell accessed by the UE need to be a hybrid cell!***");
                
                // Test body
                f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    m_UEAggregateMaximumBitrate(1,1),
                    {m_E_RABToBeSetupItemCtxtSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                    )},
                    m_UESecurityCapabilities('0101010101010101'B, '0101010101010101'B),
                    m_securityKey
                ));
                f_recv_InitialContext_SetupResponse(mw_InitialContextSetupFailureIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_cause_nas(csg_subscription_expiry)
                ));
                
                
                // 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_07
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_08
             */
            function f_TC_S1AP_eNB_CMP_08() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const TransportLayerAddress c_transportLayerAddress := '0'B;
                const GTP_TEID c_gTP_TEID := '00000000'O;
                const NAS_PDU c_nAS_PDU := '0000'O;
                // 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 (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (1),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU,
                        {m_correlationID_IE('01020304'O), m_SIPTO_correlationID_IE('01020304'O)} // iE_Extensions
                    m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),
                    m_securityKey
                f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,
                    {
                        mw_E_RABItem(
                            c_E_RAB_ID_A,
                            ?
                        )
                    }
                ));
                
                
                // 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_08

            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_09
             */
            function f_TC_S1AP_eNB_CMP_09() runs on S1APComponent { 
                // Local variables
                // Preamble
                f_S1AP_enb_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_recv_UE_Context_Release_Request(mw_UeContextReleaseRequestIEs
                                                  (vc_MME_UE_ID, vc_eNB_UE_ID,
                                                   ?));                
                
                // 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_09
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_10
             */
            function f_TC_S1AP_eNB_CMP_10() 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")}
                }
                
                // Preamble
                f_S1AP_enb_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_UE_Context_Release_Command(m_UeContextReleaseCommandIEs_MME(
                    vc_MME_UE_ID,
                    v_cause
                    ));
                f_recv_UE_Context_Release_Complete(mw_UeContextReleaseCompleteIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                ));
                // 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_10
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_11
             */
            function f_TC_S1AP_eNB_CMP_11() 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")}
                }
                
                // Preamble
                f_S1AP_enb_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_UE_Context_Release_Command(m_UeContextReleaseCommandIEs_ENB(
                    vc_eNB_UE_ID,
                    v_cause
                    ));
                f_recv_UE_Context_Release_Complete(mw_UeContextReleaseCompleteIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                ));
                // 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_11
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_12
             */
            function f_TC_S1AP_eNB_CMP_12() 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_RABToBeSetupItemCtxtSUReq (
                        -,
                        m_e_RABlevelQoSParameters
                        (5),
                        -
                    )},
                    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
                    }
                ));

                tc_wait.start(PX_TS1RELOCOverall);
                tc_wait.timeout;
                f_recv_UE_Context_Release_Request(mw_UeContextReleaseRequestIEs
                                                  (vc_MME_UE_ID, vc_eNB_UE_ID,
                                                   ?));    
                                                                   
                // 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_12

            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_13
             */
            function f_TC_S1AP_eNB_CMP_13() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                
                f_rABSetupRequest();                
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_UE_Context_Modification_Request(m_ContextModificationReqIEsUEAgg(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    m_UEAggregateMaximumBitrate(1,1)
                ));

                f_recv_UE_Context_Modification_Response(mw_UeContextModificationResponseIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                )); 
                // 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_13

            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_14
             */
            function f_TC_S1AP_eNB_CMP_14() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                
                f_rABSetupRequest();                
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_UE_Context_Modification_Request(m_ContextModificationReqIEsSecKey(
                    cs_fallback_required,
                    m_securityKey
                f_recv_UE_Context_Modification_Failure(mw_UeContextModificationFailureIEs(
                    ? // cause
                // 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_14

            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_15
             */
            function f_TC_S1AP_eNB_CMP_15() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                
                f_rABSetupRequest();                
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_UE_Context_Modification_Request(m_ContextModificationReqIEsSecCap(
                    cs_fallback_required,
                    m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B)
                f_recv_UE_Context_Modification_Failure(mw_UeContextModificationFailureIEs(
                    ? // cause
                // 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_15

            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_16
             */
            function f_TC_S1AP_eNB_CMP_16() 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_UE_Radio_Capability_Match_Request(m_UeRadioCapabilityMatchReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    '0001'O // UERadioCapability
                ));
                f_recv_UeRadioCapabilityMatchResponse(mw_UeRadioCapabilityMatchResponseIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    ? // Voice_Support_Match_Indicator
                )); 
                                                                   
                // 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_16
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_17
             */
            function f_TC_S1AP_eNB_CMP_17() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                action("trigger a UE context modification indication");

                f_recv_Ue_Context_Modification_Indication(mw_UeContextModificationIndicationIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                )); 
                // 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_17
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_18
             */
            function f_TC_S1AP_eNB_CMP_18() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                // Test body
                action("trigger a UE context suspend request");
                f_recv_Ue_Context_Suspend_Request(mw_UeContextSuspendRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                )); 
                // 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_18
            /**
             * @desc Testcase function for TC_S1AP_eNB_CMP_19
             */
            function f_TC_S1AP_eNB_CMP_19() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                // Test body
                action("trigger a UE context resume request");
                f_recv_Ue_Context_Resume_Request(mw_UeContextResumeRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                )); 
                // 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_19
        } // 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 {
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_01
             */
            function f_TC_S1AP_eNB_HAS_01() runs on S1APComponent { 
                // Local variables
                const Target_ToSource_TransparentContainer c_target_ToSource_TransparentContainer := '12121212'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                     
                    f_send_HandoverCommand(
                        m_HandoverCommandIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            c_target_ToSource_TransparentContainer//TargetToSourceTransparentContainer
                    ));
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_01
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_02
             */
            function f_TC_S1AP_eNB_HAS_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            ltetoutran,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//TODO Check if SourceRNCToTargetRNCTransparentContainer with UE History Information is present
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_02
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_03
             */
            function f_TC_S1AP_eNB_HAS_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            ltetogeran,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//TODO Check if SourceBSSToTargetBSSTransparentContainer
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_03
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_04
             */
            function f_TC_S1AP_eNB_HAS_04() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                    
                    f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {m_E_RABToBeModifiedItemBearerSUReq(
                            c_E_RAB_ID_A,
                            m_e_RABlevelQoSParameters(5),
                            c_nAS_PDU
                        )}
                    ));
                    
                    
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_04
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_05
             */
            function f_TC_S1AP_eNB_HAS_05() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                    
                    log("No response is send to IUT before timer TS1RELOCprep expires.");
                    
                    //wait for timer TS1RELOCprep
                    f_sleepIgnoreDef(1.0);
                        mw_HandoverCancelIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -//Cause
                    ));
                    f_send_HandoverCancelAcknowledge(
                        m_HandoverCancelAckIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_05
2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_06
             */
            function f_TC_S1AP_eNB_HAS_06() runs on S1APComponent { 
                // Local variables
                const Source_ToTarget_TransparentContainer c_source_ToTarget_TransparentContainer := '12121212'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs(
                                   vc_MME_UE_ID,
                                   intralte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   c_source_ToTarget_TransparentContainer,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),//UeSecurityCapabilities
                                   m_securityContext//SecurityContext
                               ));

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

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

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

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

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

                    f_send_PathSwitchRequestAcknowledge(m_PathSwitchRequestAckIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        m_securityContext//Security Context
                    ));
                
                }
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_11
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_12
             */
            function f_TC_S1AP_eNB_HAS_12() runs on S1APComponent {
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                    
                    log("No response is send to IUT before timer TS1RELOCprep expires.");
                    
                    //wait for timer TS1RELOCprep
                    f_sleepIgnoreDef(1.0);
                    
                    f_recv_HandoverCancel(
                        mw_HandoverCancelIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -//Cause
                    ));
                    
                    f_send_HandoverCancelAcknowledge(
                        m_HandoverCancelAckIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_12
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_13
             */
            function f_TC_S1AP_eNB_HAS_13() runs on S1APComponent { 
                // Local variables
                const Target_ToSource_TransparentContainer c_target_ToSource_TransparentContainer := '12121212'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                     
                    f_send_HandoverCommand(
                        m_HandoverCommandIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            c_target_ToSource_TransparentContainer//TargetToSourceTransparentContainer
                    ));

                    action("Await eNB_STATUS_TRANSFER MESSAGE.");
                    
                    f_recv_EnbStatusTransfer(
                        mw_EnbStatusTransferIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            mw_eNBStatusTransferTransparentContainer//eNB Status Transfer Transparent Container
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_13
        } // End of group Handover_signalling_group
        
        /**
         * @desc Paging group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.5  Paging group
         */
        group Paging_group {
        } // End of group Paging_group
        
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.6   NAS transport group
         */
        group NAS_transport_group {
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_01
             */
            function f_TC_S1AP_eNB_NAS_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate the initiation of a NAS Transport procedure
                if (fx_eNB_Initiate_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an INITIAL UE MESSAGE
                    f_recv_Initial_UE_Message(
                        mw_initial_uE_MessageIEs(
                            vc_eNB_UE_ID,
                            -,
                            mw_TAI(
                                PX_PLMN_IDENTITY, 
                                PX_TAC
                            ),
                            mw_eUTRAN_CGI(
                                PX_PLMN_IDENTITY, 
                                PX_CELL_ID
                            ),
garciay's avatar
garciay committed
                            mw_cause_ran
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_01
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_02
             */
            function f_TC_S1AP_eNB_NAS_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And a NAS procedure is initiated
                fx_eNB_Initiate_NAS_transport_procedure();
                f_recv_Initial_UE_Message(
                    mw_initial_uE_MessageIEs(
                        vc_eNB_UE_ID,
                        -,
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
garciay's avatar
garciay committed
                        mw_cause_ran
                ));
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an ongoing NAS Transport procedure
                if (fx_eNB_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an UPLINK_NAS_TRANSPORT
                    f_recv_Uplink_NAS_Transport(
                        mw_uplink_nAS_TransportIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,
                            mw_eUTRAN_CGI(
                                PX_PLMN_IDENTITY, 
                                PX_CELL_ID
                            ),
                            mw_TAI(
                                PX_PLMN_IDENTITY, 
                                PX_TAC
                    )));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_02
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_03
             */
            function f_TC_S1AP_eNB_NAS_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And UE is not exchanged
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a UE has not received a INITIAL_UE_MESSAGE
                if (fx_eNB_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a NAS_NON_DELIVERY_INDICATION
                    f_recv_NAS_Non_Delivery_Indication(
                        mw_nAS_Non_Delivery_IndicationIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,
                            mw_cause_ran(
garciay's avatar
garciay committed
                                unspecified // Check the value to be used
                            )
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_03
            
        } // End of group NAS_transport_group
        
        /**
         * @desc Management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.7 Management group
         */
        group Management_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
garciay's avatar
garciay committed
                            unspecified // Check the value to be used
                        ),
                        m_resetType_all
                ));
                
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                                    vc_eNB_UE_ID
                            ))*/
                        }
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_01
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_02
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Reset procedure initiated from the E-UTRAN
garciay's avatar
garciay committed
                if (fx_eNB_Reset_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a RESET
                    f_recv_Reset(
                        mw_resetIEs(
                            mw_cause_nas(
garciay's avatar
garciay committed
                                unspecified // Check the value to be used
                            ),
                            m_resetType_all
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_02
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_03
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
garciay's avatar
garciay committed
                            unspecified // Check the value to be used
                        ),
                        m_resetType_partOfS1_Interface(
                            {
                                m_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                    m_uE_associatedLogicalS1_ConnectionItem(
                                        0,
                                        0
                                ))
                            }
                        )
                ));
                
                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
                    ));
                    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
garciay's avatar
garciay committed
                ));
                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
garciay's avatar
garciay committed
                ));
                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,
garciay's avatar
garciay committed
                        mw_eUTRAN_CGI
                ));
                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
                        ?
garciay's avatar
garciay committed
                ));
                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
                    f_recv_eNB_Direct_Information_Transfer(
                        mw_eNBDirectInformationTransfer_EDT(
                            mw_Inter_SystemInformationTransferType(
                                mw_RIMTransfer(
                                    ? // FIXME 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. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_EIT_01
            
        } // End of group ENB_direct_information_transfer_group
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.14  MME direct information transport group
         */
        group MME_direct_information_transfer_group {
garciay's avatar
garciay committed
            // Void
        } // End of group MME_direct_information_transfer_group
garciay's avatar
garciay committed
         * @desc eNB configuration transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.15  eNB configuration transfer group
         */
        group ENB_configuration_transfer_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_ECT_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_ECT_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 Configuration Transfer procedure
garciay's avatar
garciay committed
                if (fx_eNB_Configuration_Transfer_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a ENB_CONFIGURATION_TRANSFER
                    f_recv_eNB_Direct_Information_Transfer(
                        mw_sON_Configuration_Transfer_ECT(
                            mw_sON_Configuration_Transfer(
garciay's avatar
garciay committed
                                mw_TargeteNB_ID(mw_Global_eNB_ID, mw_TAI),
                                mw_SourceeNB_ID(mw_Global_eNB_ID, mw_TAI),
                                ? // FIXME 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. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_ECT_01
            
        } // End of group ENB_configuration_transfer_group 
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.16  MME configuration transport group
         */
        group MME_configuration_transfer_group {
garciay's avatar
garciay committed
            // Void
        } // End of group MME_configuration_transfer_group
        /**
         * @desc LPPa transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.17  LPPa transport group
         */
        group LPPa_transport_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LPP_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LPP_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 LPPa Transport procedure using a UE associated signalling
                if (fx_eNB_LPPa_Transport_procedure_ind(true) == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a UPLINK_UE_ASSOCIATED_LPPA_TRANSPORT
                    f_recv_Uplink_UE_Associated_Lppa_Transport(
                        mw_UplinkUEAssociatedLppaTransportIEs_LPPa_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_LPP_01
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LPP_02
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LPP_02() 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 LPPa Transport procedure using a UE associated signalling
                if (fx_eNB_LPPa_Transport_procedure_ind(false) == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a UPLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT
                    f_recv_Uplink_Non_UE_Associated_Lppa_Transport(
                        mw_UplinkNonUEAssociatedLppaTransportIEs_LPPa_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_LPP_02
         * @desc Unknown, Unforseen and Erroneous Protocol Data
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.18  Unknown, Unforseen and Erroneous Protocol Data
         */
        group Unknown_unforseen_errorneous_group {
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_01
             */
            function f_TC_S1AP_ENB_ERR_01() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_enb_init();
                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_InitialContext_SetupRequest(
                    m_InitialContextSetupReqIEs(
                        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
                    ),
                    PX_VA_CRITICALITY
                );
                // 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
                            )
                        )
                ));
                
                // 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_01
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_02
             */
            function f_TC_S1AP_ENB_ERR_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. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST
                f_send_InitialContext_SetupRequest(
                    m_InitialContextSetupReqIEs_unknown_ID(
                        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_02
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_03
             */
            function f_TC_S1AP_ENB_ERR_03() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                // 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(
                    m_InitialContextSetupReqIEs_unknown_ID(
                        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 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()); 
garciay's avatar
garciay committed
                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_03
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_04
             */
            function f_TC_S1AP_ENB_ERR_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. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST
                f_send_InitialContext_SetupRequest(
                    m_InitialContextSetupReqIEs_noENB(
                        vc_MME_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_04
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_ENB_ERR_05
             */
            function f_TC_S1AP_ENB_ERR_05() runs on S1APComponent { 
                // Local variables
garciay's avatar
garciay committed
                // Preamble
                f_S1AP_enb_init();
                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(
garciay's avatar
garciay committed
                    m_E_RABSetupReqIEs_no_eNB(
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,
garciay's avatar
garciay committed
                    {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

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_03
             */
            function f_TC_S1AP_MME_RAB_03() 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 Release request");
              
                f_recv_E_RABReleaseCommand(mw_E_RABReleaseCmdIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {mw_E_RABItem}
                ));
                
                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_03

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_04
             */
            function f_TC_S1AP_MME_RAB_04() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_mme_init();
                f_rABSetupRequest();
                                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                         
                // Test body
                f_send_E_RABModifiedInd(
                   m_E_RABModifiedIndIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
                                -,
                                -
                            )
                        }
                )); 
                              
                f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {mw_E_RABItem}
                ));
                
                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_04

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_05
             */
            function f_TC_S1AP_MME_RAB_05() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_mme_init();
                f_rABSetupRequest();
                                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                         
                // Test body
                f_send_E_RABModifiedInd(
                   m_E_RABModifiedIndIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
garciay's avatar
garciay committed
                                PX_INVALID_TPORT_LAYER_ADDR,
                                -
                            )
                        }
                )); 
                              
                f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {mw_E_RABItem(-,mw_cause_transport((transport_resource_unavailable,unspecified)))}
                ));
                
                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_05

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_06
             */
            function f_TC_S1AP_MME_RAB_06() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_mme_init();
                f_rABSetupRequest();
                                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                         
                // Test body
                f_send_E_RABModifiedInd(
                   m_E_RABModifiedIndIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
                                '0'B, // TODO PIXIT for unacceptatable value
                                -
                            )
                        }
                )); 
                              
                f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {mw_E_RABItem(-,?)}
                ));
                
                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_06

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_07
             */
            function f_TC_S1AP_MME_RAB_07() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_mme_init();
                f_rABSetupRequest();
                                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                         
                // Test body
                f_send_E_RABModifiedInd(
                  m_E_RABModifiedIndIEs_CSG(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
                                -,
                                -
                            )
                        },
                        m_CSGMembershipInfo
                f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEsCSG(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {mw_E_RABItem},
                    mw_CSGMembershipInfo
                ));
                
                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_07

            /**
             * @desc Testcase function for TC_S1AP_eNB_RAB_10
             */
            function f_TC_S1AP_MME_RAB_10() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // Preamble
                f_S1AP_mme_init();
                f_rABSetupRequest();
                                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                         
                // Test body
                f_send_E_RABModifiedInd(
                  m_E_RABModifiedIndIEs_CSG(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
                                -,
                                -
                            )
                        },
                        m_CSGMembershipInfo(-,-,omit)
                )); 
                              
                f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {mw_E_RABItem(-,?)}
                ));
                
                f_recv_InitialContext_SetupRequest((mw_UeContextReleaseCommandIEs_MME, mw_UeContextReleaseCommandIEs_ENB));                                
                
                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_10
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
                    
garciay's avatar
garciay committed
                f_recv_Ue_Context_Modification_Confirm(mw_UeContextModificationConfirmIEsCSG);                
rennoch's avatar
rennoch committed
                
garciay's avatar
garciay committed
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
rennoch's avatar
rennoch committed
                
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
rennoch's avatar
rennoch committed
                
garciay's avatar
garciay committed
            } // 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

            /**
             * @desc Testcase function for TC_S1AP_MME_HAS_02
             */
            function f_TC_S1AP_MME_HAS_02() runs on S1APComponent { 
                // Local variables
                const SourceRNC_ToTargetRNC_TransparentContainer c_sourceRNC_ToTargetRNC_TransparentContainer := '12121212'O;
                const TargetRNC_ToSourceRNC_TransparentContainer c_targetRNC_ToSourceRNC_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,
                        ltetoutran,
                        m_cause_ran(unspecified),
                        m_TargetRNC_ID(m_LAI('000001'O, //plmn id
                                             '0001'O),  //lac
                                       m_rNC_Id),
                        c_sourceRNC_ToTargetRNC_TransparentContainer
                ));
                 
                f_recv_HandoverCommand(
                    mw_HandoverCommandIEs_NASSecurity(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        ltetoutran,//handover_Type
                        c_targetRNC_ToSourceRNC_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_02

            /**
             * @desc Testcase function for TC_S1AP_MME_HAS_03
             */
            function f_TC_S1AP_MME_HAS_03() runs on S1APComponent { 
                // Local variables
                const SourceBSS_ToTargetBSS_TransparentContainer c_sourceBSS_ToTargetBSS_TransparentContainer := '12121212'O;
                const TargetBSS_ToSourceBSS_TransparentContainer c_targetBSS_ToSourceBSS_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,
                        ltetogeran,
                        m_cause_ran(unspecified),
                        m_Target_CGI('000001'O, //plmn id
                                     '0001'O,//lac
                                     '0001'O //ci
                                    ),
                        c_sourceBSS_ToTargetBSS_TransparentContainer
                ));
                 
                f_recv_HandoverCommand(
                    mw_HandoverCommandIEs_NASSecurity(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        ltetogeran,//handover_Type
                        c_targetBSS_ToSourceBSS_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_03
            
            /**
             * @desc Testcase function for TC_S1AP_MME_HAS_04_ENB1
             */
            function f_TC_S1AP_MME_HAS_04_ENB1() 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_CSGID_CellAccessMode(
                        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,
                        '000000000000000000000000001'B,
                        hybrid
                ));
                 
                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_04_ENB1
            /**
             * @desc Testcase function for TC_S1AP_MME_HAS_04_ENB2
             */
            function f_TC_S1AP_MME_HAS_04_ENB2() 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_recv_HandoverRequest(
                    mw_HandoverRequestIEs_CSGID_CellAccessMode(
                        -,
                        -,
                        -,
                        -,
                        {?},//E_RabsToBeSetupItem
                        -,
                        -,
                        -,
                        -,
                        -
                ));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                
                //send HandoverRequestAck
                
                // 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_04_ENB2
                        
        } // 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. ***");
                
                // Test body
                f_send_S1_Setup_Request(
                    m_s1_Setup_RequestIEs(
                        m_Global_eNB_ID(
                            PX_PLMN_IDENTITY, 
                            PX_eNB_ID
                        ),
                        {
                            m_supportedTAs_Item(
                                PX_TAC,
                                {
                                    PX_PLMN_IDENTITY
                                } 
                            )
                        },
                        PX_PAGING_DRX
                ));
                f_recv_S1_Setup_Response(
                    mw_s1_Setup_ResponseIEs(
                        {
                            mw_servedGUMMEIsItem(
                                { PX_PLMN_IDENTITY },
                                { PX_MME_GROUP_ID },
                                { PX_MME_CODE }
                            )
                        }, 
                        PX_RELATIVE_MME_CAPAVCITY
                ));
                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_05
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_06
             */
            function f_TC_S1AP_MME_MNP_06() 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_S1_Setup_Request(
                    m_s1_Setup_RequestIEs(
                        m_Global_eNB_ID(
                            PX_PLMN_IDENTITY, 
                            PX_eNB_ID
                        ),
                        {
                            m_supportedTAs_Item(
                                PX_TAC,
                                {
                                    PX_PLMN_IDENTITY,
                                    PX_PLMN_IDENTITY_UNKNOWN
                                } 
                            )
                        },
                        PX_PAGING_DRX
                ));
                f_recv_S1_Setup_Failure(
                    mw_s1_Setup_FailureIEs(
                        mw_cause_misc(
                            unknown_PLMN
                )));
                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_06
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_07
             */
            function f_TC_S1AP_MME_MNP_07() 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_eNB_Configuration_Update(
                    m_eNB_Configuration_UpdateIEs(
                        m_Global_eNB_ID(
                            PX_PLMN_IDENTITY, 
                            PX_eNB_ID
                        ),
                        {
                            m_supportedTAs_Item(
                                PX_TAC,
                                {
                                    PX_PLMN_IDENTITY
                                } 
                            )
                        }
                ));
                f_recv_eNB_Configuration_Update_Acknowledge(
                    mw_eNB_Configuration_Update_AcknowledgeIEs
                );
                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_07
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_08
             */
            function f_TC_S1AP_MME_MNP_08() 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_eNB_Configuration_Update(
                    m_eNB_Configuration_UpdateIEs(
                        m_Global_eNB_ID(
                            PX_PLMN_IDENTITY_UNKNOWN, 
                            PX_eNB_ID_UNKNOWN
                        ),
                        {
                            m_supportedTAs_Item(
                                PX_TAC,
                                {
                                    PX_PLMN_IDENTITY_UNKNOWN
                                } 
                            )
                        }
                ));
                f_recv_eNB_Configuration_Update_Failure(
                    mw_eNB_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
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_09
             */
            function f_TC_S1AP_MME_MNP_09() 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 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
                                    } 
                                )
                            }
                    ));
                    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_09
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_10
             */
            function f_TC_S1AP_MME_MNP_10() 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 Overload Start procedure
                if (fx_eNB_Overload_Start_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an OVERLOAD_START
                    f_recv_eNB_Overload_Start(
                        mw_eNB_Overload_StartIEs(
                            mw_OverloadResponse(
                                reject_non_emergency_mo_dt 
                    )));
                    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_10
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_11
             */
            function f_TC_S1AP_MME_MNP_11() 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 Overload Stop procedure
                if (fx_eNB_Overload_Stop_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an OVERLOAD_STOP
                    f_recv_eNB_Overload_Stop(
                        mw_eNB_Overload_StopIEs(
                            { 
                                mw_gUMMEI(
                                    -,
                                    -,
                                    -
                                )
                            } 
                    ));
                    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_11
            
        } // 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 {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_STP_01
             */
            function f_TC_S1AP_MME_STP_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 CDMA2000 signalling event
                if (fx_MME_Downlink_S1_CDMA2000_Tunnelling_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a DOWNLINK_S1_CDMA2000_TUNNELLING
                    f_recv_Downlink_S1_CDMA2000_Tunnelling(
                        mw_downlink_S1_CDMA2000_TunnellingIEs(
                            vc_MME_UE_ID,
garciay's avatar
garciay committed
                            vc_eNB_UE_ID,
garciay's avatar
garciay committed
                                mw_eRABDataForwardingItem
                            },
                            PX_CDMA200_PDU,
                            PX_CDMA200_RAT_TYPE
                    ));
                    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_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.2.9   UE capability info indication group
         */
        group UE_capability_info_indication_group {
            
        } // End of group UE_capability_info_indication_group

        
        /**
         * @desc Trace Procedures group
garciay's avatar
garciay committed
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.10  Trace group
         */
        group Trace_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_TRP_01
             */
            function f_TC_S1AP_MME_TRP_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 Trace Start procedure
                if (fx_MME_Trace_Start_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a TRACE_START
                    f_recv_Trace_Start(
                        mw_trace_StartIEs(
                            mw_traceActivation(
                                PX_EUTRAN_TRACE_ID,
                                PX_INTERFACES_TO_TRACE,
                                PX_TRACE_DEPTH,
                                PX_TRANSPORT_LAYER_ADDRESS
                    )));
                    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_TRP_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_TRP_02
             */
            function f_TC_S1AP_MME_TRP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                fx_MME_Trace_Start_procedure();
garciay's avatar
garciay committed
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Deactivate Trace procedure
                if (fx_MME_Deactivate_Trace_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a DEACTIVATE_TRACE
garciay's avatar
garciay committed
                    f_recv_Deactivate_Trace(
                        mw_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_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_TRP_02
            
        } // End of group Trace_group
        
        /**
         * @desc Location Reporting Procedures group
garciay's avatar
garciay committed
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.11  Location reporting group
         */
        group Location_reporting_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_LRP_01
             */
            function f_TC_S1AP_MME_LRP_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 Location Reporting Control procedure
                if (fx_MME_Location_Reporting_Control_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a LOCATION_REPORTING_CONTROL
                    f_recv_Location_Reporting_Control(
                        mw_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_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_LRP_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_LRP_02
             */
            function f_TC_S1AP_MME_LRP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_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
                // 1. to indicate a Location Reporting Control procedure
                if (fx_MME_Location_Reporting_Control_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a LOCATION_REPORTING_CONTROL
                    f_recv_Location_Reporting_Control(
                        mw_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_send_Location_Report_Failure_Indication(
                        m_location_Report_Failure_IndicationIEs(
                            vc_MME_UE_ID,
garciay's avatar
garciay committed
                            vc_eNB_UE_ID,
garciay's avatar
garciay committed
                            m_cause_nas(
                                unspecified
                    )));
                    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_LRP_02
            
        } // End of group Location_reporting_group
        
        /**
         * @desc MME direct information transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.12  Warning message transmission group
         */
        group MME_Warning_message_transmission_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_WTP_01
             */
            function f_TC_S1AP_MME_WTP_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 Warning Message Transmission procedure
                if (fx_MME_Write_Replace_Warning_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a WRITE-REPLACE_WARNING_REQUEST
                    f_recv_Write_Replace_Warning_Request(
                        mw_write_Replace_Warning_RequestIEs(
                            PX_MESSAGE_IDENTIFIER,
                            PX_SERIAL_NUMBER,
                            PX_REPETITION_PERIOD, 
                            PX_NUMBER_OF_BROADCASTS_REQUESTED
                    ));
                    f_send_Write_Replace_Warning_Response(
                        m_write_Replace_Warning_ResponseIEs(
                            PX_MESSAGE_IDENTIFIER,
                            PX_SERIAL_NUMBER
                    ));
                    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_WTP_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_WTP_02
             */
            function f_TC_S1AP_MME_WTP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
garciay's avatar
garciay committed
                // Preamble action: A warning message procedure is exchanged
garciay's avatar
garciay committed
                f_writeReplaceWarningExchanges(); 
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Warning Message Transmission procedure
                if (fx_MME_Kill_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a KILLG_REQUEST
                    f_recv_Kill_Request(
                        mw_kill_RequestIEs(
                            PX_MESSAGE_IDENTIFIER,
                            PX_SERIAL_NUMBER
                    ));
                    f_send_Kill_Response(
                        m_kill_ResponseIEs(
                            PX_MESSAGE_IDENTIFIER,
                            PX_SERIAL_NUMBER
                    ));
                    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_WTP_02
            
        } // End of group MME_Warning_message_transmission_group 


        /**
         * @desc eNB direct information transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.13  eNB direct information transfer group
         */
        group ENB_direct_information_transfer_group {
            
        } // End of group ENB_direct_information_transfer_group 


garciay's avatar
garciay committed
        
        /**
         * @desc MME direct information transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.14  MME direct information transfer group
         */
        group MME_direct_information_transfer_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MIT_01
             */
            function f_TC_S1AP_MME_MIT_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 an MME Direct Information Transfer procedure
                if (fx_MME_Direct_Information_Transfer_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a MME_DIRECT_INFORMATION_TRANSFER
                    f_recv_Mme_Direct_Information_Transfer(
                        mw_mMEDirectInformationTransfer(
                            mw_Inter_SystemInformationTransferType(
                                mw_RIMTransfer(
                                    ? // FIXME To be refined
                    ))));
                    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_MIT_01
            
        } // End of group MME_direct_information_transfer_group 

        
        /**
         * @desc eNB configuration transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.15  eNB configuration transfer group
         */
        group ENB_configuration_transfer_group {
            
        } // End of group ENB_configuration_transfer_group 


garciay's avatar
garciay committed
        
        /**
         * @desc MME configuration transfer group
garciay's avatar
garciay committed
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.16 MME configuration transfer group
         */
        group MME_configuration_transfer_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MCT_01
             */
            function f_TC_S1AP_MME_MCT_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 an MME Configuration Transfer procedure
                if (fx_MME_Configuration_Transfer_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a MME_CONFIGURATION_TRANSFER
                    f_recv_Mme_Configuration_Transfer(
                        mw_sON_Configuration_Transfer_MCT(
                            mw_sON_Configuration_Transfer(
garciay's avatar
garciay committed
                                mw_TargeteNB_ID(mw_Global_eNB_ID, mw_TAI),
                                mw_SourceeNB_ID(mw_Global_eNB_ID, mw_TAI),
                                ? // FIXME To be refined
                    )));
                    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_MCT_01
            
        } // End of group MME_configuration_transfer_group 
        
        /**
         * @desc LPPa transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.17  LPPa transport group
         */
        group LPPa_transport_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_LPP_01
             */
            function f_TC_S1AP_MME_LPP_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 LPPa Transport procedure using a UE associated signalling
                if (fx_MME_LPPa_Transport_procedure_ind(true) == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a DOWNLINK_UE_ASSOCIATED_LPPA_TRANSPORT
                    f_recv_Downlink_UE_Associated_Lppa_Transport(
                        mw_DownlinkUEAssociatedLppaTransportIEs_LPPa_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. ***");
                
            } // End of function f_TC_S1AP_MME_LPP_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_LPP_02
             */
            function f_TC_S1AP_MME_LPP_02() 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 LPPa Transport procedure using a UE associated signalling
                if (fx_MME_LPPa_Transport_procedure_ind(false) == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a DOWNLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT
                    f_recv_Downlink_Non_UE_Associated_Lppa_Transport(
                        mw_DownlinkNonUEAssociatedLppaTransportIEs_LPPa_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. ***");
                
            } // End of function f_TC_S1AP_MME_LPP_02
            
        } // End of group LPPa_transport_group 
         * @desc Unknown, Unforseen and Erroneous Protocol Data
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.18  Unknown, Unforseen and Erroneous Protocol Data
         */
        group Unknown_unforseen_errorneous_group {
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_MME_ERR_01
             */
            function f_TC_S1AP_MME_ERR_01() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // 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. on receipt of a UE_CONTEXT_RESUME_REQUEST
                f_send_Ue_Context_Resume_Request(
                    m_UeContextResumeRequestIEs_RABFailedToResumeItem(
                        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
                    ),
                    PX_VA_CRITICALITY
                ); 
                // 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
                            )
                        )
                ));
                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_ERR_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_ERR_02
             */
            function f_TC_S1AP_MME_ERR_02() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // 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. on receipt of a UE_CONTEXT_RESUME_REQUEST
                f_send_Ue_Context_Resume_Request(
                    m_UeContextResumeRequestIEs_Unknown_ID(
                        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
                // 2. sends an UE_CONTEXT_RESUME_FAILURE
                f_recv_Ue_Context_Resume_Failure(
                    mw_UeContextResumeFailureIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        mw_cause_protocol(unspecified),
                        mw_criticalityDiagnostics(
garciay's avatar
garciay committed
                            ?,
                            ?,
                            ?,
garciay's avatar
garciay committed
                            { 
                                mw_criticalityDiagnostics_IE_Item(
                                    reject, 
                                    -, 
                                    missing
                                ) 
                            }
                        )
                ));
                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_ERR_02
            
            /**
             * @desc Testcase function for TC_S1AP_MME_ERR_03
             */
            function f_TC_S1AP_MME_ERR_03() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // 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. on receipt of a E-RAB_MODIFICATION_INDICATION
garciay's avatar
garciay committed
                f_send_E_RABModifiedInd(
                   m_E_RABModifiedIndIEs_Unknown_ID(
garciay's avatar
garciay committed
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
                                -,
                                -
                            )
                        }
                )); 
garciay's avatar
garciay committed
                // 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
                                    ) 
                                }
                            )
                        )
                ));
                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_ERR_03
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_MME_ERR_04
             */
            function f_TC_S1AP_MME_ERR_04() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // 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. on receipt of a UE_CONTEXT_RESUME_REQUEST
                f_send_Ue_Context_Resume_Request(
                    m_UeContextResumeRequestIEs_no_eNB(
                        vc_MME_UE_ID,
                        { 
                            m_E_RABFailedToResumeItemResumeReq(
                                c_E_RAB_ID_A,
                                m_cause_ran(user_inactivity)
                            )
                        }
                )); 
                // 2. sends an UE_CONTEXT_RESUME_FAILURE
                f_recv_Ue_Context_Resume_Failure(
                    mw_UeContextResumeFailureIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        mw_cause_protocol(unspecified),
                        mw_criticalityDiagnostics(
                            ?,
                            ?,
                            ?,
                            { 
                                mw_criticalityDiagnostics_IE_Item(
                                    reject, 
                                    -, 
                                    missing
                                ) 
                            }
                        )
                ));
                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_ERR_04
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_MME_ERR_05
             */
            function f_TC_S1AP_MME_ERR_05() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // 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. on receipt of a E-RAB_MODIFICATION_INDICATION
                f_send_E_RABModifiedInd(
                    m_E_RABModifiedIndIEs_no_eNB(
                        vc_MME_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
                                -,
                                -
                            )
                        }
                )); 
                // 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
                                    ) 
                                }
                            )
                        )
                ));
                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_ERR_05
            
            /**
             * @desc Testcase function for TC_S1AP_MME_ERR_06
             */
            function f_TC_S1AP_MME_ERR_06() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // 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. on receipt of a UE_CONTEXT_RESUME_REQUEST
                f_send_Ue_Context_Resume_Request(
                    m_UeContextResumeRequestIEs_duplicate_ENB(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        { 
                            m_E_RABFailedToResumeItemResumeReq(
                                c_E_RAB_ID_A,
                                m_cause_ran(user_inactivity)
                            )
                        }
                )); 
                // 2. sends an UE_CONTEXT_RESUME_FAILURE
                f_recv_Ue_Context_Resume_Failure(
                    mw_UeContextResumeFailureIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        mw_cause_protocol(abstract_syntax_error_falsely_constructed_message),
                        mw_criticalityDiagnostics(
                            ?,
                            ?,
                            ?
                        )
                ));
                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_ERR_06
            
            /**
             * @desc Testcase function for TC_S1AP_MME_ERR_07
             */
            function f_TC_S1AP_MME_ERR_07() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                
                // 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. on receipt of a E-RAB_MODIFICATION_INDICATION
                f_send_E_RABModifiedInd(
                    m_E_RABModifiedIndIEs_duplicate_eNB(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
                            m_E_RABToBeModifiedItemBearerModInd(
                                c_E_RAB_ID_A,
                                -,
                                -
                            )
                        }
                )); 
                // 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
                ))));
                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_ERR_07
        } // End of group Unknown_unforseen_errorneous_group
garciay's avatar
garciay committed
    } // End of group MME_Role
garciay's avatar
garciay committed
} // End of module S1AP_TCFunctions