NGAP_TestCases.ttcn 61.9 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 cases for NGAP tests.
 *    @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_TestCases {
Yann Garcia's avatar
Yann Garcia committed
    // LibCommon
    import from LibCommon_Sync all ;
    //  LibNGAP
    import  from  NGAP_Constants  language  "ASN.1:2002"  all;
    import  from  NGAP_CommonDataTypes  language  "ASN.1:2002"  all;
    import  from  NGAP_IEs  language  "ASN.1:2002"  all;
    import  from  NGAP_PDU_Contents  language  "ASN.1:2002"  all;
    import  from  NGAP_PDU_Descriptions  language  "ASN.1:2002"  all;
    import  from  NGAP_Containers  language  "ASN.1:2002"  all;

    import  from  LibNGAP_TypesAndValues all;
    import  from  LibNGAP_Templates all;
    import  from  LibNGAP_Pixits all;

Yann Garcia's avatar
Yann Garcia committed
    // NGAP_Ats
    import from LibNGAP_TypesAndValues all;
    import from NGAP_TestConfiguration all;
    import from NGAP_TestSystem all;
    import from NGAP_TCFunctions all;
    import from NGAP_Pics all;
    group TC_testcase_template{
        /**
         * @desc Verify ...
         * <pre>
         * Pics Selection: 
         * Configuration: 
         *     
         * </pre>
         * 
         * @see       ETSI TS 
         * @reference ETSI TS 
         */
Iztok Juvancic's avatar
Iztok Juvancic committed
        testcase TC_NGAP_gNB_or_aMF_testcaseName_01() runs on /*aMFNGAPComponent*/gNBNGAPComponent system TestAdapter {
            // Local variables
Iztok Juvancic's avatar
Iztok Juvancic committed
            var gNBNGAPComponent v_ngap_gnb_or_amf; //or v_ngap_amf

            var AdditionalDLUPTNLInformationForHOItem v_test, v_test1;

            log(m_pDUSessionResourceSetupRequestTransfer_optionals(
                                                                   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_pDUSessionAggregateMaximumBitRate(
                                                                                                       PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_DL, 
                                                                                                       PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_UL
                 )));
            log(m_pDUSessionResourceSetupRequestTransfer_optionals_1(
                                                                     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_pDUSessionAggregateMaximumBitRate(
                                                                                                         PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_DL, 
                                                                                                         PX_UE_AGGREGATE_MAXIMUM_BIT_RATE_UL
                 )));


                stop;

            // Test control
            if (not PICS_NGAP_AMF_IUT) {
                log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_AMF_IUT' shall be set to true for executing the TC. ***");
                stop;
            }
            // Test component configuration
            f_cf_NGAP_gNB_Up/*aMF_Up*/(v_ngap_gnb_or_amf);
            v_test := valueof(
                              m_additionalDLUPTNLInformationForHOItem(
                                                                      m_uPTransportLayerInformation_gTPTunnel(
                                                                                                              m_gTPTunnel
                                                                                                              ),
                                                                      { 
                                                                        m_qosFlowItemWithDataForwarding(
                                                                                                        -,
                                                                                                        m_dataForwardingAccepted
                                                                                                        )
                                                                      }
                              ));
            v_test1 := valueof(
                               m_additionalDLUPTNLInformationForHOItem(
                                                                       m_uPTransportLayerInformation_gTPTunnel(
                                                                                                               m_gTPTunnel
                                                                                                               ),
                                                                       { 
                                                                        m_qosFlowItemWithDataForwarding(
                                                                                                         -,
                                                                                                         m_dataForwardingAccepted,
                                                                                                         m_qosFlowItemWithDataForwarding_id_CurrentQoSParaSetIndex(
                                                                                                                                                                   m_alternativeQoSParaSetIndex
                                                                                                         )) 
                                                                       },
                                                                       -,
                                                                       m_additionalDLUPTNLInformationForHOItem_uPTransportLayerInformation(
                                                                                                                                           m_uPTransportLayerInformation_gTPTunnel(
            v_ngap_gnb_or_amf.start(f_TC_NGAP_gNB_or_aMF_functionName_01());
            // synchronize PTC on 1 sychronization points
            f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
            f_cf_Down/*gNBoraMF*/();

        } // End of testcase TC_NGAP_gNB_or_aMF_testcaseName_01
    group gNB_Role{

        /**
         * @see ETSI TS 138 413 V16.12.0 (2023-05) 8.1 List of NGAP Elementary Procedures
         */
        group PDU_Session_Management_Procedures{

            /**
             * @see ETSI TS 138 413 V16.12.0 (2023-05) 8.2.1 PDU Session Resource Setup
             */
            group PDU_Session_Resource_Setup{
Iztok Juvancic's avatar
Iztok Juvancic committed
                /**
                 * @desc Verify that the NG-RAN node successfully processes a  PDU SESSION RESOURCE SETUP REQUEST contains mandatory IEs and answers with PDU SESSION RESOURCE SETUP RESPONSE for successfully established PDU session
Iztok Juvancic's avatar
Iztok Juvancic committed
                 */
                testcase TC_NGAP_GNB_PDU_01() runs on aMFNGAPComponent system TestAdapter {
Iztok Juvancic's avatar
Iztok Juvancic committed

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;
Iztok Juvancic's avatar
Iztok Juvancic committed
                    // Test control
juvancic's avatar
juvancic committed
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_1)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_1' shall be set to true for executing the TC. ***");
Iztok Juvancic's avatar
Iztok Juvancic committed
                        stop;
                    }
Iztok Juvancic's avatar
Iztok Juvancic committed
                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);
Iztok Juvancic's avatar
Iztok Juvancic committed
                    // Start
Iztok Juvancic's avatar
Iztok Juvancic committed
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_01());
Iztok Juvancic's avatar
Iztok Juvancic committed
                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
Iztok Juvancic's avatar
Iztok Juvancic committed
                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_01
juvancic's avatar
juvancic committed
                /**
                 * @desc Test objective "Verify that the NG-RAN node reports the establishment of the corresponding PDU session as failed if a PDU SESSION RESOURCE SETUP REQUEST contains several PDU Session ID IEs set to the same value."
                 */
                testcase TC_NGAP_GNB_PDU_02() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_1)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_1' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_02());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_02

                /**
                 * @desc Test objective "Verify that the NG-RAN node reports the establishment of the new PDU session as failed if a PDU SESSION RESOURCE SETUP REQUEST contains a PDU Session ID IE set to value that identifies an active PDU Session. NOTE: Run TP_NGAP_GNB_PDU_01 before this TP "
                 */
                testcase TC_NGAP_GNB_PDU_03() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_1)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_1' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_03());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_03

                /**
                 * @desc Test objective "Verify that the NG-RAN node reports the establishment of the corresponding PDU session as failed if a PDU SESSION RESOURCE SETUP REQUEST contains a QoS Flow Setup Request List IE in the PDU Session Resource Setup Request Transfer IE including at least one Non-GBR QoS flow but the PDU Session Aggregate Maximum Bit Rate IE is not present. "
                 */
                testcase TC_NGAP_GNB_PDU_04() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_1)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_1' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_04());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_04
juvancic's avatar
juvancic committed

            } // End of group PDU_Session_Resource_Setup

            //8.2.2
            group PDU_Session_Resource_Release{

                /**
                 * @desc Test objective "Verify that the NG-RAN node successfully processes a  PDU SESSION RESOURCE RELEASE COMMAND contains mandatory IEs and answers with PDU SESSION RESOURCE RELEASE RESPONSE to release PDU session."
                 */
                testcase TC_NGAP_GNB_PDU_05() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_2)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_2' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_05());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_05

                /**
                 * @desc Test objective "Verify that the NG-RAN node successfully processes a  PDU SESSION RESOURCE RELEASE COMMAND containing multiple PDU Session ID IEs set to the same value and ignore the duplication."
                 */
                testcase TC_NGAP_GNB_PDU_06() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_2)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_2' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_06());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_06

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

                /**
                 * @desc Test objective "Verify that the NG-RAN node successfully processes a  PDU SESSION RESOURCE MODIFY REQUEST contains mandatory IEs and answers with PDU SESSION RESOURCE MODIFY RESPONSE for successfully modified PDU session."
                 */
                testcase TC_NGAP_GNB_PDU_07() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_3)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_3' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_07());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_07

                

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

                /**
                 * @desc Test objective "Verify that the IUT can send a  PDU_SESSION_RESOURCE_NOTIFY that already established QoS flow or PDU session for given UE are release."
                 */
                testcase TC_NGAP_GNB_PDU_08() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_4)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_4' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_08());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_PDU_08

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

                /**
                 * @desc  Test objective "Verify that the IUT can send a PDU_SESSION_RESOURCE_MODIFY_INDICATION to request modification of established PDU session."
                 */
                testcase TC_NGAP_GNB_PDU_09() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_1_5)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_1_5' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_PDU_09());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase 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 Verify that the NG-RAN node successfully processes a WRITE-REPLACE WARNING REQUEST containing mandatory IEs and answers with WRITE-REPLACE WARNING RESPONSE to start broadcasting of warning messages.
                 */
                testcase TC_NGAP_GNB_WTP_01() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_8_1)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_8_1' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_WTP_01());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_WTP_01

                /**
                 * @desc "Verify that the NG-RAN node successfully processes a WRITE-REPLACE WARNING REQUEST containing Message Identifier IE and/or Serial Number IE different from those in the warning message being broadcast and if Concurent Warning Message Indicator is not present then IUT node answers with WRITE-REPLACE WARNING RESPONSE  and replaces the warning message being broadcast with newly received one for that area."
                 */
                testcase TC_NGAP_GNB_WTP_02() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_8_1)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_8_1' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_WTP_02());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_WTP_02

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

                /**
                 * @desc "Verify that the NG-RAN node successfully processes a PWS CANCEL REQUEST containing mandatory IEs and answers with PWS CANCEL RESPONSE to cancel an already ongoing broadcast warning messages in all of the cells in the NG-RAN."
                 */
                testcase TC_NGAP_GNB_WTP_03() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_8_2)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_8_2' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_WTP_03());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_WTP_03

            //8.9.3
            group PWS_Restart_Indication{

                /**
                 * @desc  "Verify that the IUT can send a PWS RESTART INDICATION to inform AMF that PWS information for some or all cells may be reloaded from the CBC if needed."
                 */
                testcase TC_NGAP_GNB_WTP_04() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_8_3)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_8_3' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_WTP_04());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_WTP_04

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

                /**
                 * @desc "Verify that the IUT can send a PWS FAILURE INDICATION to inform AMF that ongoing PWS operation for one or more cells has failed."
                 */
                testcase TC_NGAP_GNB_WTP_05() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_8_4)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_8_4' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_WTP_05());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase 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  Test objective "Verify that the IUT can send a TRACE_FAILURE_INDICATION to inform AMF that Trace Start procedure has failed due to an interaction with handover procedure."
                 */
                testcase TC_NGAP_GNB_TRP_01() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_10_1) and (not PICS_A3_10_2)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_10_1 and PICS_A3_10_2' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_TRP_01());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase 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  Test objective "Verify that the IUT can send a TRACE_FAILURE_INDICATION to inform AMF that a Deactivate Trace procedure has failed due to an interaction with handover procedure."
                 */
                testcase TC_NGAP_GNB_TRP_02() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_10_2) and (not PICS_A3_10_3)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_10_2 and PICS_A3_10_3' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_TRP_02());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_GNB_TRP_02

            } // End of group Deactivate_Trace
            //8.11.4
            group Cell_Traffic_Trace{
juvancic's avatar
juvancic committed
                
                /**
                 * @desc  Test objective "Verify that the IUT can send a CELL_TRAFFIC_TRACE to send the allocated Trace Recording Session Reference and Trace Reference to AMF."
                 */
                testcase TC_NGAP_GNB_TRP_03() runs on aMFNGAPComponent system TestAdapter {

                    // Local variables
                    var aMFNGAPComponent v_ngap_amf;

                    // Test control
                    if ((not PICS_NGAP_GNB_IUT) and (not PICS_A3_10_4)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_GNB_IUT and PICS_A3_10_4' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_aMF_Up(v_ngap_amf);

                    // Start
                    v_ngap_amf.start(f_TC_NGAP_GNB_TRP_03());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase 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 "Verify that the IUT can send a  PDU SESSION RESOURCE SETUP REQUEST with at least one PDU session resource list to established PDU session."
                 */
                testcase TC_NGAP_AMF_PDU_01() runs on gNBNGAPComponent system TestAdapter {

                    // Local variables
                    var gNBNGAPComponent v_ngap_gnb;

                    // Test control
                    if ((not PICS_NGAP_AMF_IUT) and (not PICS_A4_1_1)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_AMF_IUT and PICS_A4_1_1' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_gNB_Up(v_ngap_gnb);

                    // Start
                    v_ngap_gnb.start(f_TC_NGAP_AMF_PDU_01());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_AMF_PDU_01

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

                /**
                 * @desc "Verify that the IUT can send a  PDU_SESSION_RESOURCE_RELEASE_COMMAND to release PDU session."
                 */
                testcase TC_NGAP_AMF_PDU_02() runs on gNBNGAPComponent system TestAdapter {

                    // Local variables
                    var gNBNGAPComponent v_ngap_gnb;

                    // Test control
                    if ((not PICS_NGAP_AMF_IUT) and (not PICS_A4_1_2)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_AMF_IUT and PICS_A4_1_2' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_gNB_Up(v_ngap_gnb);

                    // Start
                    v_ngap_gnb.start(f_TC_NGAP_AMF_PDU_02());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase TC_NGAP_AMF_PDU_02

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

                /**
                 * @desc "Verify that the IUT can send a  PDU_SESSION_RESOURCE_MODIFY_REQUEST to modify PDU session."
                 */
                testcase TC_NGAP_AMF_PDU_03() runs on gNBNGAPComponent system TestAdapter {

                    // Local variables
                    var gNBNGAPComponent v_ngap_gnb;

                    // Test control
                    if ((not PICS_NGAP_AMF_IUT) and (not PICS_A4_1_3)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_AMF_IUT and PICS_A4_1_3' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_gNB_Up(v_ngap_gnb);

                    // Start
                    v_ngap_gnb.start(f_TC_NGAP_AMF_PDU_03());

                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});

                    f_cf_Down/*gNBoraMF*/();

                } // End of testcase 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 "Verify that the AMF node successfully processes a  PDU_SESSION_RESOURCE_MODIFY_INDICATION contains mandatory IEs and answers with PDU_SESSION_RESOURCE_MODIFY_CONFIRM for successfully modified PDU session."
                 */
                testcase TC_NGAP_AMF_PDU_04() runs on gNBNGAPComponent system TestAdapter {

                    // Local variables
                    var gNBNGAPComponent v_ngap_gnb;

                    // Test control
                    if ((not PICS_NGAP_AMF_IUT) and (not PICS_A4_1_5)){
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_NGAP_AMF_IUT and PICS_A4_1_5' shall be set to true for executing the TC. ***");
                        stop;
                    }

                    // Test component configuration
                    f_cf_NGAP_gNB_Up(v_ngap_gnb);

                    // Start