S1AP_TCFunctions.ttcn 127 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;
    // LibS1AP
    import from S1AP_Constants language "ASN.1:1997" all;
    import from S1AP_CommonDataTypes language "ASN.1:1997" all;
    // import from S1AP_Containers language "ASN.1:1997" all;
    import from S1AP_IEs language "ASN.1:1997" all;
    import from S1AP_PDU_Contents language "ASN.1:1997" all;
    import from S1AP_PDU_Descriptions language "ASN.1:1997" all;
    
garciay's avatar
garciay committed
    import from LibS1AP_Pixits all;
    //import from LibS1AP_TypesAndValues all;
    import from LibS1AP_Templates all;
    import from LibS1AP_Interface all;
    import from LibS1AP_Steps all;

    // Ats
    import from S1AP_Templates all;
    import from S1AP_Steps all;
garciay's avatar
garciay committed
    import from S1AP_Pixits all;
    import from S1AP_TestSystem all;
    
garciay's avatar
garciay committed
    group eNB_Role {
        /**
         * @desc E-RAB management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.2  E-RAB management group
         */
garciay's avatar
garciay committed
        group ERAB_management_group {
garciay's avatar
garciay committed
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_RAB_01
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_RAB_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
//                f_send_S1AP_initiatingMessage(
//                    m_E_RABSetupRequest(
//                    {
//                        m_MME_UE_S1AP_ID(vc_MME_UE_ID),
garciay's avatar
garciay committed
//                        m_eNB_UE_S1AP_ID(vc_eNB_UE_ID),
//                        m_E_RABToBeSetupList(
//                        {
//                            m_E_RABToBeSetupItemBearerSUReq
//                            (
//                                -,
//                                m_e_RABlevelQoSParameters
//                                (5)
//                            )
//                        }
//                        )
//                    }
//                    )
//                );
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
                    {m_E_RABToBeSetupItemBearerSUReq (
                        -,
                        m_e_RABlevelQoSParameters
                        (5)
                    )}
                ));

                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
garciay's avatar
garciay committed
                    {
                        mw_E_RABSetupItemBearerSURes
garciay's avatar
garciay committed
                    }
garciay's avatar
garciay committed
                
//                f_recv_S1AP_successfulOutcome(
//                    mw_E_RABSetupResponse(
//                        {
//                            mw_MME_UE_S1AP_ID(vc_MME_UE_ID,ignore),
garciay's avatar
garciay committed
//                            mw_eNB_UE_S1AP_ID(vc_eNB_UE_ID,ignore),
//                            mw_E_RABSetupList(
//                            {
//                                mw_E_RABSetupItemBearerSURes
//                            }
//                            )
//                        }
//                    )
//                );
garciay's avatar
garciay committed
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_RAB_01
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_RAB_02
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_RAB_02() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                f_send_E_RABSetupRequest(m_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
garciay's avatar
garciay committed
                    {
                         m_E_RABToBeSetupItemBearerSUReq(1),
                         m_E_RABToBeSetupItemBearerSUReq(
                            2,
                            m_e_RABlevelQoSParameters
                            (255)
garciay's avatar
garciay committed
                         )
                     }
garciay's avatar
garciay committed
                
//                f_send_S1AP_initiatingMessage(
//                    m_E_RABSetupRequest(
//                    {
//                         m_MME_UE_S1AP_ID(vc_MME_UE_ID),
garciay's avatar
garciay committed
//                         m_eNB_UE_S1AP_ID(vc_eNB_UE_ID),
//                         m_E_RABToBeSetupList(
//                         {
//                             m_E_RABToBeSetupItemBearerSUReq(1),
//                             m_E_RABToBeSetupItemBearerSUReq(
//                                2,
//                                m_e_RABlevelQoSParameters
//                                (255)
//                             )
//                         }
//                         )
//                     }
//                     )
//                     
//                );

                f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList(
                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                    vc_eNB_UE_ID,
                    {
                          mw_E_RABSetupItemBearerSURes(1)
                    },
                    {
                        mw_E_RABItem(
                            2,
garciay's avatar
garciay committed
                            {
                                radioNetwork :=not_supported_QCI_value
garciay's avatar
garciay committed
                            }
                        )
                    }
                ));
                
//                f_recv_S1AP_successfulOutcome(
//                    mw_E_RABSetupResponse(
//                        {
//                            mw_MME_UE_S1AP_ID(vc_MME_UE_ID,ignore),
garciay's avatar
garciay committed
//                            mw_eNB_UE_S1AP_ID(vc_eNB_UE_ID,ignore),
//                            mw_E_RABSetupList(
//                            {
//                                  mw_E_RABSetupItemBearerSURes(1)
//                            }
//                            ),
//                            mw_E_RABFailedToSetupList(
//                            {
//                                mw_E_RABItem(
//                                    2,
//                                    {
//                                        radioNetwork :=not_supported_QCI_value
//                                    }
//                                )
//                            }
//                            )
//                        }
//                    )
//                );
garciay's avatar
garciay committed
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_RAB_02
garciay's avatar
garciay committed
            
            /**
             * @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
                const QCI c_qci_id := 1; // TODO
                
                // 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
                const QCI c_qci_id := 1; // TODO
    
                // 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            
       
garciay's avatar
garciay committed
        } // End of group ERAB_management_group
        
        /**
         * @desc Context management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.3  Context management group
         */
        group Context_management_group {
             * @desc Testcase function for TC_S1AP_eNB_CMP_01
            function f_TC_S1AP_eNB_CMP_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    m_UEAggregateMaximumBitrate(1,1),
                    {m_E_RABToBeSetupItemBearerSUReq (
                        -,
                        m_e_RABlevelQoSParameters
                    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_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                                m_e_RABlevelQoSParameters(5),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU
                    m_E_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_B,
                                m_e_RABlevelQoSParameters(255),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU
                            )
                        },
                    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(
                    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_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),
                    m_securityKey
                f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs(
                    {
                        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_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_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU
                    ),
                    m_E_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU
                    )},
                    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_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU
                    )},
                    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_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU
                    )},
                    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_RABToBeSetupItemBearerSUReq (
                        c_E_RAB_ID_A,
                        m_e_RABlevelQoSParameters
                        (5),
                        c_transportLayerAddress,
                        c_gTP_TEID,
                        c_nAS_PDU
                    )},
                    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

        } // End of group Context_management_group
        
        /**
         * @desc Handover signalling group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.4  Handover signalling group
         */
        group Handover_signalling_group {
        } // End of group Handover_signalling_group
        
        /**
         * @desc Paging group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.5  Paging group
         */
        group Paging_group {
        } // End of group Paging_group
        
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.6   NAS transport group
         */
        group NAS_transport_group {
            
            /**
             * @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
                            ),
                            mw_cause_ran(
                                - // TODO To be refined
                    )));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // 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
                        ),
                        mw_cause_ran(
                            - // TODO To be refined 
                )));
                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