S1AP_TCFunctions.ttcn 303 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;

    // 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
                         )
                     }
garciay's avatar
garciay committed
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList_E_RABSetupItemBearerSURes(
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,
                    {
                        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,
                    {
                        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,
                    {
                        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,
                    {
                        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
                        // Following code replaces upper commented line - IEs are extensionList type.
                        {{id := 156,//S1AP_Constants.id_Correlation_ID,
                          criticality := ignore,
                          extensionValue := {Correlation_ID := '01020304'O}
                         },
                         {id := 183,// S1AP_Constants.id_SIPTO_Correlation_ID,
                          criticality := ignore,
                          extensionValue := {Correlation_ID := '01020304'O}
                         }
                        }
                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    {
                        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,
                    {
                        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,
                    {
                        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,
                   {
                       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,
                    {
                         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,
                    {
                        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. ***");