NGAP_TCFunctions.ttcn 121 KB
Newer Older
                   // 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_AMFConfigurationUpdate(//FIXME: prepare/update template IEs
                        PX_AMF_NAME//in template (value) AMFName p_aMFName := PX_AMF_NAME
                       )
                     )
                   );

                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_AMFConfigurationUpdateAcknowledge_aMF_TNLAssociationSetupList(
                         ?
                       )
                     )
                   );

                   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_IMP_03

                /**
                * @desc Testcase function for TC_NGAP_gNB_IMP_04
                */
                function f_TC_NGAP_GNB_IMP_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_AMFConfigurationUpdate(//FIXME: prepare/update template IEs
                        PX_AMF_NAME//in template (value) AMFName p_aMFName := PX_AMF_NAME
                       )
                     )
                   );
                   
                   f_recv_NGAP_PDU(
                     mw_ngap_unsuccMsg(
                       mw_n2_AMFConfigurationUpdateFailure(
                         ?
                       )
                     )
                   );

                   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_IMP_04

            } // End of group AMF_Configuration_Update
            //8.7.4
            group NG_Reset{
                * @desc Testcase function for TC_NGAP_gNB_IMP_05
                */
                function f_TC_NGAP_GNB_IMP_05() 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_NGReset(
                        m_cause_radioNetwork(PX_NG_SETUP_FAILURE),
                        m_resetType_nG_Interface(
                          m_resetAll(reset_all) 
                        )
                       )
                     )
                   );
                   
                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       mw_n2_NGResetAcknowledge
                     )
                   );

                   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_IMP_05

            //8.7.5
            group Error_Indication{
              
                /**
                * @desc Testcase function for TC_NGAP_gNB_IMP_06
                */
                function f_TC_NGAP_GNB_IMP_06() 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
                   action("Trigger ERROR INDICATION!");
                   
                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_ErrorIndication
                     )
                   );

                   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_IMP_06

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

                   // 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, // indicating value "different from already being broadcasted",
                         PX_SERIAL_NUMBER, //indicating value "different from already being broadcasted",
                         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_02

            } // End of group Write_Replace_Warning
            //8.9.2
            group PWS_Cancel{

               /**
                * @desc Testcase function for TC_NGAP_gNB_WTP_03
                */
                function f_TC_NGAP_GNB_WTP_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_PWSCancelRequest(
                         PX_MESSAGE_IDENTIFIER,
                         PX_SERIAL_NUMBER                         
                       )
                     ));

                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                       /*mw*/m_n2_PWSCancelResponse( //missing template
                          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_03

            //8.9.3
            group PWS_Restart_Indication{

               /**
                * @desc Testcase function for TC_NGAP_gNB_WTP_04
                */
                function f_TC_NGAP_GNB_WTP_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
                   action("Trigger PWS_Restart_Indication!");
                   
                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                      ?
                      //  /*mw*/m_n2_PWSRestartIndication( // missing template
                      //    ?,//in template (value) CellIDListForRestart p_cellIDListForRestart,
                      //    ?,//in template (value) GlobalRANNodeID p_globalRANNodeID,
                      //    ?,//in template (value) TAIListForRestart p_tAIListForRestart,
                      //    ?//in template (value) EmergencyAreaIDListForRestart p_emergencyAreaIDListForRestart
                      //  )    
                     )
                   );


                   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_04

            } // End of group PWS_Restart_Indication
            //8.9.4
            group PWS_Failure_Indication{

               /**
                * @desc Testcase function for TC_NGAP_gNB_WTP_05
                */
                function f_TC_NGAP_GNB_WTP_05() 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
                   action("Trigger PWS_Failure_Indication!");

                   f_recv_NGAP_PDU(
                     mw_ngap_unsuccMsg(
                      ?
                      // /*mw*/m_n2_PWSFailureIndication( //missing template
                      //     ?,//in template (value) PWSFailedCellList p_pWSFailedCellList,
                      //     ?//in template (value) GlobalRANNodeID p_globalRANNodeID
                      //   )   
                     )
                   );

                   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_05

            } // End of group PWS_Failure_Indication
        } // End of group  Warning_Message_Transmission_Procedures
        //8.10
        group NRPPa_Transport_Procedures{
        } // End of group NRPPa_Transport_Procedures
        //8.11
        group Trace_Procedures{
            //8.11.1
            group Trace_Start{
juvancic's avatar
juvancic committed

                /**
                * @desc Testcase function for TC_NGAP_gNB_TRP_01
                */
                function f_TC_NGAP_GNB_TRP_01() 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_TraceStart(
                        -,
                        -,
                        m_traceActivation(
                          '0000000000000001'O,//in template (value) NGRANTraceID p_nGRANTraceID,
                          '00000000'B,//in template (value) InterfacesToTrace p_interfacesToTrace,
                          m_traceDepth(minimum),
                          PX_TRANSPORT_LAYER_ADDRESS,
                          omit//in template (omit) TraceActivation.iE_Extensions p_iE_Extensions := omit
                        )
                       )
                     )
                   );

                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_TraceFailureIndication(
                         -,
                         -,
                         ?,
                         ?
                       )
                     )
                   );

                   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_TRP_01

            //8.11.2
            group Trace_Failure_Indication{
            } // End of group Trace_Failure_Indication
            //8.11.3
            group Deactivate_Trace{
juvancic's avatar
juvancic committed

               /**
                * @desc Testcase function for TC_NGAP_gNB_TRP_02
                */
                function f_TC_NGAP_GNB_TRP_02() 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_DeactivateTrace(
                        -,
                        -,
                        '0000000000000001'O//in template (value) NGRANTraceID p_NGRANTraceID
                       )
                     )
                   );

                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_TraceFailureIndication(
                         -,
                         -,
                         ?,
                         ?
                       )
                     )
                   );

                   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_TRP_02

            //8.11.4
            group Cell_Traffic_Trace{
juvancic's avatar
juvancic committed

                /**
                * @desc Testcase function for TC_NGAP_gNB_TRP_03
                */
                function f_TC_NGAP_GNB_TRP_03() 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 CELL TRAFFIC TRACE!");

                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_CellTrafficTrace(
                         ?,
                         ?,
                         ?,
                         ?,			
                         ?,	
                         ?,		
                         ?	
                       )
                     )
                   );

                   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_TRP_03

            } // End of group Cell_Traffic_Trace
        } // End of group Trace_Procedures
        //8.12
        group Location_Reporting_Procedures{
            //8.12.1
            group Location_Reporting_Control{
            } // End of group Location_Reporting_Control
            //8.12.2
            group Location_Reporting_Failure_Indication{
            } // End of group Location_Reporting_Failure_Indication
            //8.12.3
            group Location_Report{
            } // End of group Location_Report
        } // End of group Location_Reporting_Procedures
        //8.13
        group UE_TNLA_Binding_Procedures{
            //8.13.1
            group UE_TNLA_Binding_Release{
            } // End of group UE_TNLA_Binding_Release
        } // End of group UE_TNLA_Binding_Procedures
        //8.14
        group UE_Radio_Capability_Management_Procedures{
            //8.14.1
            group UE_Radio_Capability_Info_Indication{
            } // End of group UE_Radio_Capability_Info_Indication
            //8.14.2
            group UE_Radio_Capability_Check{
            } // End of group UE_Radio_Capability_Check
            //8.14.3
            group UE_Radio_Capability_ID_Mapping{
            } // End of group UE_Radio_Capability_ID_Mapping
        } // End of group UE_Radio_Capability_Management_Procedures
        //8.15
        group Data_Usage_Reporting_Procedures{
            //8.15.1
            group Secondary_RAT_Data_Usage_Report{
            } // End of group Secondary_RAT_Data_Usage_Report
        } // End of group Data_Usage_Reporting_Procedures
        //8.16
        group RIM_Information_Transfer_Procedures{
            //8.16.1
            group Uplink_RIM_Information_Transfer{
            } // End of group Uplink_RIM_Information_Transfer
            //8.16.2
            group Downlink_RIM_Information_Transfer{
            } // End of group Downlink_RIM_Information_Transfer
        } // End of group RIM_Information_Transfer_Procedures
    } // End of group gNB_Role 

    group aMF_Role{
        //8.2
        group PDU_Session_Management_Procedures{
            //8.2.1
            group PDU_Session_Resource_Setup{

              /**
               * @desc Testcase function for TC_NGAP_aMF_PDU_01
               */
               function f_TC_NGAP_AMF_PDU_01() runs on gNBNGAPComponent {
                   // Local variables

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

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

                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_PDUSessionResourceSetupRequest(
                          PX_AMF_UE_NGAP_ID,
                          PX_RAN_UE_NGAP_ID,
                          {
                            mw_pDUSessionResourceSetupItemSUReq(
                              PX_PDU_SESSION_ID,
                              mw_s_NSSAI(
                                PX_SST,
                                -,//in template (omit) SD p_sD := omit,
                                -//in template (omit) S_NSSAI.iE_Extensions p_iE_Extensions := omit
                              ),
                              ?,//mw_pDUSessionResourceSetupRequestTransfer(?),OCTETSTRING  
                              -,//in template (omit) NAS_PDU p_pDUSessionNAS_PDU := omit,
                              -//in template (omit) PDUSessionResourceSetupItemSUReq.iE_Extensions p_iE_Extensions := omit
                            )
                          }//in template (value) PDUSessionResourceSetupListSUReq p_pDUSessionResourceSetupListSUReq
                       )
                     )
                   );

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

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

                } // End of function f_TC_NGAP_AMF_PDU_01

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

              /**
               * @desc Testcase function for TC_NGAP_AMF_PDU_02
               */
               function f_TC_NGAP_AMF_PDU_02() runs on gNBNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_gnb_init();
                   f_NGAP_gnb_UE_Register();
                   f_NGAP_gnb_UE_PDU_ResourceSetup();

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

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

                   f_recv_NGAP_PDU(
                     mw_ngap_initMsg(
                       mw_n2_PDUSessionResourceReleaseCommand(
                          PX_AMF_UE_NGAP_ID,
                          PX_RAN_UE_NGAP_ID,
                          {
                            mw_pDUSessionResourceToReleaseItemRelCmd(
                              PX_PDU_SESSION_ID,
                              ?,//mw_pDUSessionResourceReleaseCommandTransfer(?,-),OCTETSTRING  
                              -//in template (omit) PDUSessionResourceToReleaseItemRelCmd.iE_Extensions p_iE_Extensions := omit
                            )
                          }
                       )
                     )
                   );

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

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

                } // End of function f_TC_NGAP_AMF_PDU_02

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

              /**
               * @desc Testcase function for TC_NGAP_AMF_PDU_03
               */
               function f_TC_NGAP_AMF_PDU_03() runs on gNBNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_gnb_init();
                   f_NGAP_gnb_UE_Register();
                   f_NGAP_gnb_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_PDUSessionResourceModify(
                          PX_AMF_UE_NGAP_ID,
                          PX_RAN_UE_NGAP_ID,
                          {
                            mw_pDUSessionResourceModifyItemModReq(
                              PX_PDU_SESSION_ID,
                              ?,//mw_pDUSessionResourceModifyRequestTransfer(*),OCTETSTRING
                              -,//template NAS_PDU p_nAS_PDU := *,
                              -//template PDUSessionResourceModifyItemModReq.iE_Extensions p_iE_Extensions := *
                             )
                          }
                       )
                     )
                   );

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

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

                } // End of function f_TC_NGAP_AMF_PDU_03

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

              /**
               * @desc Testcase function for TC_NGAP_AMF_PDU_04
               */
               function f_TC_NGAP_AMF_PDU_04() runs on gNBNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_gnb_init();
                   f_NGAP_gnb_UE_Register();
                   f_NGAP_gnb_UE_PDU_ResourceSetup();

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

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceModifyIndication(
                         PX_AMF_UE_NGAP_ID,//template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                         PX_RAN_UE_NGAP_ID,//template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                         {  
                            m_pDUSessionResourceModifyItemModInd(
                                PX_PDU_SESSION_ID,//template (present) PDUSessionID p_pDUSessionID := ?,
                                bit2oct(encvalue(
                                  m_pDUSessionResourceModifyIndicationTransfer(
                                    m_qosFlowPerTNLInformation(
                                      m_uPTransportLayerInformation_gTPTunnel(
                                        m_gTPTunnel(
                                          PX_TRANSPORT_LAYER_ADDRESS,
                                          PX_GTP_TEID,
                                          omit
                                        )
                                      ),
                                      {
                                        m_associatedQosFlowItem(
                                          PX_QOS_FLOW_IDENTIFIER,
                                          omit,
                                          omit
                                        )
                                      },//in template (value) AssociatedQosFlowList p_associatedQosFlowList,                
                                      omit//in template (omit) QosFlowPerTNLInformation.iE_Extensions p_iE_Extensions := omit
                                    ),//template (present) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation := ?,
                                    omit,//template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *,                
                                    omit//template PDUSessionResourceModifyIndicationTransfer.iE_Extensions p_iE_Extensions := *
                                ))),
                                omit//template PDUSessionResourceModifyItemModRes.iE_Extensions p_iE_Extensions := *
                              ) 
                         }
                        )
                     )
                   );

                    f_recv_NGAP_PDU(
                      mw_ngap_succMsg(
                        mw_n2_PDUSessionResourceModifyConfirm(
                          PX_AMF_UE_NGAP_ID,
                          PX_RAN_UE_NGAP_ID,
                          {
                            mw_pDUSessionResourceModifyItemModCfm(
                              PX_PDU_SESSION_ID,
                              ?,//mw_pDUSessionResourceModifyConfirmTransfer(
                                //    ?,//template (present) QosFlowModifyConfirmList p_qosFlowModifyConfirmList := ?,
                                //    ?,//template (present) UPTransportLayerInformation p_uLNGU_UP_TNLInformation := ?,
                                //    -,//template UPTransportLayerInformationPairList p_additionalNG_UUPTNLInformation := *,
                                //    -,//template QosFlowListWithCause p_qosFlowFailedToModifyList := *,
                                //    -//template PDUSessionResourceModifyConfirmTransfer.iE_Extensions p_iE_Extensions := *
                                //  ), OCTETSTRING
                              -//template PDUSessionResourceModifyItemModCfm.iE_Extensions p_iE_Extensions := *
                            ) 
                          }
                       )
                      )
                    );

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

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

                } // End of function f_TC_NGAP_AMF_PDU_04

              /**
               * @desc Testcase function for TC_NGAP_AMF_PDU_05
               */
               function f_TC_NGAP_AMF_PDU_05() runs on gNBNGAPComponent {
                   // Local variables

                   // Preamble
                   f_NGAP_gnb_init();
                   f_NGAP_gnb_UE_Register();
                   f_NGAP_gnb_UE_PDU_ResourceSetup();

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

                   // Body
                   f_send_NGAP_PDU(
                     m_ngap_initMsg(
                       m_n2_PDUSessionResourceModifyIndication(
                         PX_AMF_UE_NGAP_ID,//template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
                         PX_RAN_UE_NGAP_ID,//template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
                         {  
                            ( 
                              m_pDUSessionResourceModifyItemModInd(
                                PX_PDU_SESSION_ID,//template (present) PDUSessionID p_pDUSessionID := ?,
                                bit2oct(encvalue(
                                  m_pDUSessionResourceModifyIndicationTransfer(
                                    m_qosFlowPerTNLInformation(
                                      m_uPTransportLayerInformation_gTPTunnel(
                                        m_gTPTunnel(
                                          PX_TRANSPORT_LAYER_ADDRESS,
                                          PX_GTP_TEID,
                                          omit
                                        )
                                      ),
                                      {
                                        m_associatedQosFlowItem(
                                          PX_QOS_FLOW_IDENTIFIER,
                                          omit,
                                          omit
                                        )
                                      },//in template (value) AssociatedQosFlowList p_associatedQosFlowList,                
                                      omit//in template (omit) QosFlowPerTNLInformation.iE_Extensions p_iE_Extensions := omit
                                    ),//template (present) QosFlowPerTNLInformation p_dLQosFlowPerTNLInformation := ?,
                                    omit,//template QosFlowPerTNLInformationList p_additionalDLQosFlowPerTNLInformation := *,                
                                    omit//template PDUSessionResourceModifyIndicationTransfer.iE_Extensions p_iE_Extensions := *
                                ))),
                                omit//template PDUSessionResourceModifyItemModRes.iE_Extensions p_iE_Extensions := *
                              ) 
                            )
                         }
                        )
                     )
                   );

                   f_recv_NGAP_PDU(
                     mw_ngap_succMsg(
                      //? //FIXME missing template mw_n2_PDUSessionResourceFailedToModifyListModCfm
                       mw_n2_PDUSessionResourceModifyConfirm(
                          PX_AMF_UE_NGAP_ID,
                          PX_RAN_UE_NGAP_ID,
                          { *
                            // mw_pDUSessionResourceFailedToModifyItemModCfm(
                            //    PX_PDU_SESSION_ID,
                            //    ?,//mw_pDUSessionResourceModifyIndicationUnsuccessfulTransfer(
                            //      //  ?,//template (present) Cause p_cause := ?,
                            //      //  -//template PDUSessionResourceModifyIndicationUnsuccessfulTransfer.iE_Extensions p_iE_Extensions := *
                            //      //),OCTETSTRING
                            //    *//template PDUSessionResourceFailedToModifyItemModCfm.iE_Extensions p_iE_Extensions := *
                            // )
                          }
                       )
                     )
                   );

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

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

                } // End of function f_TC_NGAP_AMF_PDU_05

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