NGAP_TCFunctions.ttcn 90.5 KB
Newer Older
Yann Garcia's avatar
Yann Garcia committed
/**
 *    @author   ETSI / TTF033
Yann Garcia's avatar
Yann Garcia committed
 *    @version  $URL$
 *              $Id$
 *    @desc     This module provides test functions for NGAP tests.
Yann Garcia's avatar
Yann Garcia committed
 *    @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 138 413 / 3GPP TS 38.413 version 16.12 Release 16
Yann Garcia's avatar
Yann Garcia committed
 */
module NGAP_TCFunctions {
Yann Garcia's avatar
Yann Garcia committed
    // LibCommon
    import from LibCommon_Sync all;
    import from LibCommon_VerdictControl all;
    import from LibCommon_Time all;
Yann Garcia's avatar
Yann Garcia committed

    // LibNGAP
    import from NGAP_IEs language "ASN.1:2002" all;
    import from NGAP_Constants language "ASN.1:2002" all;

    import from LibNGAP_Pixits all;
    import from LibNGAP_Templates all;
    import from LibNGAP_Interface all;
    import from LibNGAP_Steps all;

    // NGAP_Ats
Iztok Juvancic's avatar
Iztok Juvancic committed
    import from NGAP_TestSystem all;
Yann Garcia's avatar
Yann Garcia committed
    import from NGAP_Steps all;
    import from NGAP_Pixits all;
    group TC_function_template{
Yann Garcia's avatar
Yann Garcia committed
        /**
         * @desc Testcase function for TC_NGAP_gNB_or_aMF_functionName_01
Yann Garcia's avatar
Yann Garcia committed
         */
        function f_TC_NGAP_gNB_or_aMF_functionName_01() runs on NGAPComponent {
            // Local variables
            // Preamble
            f_NGAP_gnb_init();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
Iztok Juvancic's avatar
Iztok Juvancic committed
            //f_send_NGAP_PDU(m_ngap_initMsg(/*initiating msgtemplate*/));
            //f_recv_NGAP_PDU(?);
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
            // Postamble
            f_postamble_NGAP_gNB();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
        } // End of function f_TC_NGAP_gNB_or_aMF_functionName_01
    group gNB_Role{
        //8.2
        group PDU_Session_Management_Procedures{
            //8.2.1
            group PDU_Session_Resource_Setup{
Iztok Juvancic's avatar
Iztok Juvancic committed
                /**
                * @desc Testcase function for TC_NGAP_gNB_PDU_01
Iztok Juvancic's avatar
Iztok Juvancic committed
                */
               function f_TC_NGAP_GNB_PDU_01() runs on aMFNGAPComponent {
                   // Local variables
Iztok Juvancic's avatar
Iztok Juvancic committed
                   // Preamble
                   f_NGAP_amf_init();
juvancic's avatar
juvancic committed
                   f_NGAP_amf_UE_Register();
Iztok Juvancic's avatar
Iztok Juvancic committed
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
Iztok Juvancic's avatar
Iztok Juvancic committed
                   // Body
                   f_send_NGAP_PDU(
Iztok Juvancic's avatar
Iztok Juvancic committed
                     m_ngap_initMsg(
Iztok Juvancic's avatar
Iztok Juvancic committed
                       m_n2_PDUSessionResourceSetupRequest(
                         -,
                         -,
                         {
                           m_pDUSessionResourceSetupItemSUReq(
                             -,
                             m_s_NSSAI('00'O, '000000'O),
                             bit2oct(
                               encvalue(
                                 m_pDUSessionResourceSetupRequestTransfer(
                                   m_pDUSessionResourceSetupRequestTransfer_mandatories(
                                     m_pDUSessionType(ipv4),
                                     {
                                       m_qosFlowSetupRequestItem(
                                         PX_QOS_FLOW_IDENTIFIER,
                                         m_qosFlowLevelQosParameters(
                                           m_qosCharacteristics_dynamic5QI(
                                             m_dynamic5QIDescriptor(
                                               1,//in template (value) PriorityLevelQos p_priorityLevelQos,
                                               0,//in template (value) PacketDelayBudget p_packetDelayBudget,
                                               m_PacketErrorRate(
                                                 0,//in template (value) PacketErrorRate.pERScalar p_pERScalar,
                                                 0//in template (value) PacketErrorRate.pERExponent p_pERExponent
                                           ))),
                                           m_allocationAndRetentionPriority(
                                             1,//in template (value) PriorityLevelARP p_priorityLevelARP,
                                             shall_not_trigger_pre_emption,//in template (value) Pre_emptionCapability p_pre_emptionCapability,
                                             not_pre_emptable//in template (value) Pre_emptionVulnerability p_pre_emptionVulnerability,
                                           )))
                                     },
                                     m_uPTransportLayerInformation_gTPTunnel(
                                       m_gTPTunnel
                           ))))))
                         }
                   )));
Iztok Juvancic's avatar
Iztok Juvancic committed
                   f_recv_NGAP_PDU(
Iztok Juvancic's avatar
Iztok Juvancic committed
                     mw_ngap_succMsg(
Iztok Juvancic's avatar
Iztok Juvancic committed
                       mw_n2_PDUSessionResourceSetupResponse(
                          -,
                          -,
                          //? //TODO replace with template
                          {
                            (mw_pDUSessionResourceSetupItemSURes(
                                ?,//template (present) PDUSessionID p_pDUSessionID,
                                //mw_pDUSessionResourceSetupResponseTransfer(
                                //            ?,//template (present) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation := ?,
                                //            *,//template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *,
                                //            *,//template SecurityResult p_securityResult := *,
                                //            *,//template QosFlowListWithCause p_qosFlowFailedToSetupList := *,
                                //            *//template PDUSessionResourceSetupResponseTransfer.iE_Extensions p_iE_Extensions := *
                                //            ), In ASN1 it is OCTET STRING - PDUSessionResourceSetupResponseTransfer
                                ?,//template (present) PDUSessionResourceSetupItemSURes.pDUSessionResourceSetupResponseTransfer p_pDUSessionResourceSetupResponseTransfer := ?,
                                *//template PDUSessionResourceSetupItemSURes.iE_Extensions p_iE_Extensions := *
                              )
                            )
                          }
Iztok Juvancic's avatar
Iztok Juvancic committed
                        )
                     )
                   );
Iztok Juvancic's avatar
Iztok Juvancic committed
                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
Iztok Juvancic's avatar
Iztok Juvancic committed
                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
juvancic's avatar
juvancic committed
                } // End of function f_TC_NGAP_gNB_PDU_01
juvancic's avatar
juvancic committed
                /**
                * @desc Testcase function for TC_NGAP_gNB_PDU_02
                */
                function f_TC_NGAP_GNB_PDU_02() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceSetupRequest(
                         -,
                         -,
                         {
                           m_pDUSessionResourceSetupItemSUReq(
                             -,
                             m_s_NSSAI('00'O, '000000'O),
                             bit2oct(
                               encvalue(
                                 m_pDUSessionResourceSetupRequestTransfer(
                                   m_pDUSessionResourceSetupRequestTransfer_mandatories(
                                     m_pDUSessionType(ipv4),
                                     {
                                       m_qosFlowSetupRequestItem(
                                         PX_QOS_FLOW_IDENTIFIER,
                                         m_qosFlowLevelQosParameters(
                                           m_qosCharacteristics_dynamic5QI(
                                             m_dynamic5QIDescriptor(
                                               1,//in template (value) PriorityLevelQos p_priorityLevelQos,
                                               0,//in template (value) PacketDelayBudget p_packetDelayBudget,
                                               m_PacketErrorRate(
                                                 0,//in template (value) PacketErrorRate.pERScalar p_pERScalar,
                                                 0//in template (value) PacketErrorRate.pERExponent p_pERExponent
                                           ))),
                                           m_allocationAndRetentionPriority(
                                             1,//in template (value) PriorityLevelARP p_priorityLevelARP,
                                             shall_not_trigger_pre_emption,//in template (value) Pre_emptionCapability p_pre_emptionCapability,
                                             not_pre_emptable//in template (value) Pre_emptionVulnerability p_pre_emptionVulnerability,
                                           )))
                                     },
                                     m_uPTransportLayerInformation_gTPTunnel(
                                       m_gTPTunnel
                           )))))),
                           m_pDUSessionResourceSetupItemSUReq(
                             -,
                             m_s_NSSAI('00'O, '000000'O),
                             bit2oct(
                               encvalue(
                                 m_pDUSessionResourceSetupRequestTransfer(
                                   m_pDUSessionResourceSetupRequestTransfer_mandatories(
                                     m_pDUSessionType(ipv4),
                                     {
                                       m_qosFlowSetupRequestItem(
                                         PX_QOS_FLOW_IDENTIFIER,
                                         m_qosFlowLevelQosParameters(
                                           m_qosCharacteristics_dynamic5QI(
                                             m_dynamic5QIDescriptor(
                                               1,//in template (value) PriorityLevelQos p_priorityLevelQos,
                                               0,//in template (value) PacketDelayBudget p_packetDelayBudget,
                                               m_PacketErrorRate(
                                                 0,//in template (value) PacketErrorRate.pERScalar p_pERScalar,
                                                 0//in template (value) PacketErrorRate.pERExponent p_pERExponent
                                           ))),
                                           m_allocationAndRetentionPriority(
                                             1,//in template (value) PriorityLevelARP p_priorityLevelARP,
                                             shall_not_trigger_pre_emption,//in template (value) Pre_emptionCapability p_pre_emptionCapability,
                                             not_pre_emptable//in template (value) Pre_emptionVulnerability p_pre_emptionVulnerability,
                                           )))
                                     },
                                     m_uPTransportLayerInformation_gTPTunnel(
                                       m_gTPTunnel
                           ))))))
                         }
                   )));
juvancic's avatar
juvancic committed

                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_PDUSessionResourceSetupResponse(
                            -,
                            -,
                            //? //TODO replace with template
                            {
                                *
juvancic's avatar
juvancic committed

                                //FIXME: when template Ready
                                //mw_pDUSessionResourceFailedToSetupItemSURes(
                                //    ?,
                                //    ?,
                                //    *
                                //)
                            }
juvancic's avatar
juvancic committed
                        )
                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
juvancic's avatar
juvancic committed
                } // End of function f_TC_NGAP_gNB_PDU_02
                /**
                * @desc Testcase function for TC_NGAP_gNB_PDU_03
                */
               function f_TC_NGAP_GNB_PDU_03() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceSetupRequest(
                         -,
                         -,
                         {
                           m_pDUSessionResourceSetupItemSUReq(
                             -,
                             m_s_NSSAI('00'O, '000000'O),
                             bit2oct(
                               encvalue(
                                 m_pDUSessionResourceSetupRequestTransfer(
                                   m_pDUSessionResourceSetupRequestTransfer_mandatories(
                                     m_pDUSessionType(ipv4),
                                     {
                                       m_qosFlowSetupRequestItem(
                                         PX_QOS_FLOW_IDENTIFIER,
                                         m_qosFlowLevelQosParameters(
                                           m_qosCharacteristics_dynamic5QI(
                                             m_dynamic5QIDescriptor(
                                               1,//in template (value) PriorityLevelQos p_priorityLevelQos,
                                               0,//in template (value) PacketDelayBudget p_packetDelayBudget,
                                               m_PacketErrorRate(
                                                 0,//in template (value) PacketErrorRate.pERScalar p_pERScalar,
                                                 0//in template (value) PacketErrorRate.pERExponent p_pERExponent
                                           ))),
                                           m_allocationAndRetentionPriority(
                                             1,//in template (value) PriorityLevelARP p_priorityLevelARP,
                                             shall_not_trigger_pre_emption,//in template (value) Pre_emptionCapability p_pre_emptionCapability,
                                             not_pre_emptable//in template (value) Pre_emptionVulnerability p_pre_emptionVulnerability,
                                           )))
                                     },
                                     m_uPTransportLayerInformation_gTPTunnel(
                                       m_gTPTunnel
                           ))))))
                         }
                   )));


                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_PDUSessionResourceSetupResponse(
                        -,
                        -,
                        //? //TODO replace with template
                        {
                          mw_pDUSessionResourceSetupItemSURes(
                            ?,//template (present) PDUSessionID p_pDUSessionID,
                            //mw_pDUSessionResourceSetupResponseTransfer(
                            //            ?,//template (present) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation := ?,
                            //            *,//template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *,
                            //            *,//template SecurityResult p_securityResult := *,
                            //            *,//template QosFlowListWithCause p_qosFlowFailedToSetupList := *,
                            //            *//template PDUSessionResourceSetupResponseTransfer.iE_Extensions p_iE_Extensions := *
                            //            ), In ASN1 it is OCTET STRING - PDUSessionResourceSetupResponseTransfer
                            ?,//template (present) PDUSessionResourceSetupItemSURes.pDUSessionResourceSetupResponseTransfer p_pDUSessionResourceSetupResponseTransfer := ?,
                            *//template PDUSessionResourceSetupItemSURes.iE_Extensions p_iE_Extensions := *
                          ) 
                        }
                        )
                     )
                   );

                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceSetupRequest(
                         -,
                         -,
                         {
                           m_pDUSessionResourceSetupItemSUReq(
                             -,
                             m_s_NSSAI('00'O, '000000'O),
                             bit2oct(
                               encvalue(
                                 m_pDUSessionResourceSetupRequestTransfer(
                                   m_pDUSessionResourceSetupRequestTransfer_mandatories(
                                     m_pDUSessionType(ipv4),
                                     {
                                       m_qosFlowSetupRequestItem(
                                         PX_QOS_FLOW_IDENTIFIER,
                                         m_qosFlowLevelQosParameters(
                                           m_qosCharacteristics_dynamic5QI(
                                             m_dynamic5QIDescriptor(
                                               1,//in template (value) PriorityLevelQos p_priorityLevelQos,
                                               0,//in template (value) PacketDelayBudget p_packetDelayBudget,
                                               m_PacketErrorRate(
                                                 0,//in template (value) PacketErrorRate.pERScalar p_pERScalar,
                                                 0//in template (value) PacketErrorRate.pERExponent p_pERExponent
                                           ))),
                                           m_allocationAndRetentionPriority(
                                             1,//in template (value) PriorityLevelARP p_priorityLevelARP,
                                             shall_not_trigger_pre_emption,//in template (value) Pre_emptionCapability p_pre_emptionCapability,
                                             not_pre_emptable//in template (value) Pre_emptionVulnerability p_pre_emptionVulnerability,
                                           )))
                                     },
                                     m_uPTransportLayerInformation_gTPTunnel(
                                       m_gTPTunnel
                           ))))))
                         }
                   )));

                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_PDUSessionResourceSetupResponse(
                            -,
                            -,
                            //? //TODO replace with template
                            {
                                *

                                //FIXME: when template Ready
                                //mw_pDUSessionResourceFailedToSetupItemSURes(
                                //    ?,
                                //    ?,
                                //    *
                                //)
                            }
                        )
                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_PDU_03

                /**
                * @desc Testcase function for TC_NGAP_gNB_PDU_04
                */
               function f_TC_NGAP_GNB_PDU_04() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceSetupRequest(
                         -,
                         -,
                         {
                           m_pDUSessionResourceSetupItemSUReq(
                             -,
                             m_s_NSSAI('00'O, '000000'O),
                             bit2oct(
                               encvalue(
                                 m_pDUSessionResourceSetupRequestTransfer(
                                   m_pDUSessionResourceSetupRequestTransfer_mandatories(
                                     m_pDUSessionType(ipv4),
                                     {
                                       m_qosFlowSetupRequestItem(
                                         PX_QOS_FLOW_IDENTIFIER, //FIXME nonGBRQosID
                                         m_qosFlowLevelQosParameters(
                                           m_qosCharacteristics_dynamic5QI(
                                             m_dynamic5QIDescriptor(
                                               1,//in template (value) PriorityLevelQos p_priorityLevelQos,
                                               0,//in template (value) PacketDelayBudget p_packetDelayBudget,
                                               m_PacketErrorRate(
                                                 0,//in template (value) PacketErrorRate.pERScalar p_pERScalar,
                                                 0//in template (value) PacketErrorRate.pERExponent p_pERExponent
                                           ))),
                                           m_allocationAndRetentionPriority(
                                             1,//in template (value) PriorityLevelARP p_priorityLevelARP,
                                             shall_not_trigger_pre_emption,//in template (value) Pre_emptionCapability p_pre_emptionCapability,
                                             not_pre_emptable//in template (value) Pre_emptionVulnerability p_pre_emptionVulnerability,
                                           )))
                                     },
                                     m_uPTransportLayerInformation_gTPTunnel(
                                       m_gTPTunnel
                           ))))))
                         }
                   )));


                    f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_PDUSessionResourceSetupResponse(
                            -,
                            -,
                            //? //TODO replace with template
                            {
                                *

                                //FIXME: when template Ready
                                //mw_pDUSessionResourceFailedToSetupItemSURes(
                                //    ?,
                                //    ?,
                                //    *
                                //)
                            }
                        )
                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_PDU_04

            } // End of group PDU_Session_Resource_Setup
            //8.2.2
            group PDU_Session_Resource_Release{

               /**
               * @desc Testcase function for TC_NGAP_gNB_PDU_05
               */
               function f_TC_NGAP_GNB_PDU_05() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_NGAP_amf_UE_PDU_ResourceSetup();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceReleaseCommand(
                         -,
                         -,
                         {
                            m_pDUSessionResourceToReleaseItemRelCmd(
                              PX_PDU_SESSION_ID,
                              bit2oct(
                               encvalue(
                                 m_pDUSessionResourceReleaseCommandTransfer(
                                 m_cause_misc(m_causeMisc(-)),
                                 -//in template (omit) PDUSessionResourceReleaseCommandTransfer.iE_Extensions p_iE_Extensions := omit
                                 )
                               )
                              ),
                              - //in template (omit) PDUSessionResourceToReleaseItemRelCmd.iE_Extensions p_iE_Extensions := omit
                            )                           
                         }
                   )));


                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_PDUSessionResourceReleaseResponse(
                         -,//template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                         -,//template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                         {  
                            ( 
                              mw_pDUSessionResourceReleasedItemRelRes(
                                PX_PDU_SESSION_ID,//template (present) PDUSessionID p_pDUSessionID := ?,
                                -,//bit2oct(encvalue(mw_pDUSessionResourceReleaseResponseTransfer(*))),//template (present) PDUSessionResourceReleasedItemRelRes.pDUSessionResourceReleaseResponseTransfer p_pDUSessionResourceReleaseResponseTransfer := ?,
                                -//template PDUSessionResourceReleasedItemRelRes.iE_Extensions p_iE_Extensions := *
                              ) 
                              
                            )
                         }//template (present) PDUSessionResourceReleasedListRelRes p_pDUSessionResourceReleasedListRelRes := ?
                        )

                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_PDU_05

               /**
               * @desc Testcase function for TC_NGAP_gNB_PDU_06
               */
               function f_TC_NGAP_GNB_PDU_06() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_NGAP_amf_UE_PDU_ResourceSetup();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceReleaseCommand(
                         -,
                         -,
                         {
                            m_pDUSessionResourceToReleaseItemRelCmd(
                              PX_PDU_SESSION_ID,
                              bit2oct(
                               encvalue(
                                 m_pDUSessionResourceReleaseCommandTransfer(
                                 m_cause_misc(m_causeMisc(-)),
                                 -//in template (omit) PDUSessionResourceReleaseCommandTransfer.iE_Extensions p_iE_Extensions := omit
                                 )
                               )
                              ),
                              - //in template (omit) PDUSessionResourceToReleaseItemRelCmd.iE_Extensions p_iE_Extensions := omit
                            ),
                            m_pDUSessionResourceToReleaseItemRelCmd(
                              PX_PDU_SESSION_ID,
                              bit2oct(
                               encvalue(
                                 m_pDUSessionResourceReleaseCommandTransfer(
                                 m_cause_misc(m_causeMisc(-)),
                                 -//in template (omit) PDUSessionResourceReleaseCommandTransfer.iE_Extensions p_iE_Extensions := omit
                                 )
                               )
                              ),
                              - //in template (omit) PDUSessionResourceToReleaseItemRelCmd.iE_Extensions p_iE_Extensions := omit
                            )                            
                         }
                   )));


                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_PDUSessionResourceReleaseResponse(
                         -,//template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                         -,//template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                         {  
                            ( 
                              mw_pDUSessionResourceReleasedItemRelRes(
                                PX_PDU_SESSION_ID,//template (present) PDUSessionID p_pDUSessionID := ?,
                                -,//bit2oct(encvalue(mw_pDUSessionResourceReleaseResponseTransfer(*))),//template (present) PDUSessionResourceReleasedItemRelRes.pDUSessionResourceReleaseResponseTransfer p_pDUSessionResourceReleaseResponseTransfer := ?,
                                -//template PDUSessionResourceReleasedItemRelRes.iE_Extensions p_iE_Extensions := *
                              ) 
                              
                            )
                         }//template (present) PDUSessionResourceReleasedListRelRes p_pDUSessionResourceReleasedListRelRes := ?
                        )

                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_PDU_06

            } // End of group PDU_Session_Resource_Release
            //8.2.3
            group PDU_Session_Resource_Modify{

               /**
               * @desc Testcase function for TC_NGAP_gNB_PDU_07
               */
               function f_TC_NGAP_GNB_PDU_07() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_NGAP_amf_UE_PDU_ResourceSetup();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceModify(
                         -,
                         -,
                         {
                            m_pDUSessionResourceModifyItemModReq(
                              PX_PDU_SESSION_ID,
                              '00'O,//bit2oct(
                              // encvalue(
                              //   m_pDUSessionResourceModifyRequestTransfer(//FIXME when template with mandatory IEs available
                              //    -//in template (omit) PDUSessionResourceModifyRequestTransfer.protocolIEs p_protocolIEs
                              //    )
                              // )
                              //),
                              -,//in template (omit) NAS_PDU p_nAS_PDU := omit,
                              -//in template (omit) PDUSessionResourceModifyItemModReq.iE_Extensions p_iE_Extensions := omit
                            )                           
                         }
                   )));

                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_PDUSessionResourceModifyResponse(
                         -,//template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                         -,//template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                         {  
                            ( 
                              mw_pDUSessionResourceModifyItemModRes(
                                PX_PDU_SESSION_ID,//template (present) PDUSessionID p_pDUSessionID := ?,
                                ?,//mw_pDUSessionResourceModifyResponseTransfer(
                                  //*,//template UPTransportLayerInformation p_dL_NGU_UP_TNLInformation := *,
                                  //*,//template UPTransportLayerInformation p_uL_NGU_UP_TNLInformation := *,
                                  //?,//template QosFlowAddOrModifyResponseList p_qosFlowAddOrModifyResponseList := *,
                                  //*,//template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *,
                                  //*,//template QosFlowListWithCause p_qosFlowFailedToAddOrModifyList := *,
                                  //*//template PDUSessionResourceModifyResponseTransfer.iE_Extensions p_iE_Extensions := *
                                //),
                                -//template PDUSessionResourceModifyItemModRes.iE_Extensions p_iE_Extensions := *
                              ) 
                              
                            )
                         }
                        )

                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_PDU_07

            } // End of group PDU_Session_Resource_Modify
            //8.2.4
            group PDU_Session_Resource_Notify{

               /**
               * @desc Testcase function for TC_NGAP_gNB_PDU_08
               */
               function f_TC_NGAP_GNB_PDU_08() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_NGAP_amf_UE_PDU_ResourceSetup();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   action("Trigger PDU session resource NOTIFY!");

                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_PDUSessionResourceNotify(
                         -,//template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                         -,//template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                         {  
                            //*
                            mw_pDUSessionResourceNotifyItem(
                              PX_PDU_SESSION_ID,//template (present) PDUSessionID p_pDUSessionID := ?,
                              ?,//template (present) PDUSessionResourceNotifyItem.pDUSessionResourceNotifyTransfer p_pDUSessionResourceNotifyTransfer,
                              -//template PDUSessionResourceNotifyItem.iE_Extensions p_iE_Extensions := *
                            )
                         }
                        )
                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_PDU_08

            } // End of group PDU_Session_Resource_Notify
            //8.2.5
            group PDU_Session_Resource_Modify_Indication{

               /**
               * @desc Testcase function for TC_NGAP_gNB_PDU_09
               */
               function f_TC_NGAP_GNB_PDU_09() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();
                   f_NGAP_amf_UE_PDU_ResourceSetup();
                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   action("Trigger PDU session resource MODIFY!");

                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_PDUSessionResourceModifyIndication(
                         -,//template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                         -,//template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                         {  
                            ( 
                              mw_pDUSessionResourceModifyItemModInd(
                                PX_PDU_SESSION_ID,//template (present) PDUSessionID p_pDUSessionID := ?,
                                ?,//pDUSessionResourceModifyIndicationTransfer(
                                    //?,//template (present) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation := ?,
                                    //*,//template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *,                
                                    //-//template PDUSessionResourceModifyIndicationTransfer.iE_Extensions p_iE_Extensions := *
                                //),
                                -//template PDUSessionResourceModifyItemModRes.iE_Extensions p_iE_Extensions := *
                              ) 
                            )
                         }
                        )
                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_PDU_09

            } // End of group PDU_Session_Resource_Modify_Indication
        } // End of group PDU_Session_Management_Procedures
        //8.3
        group UE_Context_Management_Procedures{
            //8.3.1
            group Initial_Context_Setup{
            } // End of group Initial_Context_Setup
            //8.3.2
            group UE_Context_Release_Request_NG_RAN_node_initiated{
            } // End of group UE_Context_Release_Request_NG_RAN_node_initiated
            //8.3.3
            group UE_Context_Release_AMF_initiated{
            } // End of group UE_Context_Release_AMF_initiated
            //8.3.4
            group UE_Context_Modification{
            } // End of group UE_Context_Modification
            //8.3.5
            group RRC_Inactive_Transition_Report{
            } // End of group RRC_Inactive_Transition_Report
            //8.3.6
            group Connection_Establishment_Indication{
            } // End of group Connection_Establishment_Indication
            //8.3.7
            group AMF_CP_Relocation_Indication{
            } // End of group AMF_CP_Relocation_Indication
            //8.3.8
            group RAN_CP_Relocation_Indication{
            } // End of group RAN_CP_Relocation_Indication
            //8.3.9
            group Retrieve_UE_Information{
            } // End of group Retrieve_UE_Information
            //8.3.10
            group UE_Information_Transfer{
            } // End of group UE_Information_Transfer
            //8.3.11
            group UE_Context_Suspend{
            } // End of group UE_Context_Suspend
            //8.3.12
            group UE_Context_Resume{
            } // End of group UE_Context_Resume
        } // End of group UE_Context_Management_Procedures
        //8.4
        group UE_Mobility_Management_Procedures{
            //8.4.1
            group Handover_Preparation{
            } // End of group Handover_Preparation
            //8.4.2
            group Handover_Resource_Allocation{
            } // End of group Handover_Resource_Allocation
            //8.4.3
            group Handover_Notification{
            } // End of group Handover_Notification
            //8.4.4
            group Path_Switch_Request{
            } // End of group Path_Switch_Request
            //8.4.5
            group Handover_Cancellation{
            } // End of group Handover_Cancellation
            //8.4.6
            group Uplink_RAN_Status_Transfer{
            } // End of group Uplink_RAN_Status_Transfer
            //8.4.7
            group Downlink_RAN_Status_Transfer{
            } // End of group Downlink_RAN_Status_Transfer
            //8.4.8
            group Handover_Success{
            } // End of group Handover_Success
            //8.4.9
            group Uplink_RAN_Early_Status_Transfer{
            } // End of group Uplink_RAN_Early_Status_Transfer
            //8.4.10
            group Downlink_RAN_Early_Status_Transfer{
            } // End of group Downlink_RAN_Early_Status_Transfer
        } // End of group UE_Mobility_Management_Procedures
        //8.5
        group Paging_Procedures{
            //8.5.1
            group Paging{
            } // End of group Paging
        } // End of group Paging_Procedures
        //8.6
        group Transport_of_NAS_Messages_Procedures{
            //8.6.1
            group Initial_UE_Message{
            } // End of group Initial_UE_Message
            //8.6.2
            group Downlink_NAS_Transport{
            } // End of group Downlink_NAS_Transport
            //8.6.3
            group Uplink_NAS_Transport{
            } // End of group Uplink_NAS_Transport
            //8.6.4
            group NAS_Non_Delivery_Indication{
            } // End of group NAS_Non_Delivery_Indication
            //8.6.5
            group Rerout_NAS_Request{
            } // End of group Rerout_NAS_Request
        } // End of group Transport_of_NAS_Messages_Procedures
        //8.7
        group Interface_Management_Procedures{
            //8.7.1
            group NG_Setup{
            //8.7.2
            group RAN_Configuration_Update{
            } // End of group RAN_Configuration_Update
            //8.7.3
            group AMF_Configuration_Update{
            } // End of group AMF_Configuration_Update
            //8.7.4
            group NG_Reset{
            //8.7.5
            group Error_Indication{
            } // End of group Error_Indication
            //8.7.6
            group AMF_Status_Indication{
            } // End of group AMF_Status_Indication
            //8.7.7
            group Overload_Start{
            //8.7.8
            group Overload_Stop{
            } // End of group Overload_Stop
        } // End of group Interface_Management_Procedures
        //8.8
        group Configuration_Transfer_Procedures{
            //8.8.1
            group Uplink_RAN_Configuration_Transfer{
            } // End of group Uplink_RAN_Configuration_Transfer
            //8.8.2
            group Downlink_RAN_Configuration_Transfer{
            } // End of group Downlink_RAN_Configuration_Transfer
        } // End of group Configuration_Transfer_Procedures
        //8.9
        group Warning_Message_Transmission_Procedures{
            //8.9.1
            group Write_Replace_Warning{

               /**
                * @desc Testcase function for TC_NGAP_gNB_WTP_01
                */
                function f_TC_NGAP_GNB_WTP_01() runs on aMFNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_amf_init();
                   f_NGAP_amf_UE_Register();

                   f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_WriteReplaceWarningRequest(
                         PX_MESSAGE_IDENTIFIER,
                         PX_SERIAL_NUMBER,
                         PX_REPETITION_PERIOD,
                         PX_NUMBER_OF_BROADCASTS_REQUESTED
                       )
                     ));

                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_WriteReplaceWarningResponse(
                          PX_MESSAGE_IDENTIFIER,
                          PX_SERIAL_NUMBER
                       ) 
                     )
                   );

                   f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                   // Postamble
                   f_postamble_NGAP_gNB();
                   f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                   log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");

                } // End of function f_TC_NGAP_gNB_WTP_01

               /**
                * @desc Testcase function for TC_NGAP_gNB_WTP_02
                */
                function f_TC_NGAP_GNB_WTP_02() runs on aMFNGAPComponent {
                   // Local variables