DiameterRfRo_Steps.ttcn 29.8 KB
Newer Older
pintar's avatar
pintar committed
/**
 *  @author     STF 490
pintar's avatar
pintar committed
 *  @version    $Id$
pintar's avatar
pintar committed
 *  @desc       This module provides ATS specific steps used by the test cases
 *              for IMS-DIAMETER RfRo tests.
 */
 module DiameterRfRo_Steps {

    //LibCommon
    import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all;
juvancic's avatar
juvancic committed
    import from LibCommon_BasicTypesAndValues {type UInt8;type UInt32;};//LibCommon
pintar's avatar
pintar committed
    import from LibCommon_Sync all ;
    import from LibCommon_VerdictControl all ;

    //LibDiameter
juvancic's avatar
juvancic committed
    import from LibDiameter_Types_RfRo_AVPs all;
pintar's avatar
pintar committed
    import from LibDiameter_Types_Base_AVPs all;
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_Templates all;
    import from LibDiameter_Steps  all;
    import from LibDiameter_PIXITS all;
    import from LibDiameter_Interface all;
    
juvancic's avatar
juvancic committed
    //DiameterRFRo
pintar's avatar
pintar committed
    import from DiameterRfRo_PIXITS all;
    import from DiameterRfRo_Templates all;
    import from DiameterRfRo_SIP_Templates all;
    import from DiameterRfRo_TestConfiguration all;
    import from DiameterRfRo_TestSystem all;

    group GlobalSteps {

        /*
        *  @desc    This is a test step that init global variables
        *  @param   
        */
        function f_DiameterRf_init()
        runs on DiameterRfRo {
pintar's avatar
pintar committed

            //Defaults
            vc_default_diameter := activate (a_diameter_default());
pintar's avatar
pintar committed
            //Base LibDiameter init function if there will be any base initialisation
            f_Diameter_Init_Component();
pintar's avatar
pintar committed
            vc_ETS_address := PX_DIAMETER_RF_ETS_IPADDR;
            vc_ETS_port    := PX_DIAMETER_RF_ETS_PORT;
            vc_SUT_address := PX_DIAMETER_RF_SUT_IPADDR;
            vc_SUT_port    := PX_DIAMETER_RF_SUT_PORT;
pintar's avatar
pintar committed
            vc_sessionId := m_sessionId(PX_SessionID);
pintar's avatar
pintar committed
            vc_originHost := m_originHost(PX_OriginHost);
            vc_originRealm := m_originRealm(PX_OriginRealm); // realm of the originator (TS)
pintar's avatar
pintar committed
            vc_originHost_IUT := m_originHost(PX_DestinationHost);
            vc_originRealm_IUT := m_originRealm(PX_DestinationRealm); // realm of the originator (TS)
pintar's avatar
pintar committed
            vc_destinationHost := m_destinationHost(PX_DestinationHost);
            vc_destinationRealm := m_destinationRealm(PX_DestinationRealm);
pintar's avatar
pintar committed
            vc_destinationHost_IUT := m_destinationHost(PX_OriginHost);
            vc_destinationRealm_IUT := m_destinationRealm(PX_OriginRealm);
pintar's avatar
pintar committed
            vc_hostIPAddress := valueof(f_IPV4or6_String2Address (PX_DIAMETER_RF_ETS_IPADDR));
            vc_accountingRecordNumber := mw_accounting_Record_Number(3);
pintar's avatar
pintar committed
            vc_send_hopid:=hex2int('00000100'H);
            vc_send_endid:=hex2int('01000000'H);
        } // End of function f_DiameterRf_init
pintar's avatar
pintar committed

        /*
        *  @desc    This is a test step that init global variables
        *  @param   
        */
        function f_DiameterRf_init2()
        runs on DiameterRfRo {
pintar's avatar
pintar committed

            //Defaults
            vc_default_diameter := activate (a_diameter_default());
            
            //Base LibDiameter init function if there will be any base initialisation
            f_Diameter_Init_Component();
            
            vc_ETS_address := PX_DIAMETER_RF_ETS_IPADDR2;
            vc_ETS_port    := PX_DIAMETER_RF_ETS_PORT2;
            vc_SUT_address := PX_DIAMETER_RF_SUT_IPADDR;
            vc_SUT_port    := PX_DIAMETER_RF_SUT_PORT;
            
pintar's avatar
pintar committed
            vc_sessionId := m_sessionId(PX_SessionID&"1");
pintar's avatar
pintar committed
            vc_originHost := m_originHost(PX_OriginHost_2nd);
pintar's avatar
pintar committed
            vc_originRealm := m_originRealm(PX_OriginRealm); // realm of the originator (TS)
            
            vc_originHost_IUT := m_originHost(PX_DestinationHost);
            vc_originRealm_IUT := m_originRealm(PX_DestinationRealm); // realm of the originator (TS)
            
            vc_destinationHost := m_destinationHost(PX_DestinationHost);
            vc_destinationRealm := m_destinationRealm(PX_DestinationRealm);
            
pintar's avatar
pintar committed
            vc_destinationHost_IUT := m_destinationHost(PX_OriginHost_2nd);
pintar's avatar
pintar committed
            vc_destinationRealm_IUT := m_destinationRealm(PX_OriginRealm);
            
            vc_hostIPAddress := valueof(f_IPV4or6_String2Address (PX_DIAMETER_RF_ETS_IPADDR2));
            
            vc_accountingRecordNumber := mw_accounting_Record_Number(3);
pintar's avatar
pintar committed
            
            vc_send_hopid:=hex2int('00000100'H);
            vc_send_endid:=hex2int('01000000'H);
            
        } // End of function f_DiameterRf_init2
pintar's avatar
pintar committed
        /*
        *  @desc    This is a test step that init global variables
        *  @param   
        */
        function f_DiameterRo_init()
        runs on DiameterRfRo {
pintar's avatar
pintar committed
            //Defaults
            vc_default_diameter := activate (a_diameter_default());
pintar's avatar
pintar committed
            //Base LibDiameter init function if there will be any base initialisation
            f_Diameter_Init_Component();
pintar's avatar
pintar committed
            vc_ETS_address := PX_DIAMETER_RO_ETS_IPADDR;
            vc_ETS_port    := PX_DIAMETER_RO_ETS_PORT;
            vc_SUT_address := PX_DIAMETER_RO_SUT_IPADDR;
            vc_SUT_port    := PX_DIAMETER_RO_SUT_PORT;
pintar's avatar
pintar committed
            vc_sessionId := m_sessionId(PX_SessionID);
pintar's avatar
pintar committed
            vc_originHost := m_originHost(PX_OriginHost);
            vc_originRealm := m_originRealm(PX_OriginRealm); // realm of the originator (TS)
pintar's avatar
pintar committed
            vc_originHost_IUT := m_originHost(PX_DestinationHost);
            vc_originRealm_IUT := m_originRealm(PX_DestinationRealm); // realm of the originator (TS)
pintar's avatar
pintar committed
            vc_destinationHost := m_destinationHost(PX_DestinationHost);
            vc_destinationRealm := m_destinationRealm(PX_DestinationRealm);
pintar's avatar
pintar committed
            vc_destinationHost_IUT := m_destinationHost(PX_OriginHost);
            vc_destinationRealm_IUT := m_destinationRealm(PX_OriginRealm);
            
pintar's avatar
pintar committed
            vc_hostIPAddress := valueof(f_IPV4or6_String2Address (PX_DIAMETER_RO_ETS_IPADDR));
pintar's avatar
pintar committed
            vc_send_hopid:=hex2int('00000100'H);
            vc_send_endid:=hex2int('01000000'H);
        } // End of function f_DiameterRo_init
        /*
        *  @desc    This is a test step that init global variables
        *  @param   
        */
        function f_DiameterRo_init2()
        runs on DiameterRfRo {
            
            //Defaults
            vc_default_diameter := activate (a_diameter_default());
            
            //Base LibDiameter init function if there will be any base initialisation
            f_Diameter_Init_Component();
            
            vc_ETS_address := PX_DIAMETER_RO_ETS_IPADDR2;
            vc_ETS_port    := PX_DIAMETER_RO_ETS_PORT2;
            vc_SUT_address := PX_DIAMETER_RO_SUT_IPADDR;
            vc_SUT_port    := PX_DIAMETER_RO_SUT_PORT;
            
            vc_sessionId := m_sessionId(PX_SessionID);
            
pintar's avatar
pintar committed
            vc_originHost := m_originHost(PX_OriginHost_2nd);
            vc_originRealm := m_originRealm(PX_OriginRealm); // realm of the originator (TS)
            
            vc_originHost_IUT := m_originHost(PX_DestinationHost);
            vc_originRealm_IUT := m_originRealm(PX_DestinationRealm); // realm of the originator (TS)
            
            vc_destinationHost := m_destinationHost(PX_DestinationHost);
            vc_destinationRealm := m_destinationRealm(PX_DestinationRealm);
            
pintar's avatar
pintar committed
            vc_destinationHost_IUT := m_destinationHost(PX_OriginHost_2nd);
            vc_destinationRealm_IUT := m_destinationRealm(PX_OriginRealm);
            
            vc_hostIPAddress := valueof(f_IPV4or6_String2Address (PX_DIAMETER_RO_ETS_IPADDR));
            
            vc_send_hopid:=hex2int('00000100'H);
            vc_send_endid:=hex2int('01000000'H);
        } // End of function f_DiameterRo_init
        
pintar's avatar
pintar committed
    } // Endgroup GlobalSteps

    group Preambles{
        
        function f_preamble_Rf_CDF() runs on DiameterRfRo
        {
            var default     v_def_diameter_catchEvent;
pintar's avatar
pintar committed
            if(PX_DIAM_LLP_ENABLED)
            {
garciay's avatar
garciay committed
                f_preambleServer();
pintar's avatar
pintar committed
            }
            
            f_DiameterRf_init();
garciay's avatar
garciay committed
            f_preambleDiameterBaseServer(c_applIdRf);
            //catch ACR(Event) before test body starts(on 200 OK REGISTER, 200 OK, SUBSCRIBE, 200 OK NOTIFY)
            v_def_diameter_catchEvent := activate (a_diameter_event());
            
            //delay before preamble is done - SIP starts with MESSAGE, INVITE request later
            f_wait(0.5);
pintar's avatar
pintar committed
        }
        
        function f_preamble_Rf_CDF2() runs on DiameterRfRo
        {
            var default     v_def_diameter_catchEvent;
pintar's avatar
pintar committed
            if(PX_DIAM_LLP_ENABLED)
            {
garciay's avatar
garciay committed
                f_preambleServer();
pintar's avatar
pintar committed
            }
            
            f_DiameterRf_init2();
garciay's avatar
garciay committed
            f_preambleDiameterBaseServer(c_applIdRf);
            //catch ACR(Event) before test body starts(on 200 OK REGISTER, 200 OK, SUBSCRIBE, 200 OK NOTIFY)
            v_def_diameter_catchEvent := activate (a_diameter_event());
            
            //delay before preamble is done - SIP starts with MESSAGE, INVITE request later
            f_wait(0.5);
pintar's avatar
pintar committed
        }
        
        function f_preamble_Rf_CTF() runs on DiameterRfRo
        {
            if(PX_DIAM_LLP_ENABLED)
            {
garciay's avatar
garciay committed
                f_preambleClient();
pintar's avatar
pintar committed
            }
            
            f_DiameterRf_init();
garciay's avatar
garciay committed
            f_preambleDiameterBaseClient_acct_Application_Id_AVP(c_applIdRf);
pintar's avatar
pintar committed
        }
        
        function f_preamble_Ro_OCF() runs on DiameterRfRo
        {
            if(PX_DIAM_LLP_ENABLED)
            {
garciay's avatar
garciay committed
                f_preambleServer();
pintar's avatar
pintar committed
            }
            
            f_DiameterRo_init();
garciay's avatar
garciay committed
            f_preambleDiameterBaseServer(c_applIdRo);
pintar's avatar
pintar committed
        }
        
        function f_preamble_Ro_OCF2() runs on DiameterRfRo
        {
            if(PX_DIAM_LLP_ENABLED)
            {
garciay's avatar
garciay committed
                f_preambleServer();
pintar's avatar
pintar committed
            }
            
            f_DiameterRo_init2();
garciay's avatar
garciay committed
            f_preambleDiameterBaseServer(c_applIdRo);
pintar's avatar
pintar committed
        }
        
        function f_preamble_Ro_CTF() runs on DiameterRfRo
        {
            if(PX_DIAM_LLP_ENABLED)
            {
garciay's avatar
garciay committed
                f_preambleClient();
pintar's avatar
pintar committed
            }
            
            f_DiameterRo_init();
garciay's avatar
garciay committed
            f_preambleDiameterBaseClient(c_applIdRo);
pintar's avatar
pintar committed
        }
        
    } // End of group Preambles

    group Postambles {
        
        function f_postamble_Rf_CDF() runs on DiameterRfRo
        {
            f_postambleDiameterBase();
            
            if(PX_DIAM_LLP_ENABLED)
            {
                f_postambleDisconnect();
            }
            
            // Deactivate defaults
            deactivate;
        }
        
        function f_postamble_Rf_CDF2() runs on DiameterRfRo
        {
            f_postamble_Rf_CDF();
        }
        
        function f_postamble_Rf_CTF() runs on DiameterRfRo
        {
            
            f_postambleDiameterBase();
            
            if(PX_DIAM_LLP_ENABLED)
            {
                f_postambleDisconnect();
            }
            
            // Deactivate defaults
            deactivate;
        }
        
        function f_postamble_Ro_OCF() runs on DiameterRfRo
        {
            f_postambleDiameterBase();
            
            if(PX_DIAM_LLP_ENABLED)
            {
                f_postambleDisconnect();
            }
            
            // Deactivate defaults
            deactivate;
        }
        
        function f_postamble_Ro_OCF2() runs on DiameterRfRo
        {
            f_postambleDiameterBase();
            
            if(PX_DIAM_LLP_ENABLED)
            {
                f_postambleDisconnect();
            }
            
            // Deactivate defaults
            deactivate;
        }
        
        function f_postamble_Ro_CTF() runs on DiameterRfRo
        {
            
            f_postambleDiameterBase();
            
            if(PX_DIAM_LLP_ENABLED)
            {
                f_postambleDisconnect();
            }
            
            // Deactivate defaults
            deactivate;
        }
        
    } // End of group Postambles

    group AVPOperations {
        
    } // End of group AVPOperations

    group CheckFunctions {
        
    } // End of group CheckFunctions

    group SendMessage {
        
        //SEND/AWAIT messages defined in LibDiameter_Steps module - where endid and hopid parameters are automaticali handled
juvancic's avatar
juvancic committed
        group RF{
juvancic's avatar
juvancic committed
            group TypeOfCharging{
                /**
                 * @desc Function used to send AC-Request and receive AC-Answer
                 * @param p_art        accounting record type - EVENT_E,START_E,INTERIM_E,STOP_E
                 *        p_cC_Request_Number acc record number
juvancic's avatar
juvancic committed
                 *        p_ts         timestamp of event
                 * @verdict depend on receive message and its matching with template
                 */
                function f_sendACR_awaitACA_(in Acc_Record_Type p_art, in UInt32 p_cC_Request_Number, in UInt32 p_ts) runs on DiameterRfRo
juvancic's avatar
juvancic committed
                {
                    f_send_ACR(
                       md_aCR(
                           vc_sessionId, 
juvancic's avatar
juvancic committed
                           md_acrBodyAvps_TypeOfCharging(
juvancic's avatar
juvancic committed
                               vc_originHost,                 // containing an Origin-Host AVP
                               vc_originRealm,                // containing an Origin-Realm AVP
                               m_accounting_Record_Type(      // containing an Accounting-Record-Type AVP
                                   p_art
                               ),
                               m_accounting_Record_Number(    // containing an Accounting-Record-Number AVP
                                   p_cC_Request_Number               //     indicating the value 
juvancic's avatar
juvancic committed
                               ),
                               m_event_timestamp(p_ts),
juvancic's avatar
juvancic committed
                               m_Service_Information_RF_CDF_TC 
juvancic's avatar
juvancic committed
                           )
                       )
                   );

                   f_awaiting_ACA(
                       mdw_aCA( 
                           vc_sessionId,                       // containing a Session-ID AVP
                           mdw_acaBodyAvps(
                               mw_resultCode(                  // containing a Result-Code AVP
                                   DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                               ),
garciay's avatar
garciay committed
                               vc_originHost_IUT,              // containing an Origin-Host AVP
                               vc_originRealm_IUT,             // containing an Origin-Realm AVP
                               mw_accounting_Record_Type(  // containing an Accounting-Record-Type AVP
juvancic's avatar
juvancic committed
                                   p_art
                               ),
                               mw_accounting_Record_Number(// containing an Acct-Application-Id AVP
                                  p_cC_Request_Number                 //     indicating the value
juvancic's avatar
juvancic committed
                               )
                       ))
                   );
garciay's avatar
garciay committed
                } //end function f_sendACR_awaitACA_
                
                /**
                 * @desc Function used to receive AC-Request and send AC-Answer
                 * @param p_art        accounting record type - EVENT_E,START_E,INTERIM_E,STOP_E
                 * @verdict depend on receive message and its matching with template
                 */
                function f_awaitACR_sendACA_(in Acc_Record_Type p_art) runs on DiameterRfRo
                {

                    f_awaiting_ACR(
                       mdw_aCR(
                            ?, 
                            mdw_acrBody_ServiceInfo_EventTimestamp(
garciay's avatar
garciay committed
                                vc_originHost_IUT,                  // containing an Origin-Host AVP
                                vc_originRealm_IUT,                 // containing an Origin-Realm AVP
                                vc_destinationRealm_IUT,            // containing a Destination-Realm AVP
garciay's avatar
garciay committed
                                mw_accounting_Record_Type(      // containing an Accounting-Record-Type AVP
                                    p_art
                                ),
                                mw_accounting_Record_Number(    // containing an Accounting-Record-Number AVP
                                    ?                           //     indicating the value ?
                                ),
                                *,                              // containing a Service-Information AVP
                                *                               // containing an Event-Timestamp AVP
                            )
                        )
                    );

                    f_send_ACA(
                        md_aCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_acaBodyAvps(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_accounting_Record_Type(       // containing an Accounting-Record-Type AVP
                                    p_art
                                ),
                                vc_accountingRecordNumber
                        ))
                    );
                }//end  function f_awaitACR_sendACA_
juvancic's avatar
juvancic committed

            } // End of group TypeOfCharging
juvancic's avatar
juvancic committed

        } // End of group RF
juvancic's avatar
juvancic committed

        group RO {
            
            group TypeOfCharging {
                
                /**
                 * @desc Function used to send CC-Request and receive CC-Answer
                 * @param p_cC_Request_Ty_Type      Request type - eg.: EVENT_REQUEST
garciay's avatar
garciay committed
                 * @param p_cC_Request_Number acc   Request number
                 * @param p_service_Context_Id      Service context ID
                 * @verdict depend on receive message and its matching with template
                 */
                function f_sendCCR_awaitCCA_(
garciay's avatar
garciay committed
                                             in CC_Request_Ty_Type                                      p_cC_Request_Ty_Type, 
                                             in UInt32                                                  p_cC_Request_Number,
                                             in template (omit) Service_Context_Id_AVP                  p_service_Context_Id := omit,
                                             in template (omit) Requested_Action_AVP                    p_requested_Action := omit,
garciay's avatar
garciay committed
                                             in template (omit) CCR_Body_AVP.multiple_Services_Credit_Control    p_multiple_Services_Credit_Control := omit
                ) runs on DiameterRfRo {
                    f_send_CCR(
                        md_cCR(
                            vc_sessionId, 
                            md_ccrBodyAvps_TypeOfCharging(
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                    p_cC_Request_Ty_Type
                                ),
                                    p_cC_Request_Number
                                ),
garciay's avatar
garciay committed
                                p_service_Context_Id,
                                p_requested_Action,
                                p_multiple_Services_Credit_Control
                           )
                       )
                   );
                   
                   f_awaiting_CCA(
                       mdw_cCA( 
                           vc_sessionId,
                           mdw_ccaBodyAvps(
                               mw_resultCode(
                                   DIAMETER_SUCCESS_E
                               ),
garciay's avatar
garciay committed
                               vc_originHost_IUT,
                               vc_originRealm_IUT,
                               mw_auth_Application_Id(4),
                               mw_cC_Request_Type(
                                   p_cC_Request_Ty_Type
                               ),
                /**
                 * @desc Function used to await CC-Request and send CC-Answer
                 * @param p_cC_Request_Ty_Type      Request type - eg.: EVENT_REQUEST
                 * @param p_cC_Request_Number acc   Request number
                 * @param p_service_Context_Id      Service context ID
                 * @verdict depend on receive message and its matching with template
                 */
                function f_awaitCCR_sendCCA_(
                                             in CC_Request_Ty_Type                                      p_cC_Request_Ty_Type, 
                                             in UInt32                                                  p_cC_Request_Number,
garciay's avatar
garciay committed
                                             in template Requested_Action_AVP                           p_requested_Action := *,
                                             in template CCR_Body_AVP.multiple_Services_Credit_Control  p_multiple_Services_Credit_Control := *
                ) runs on DiameterRfRo {
                    
                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
                            mdw_ccrBodyAvps(
garciay's avatar
garciay committed
                                vc_originHost_IUT,                       // containing an Origin-Host AVP
                                vc_originRealm_IUT,                      // containing an Origin-Realm AVP
                                vc_destinationRealm_IUT,                 // containing a Destination-Realm AVP
                                mw_cC_Request_Type(p_cC_Request_Ty_Type),// containing a CC-Request-Type AVP
                                mw_cC_Request_Number(p_cC_Request_Number),// containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                p_requested_Action,                     // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
                                p_multiple_Services_Credit_Control      // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );

                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps_ReqNumber(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(p_cC_Request_Ty_Type),
                                m_cC_Request_Number(p_cC_Request_Number)// containing a CC-Request-Number AVP
                        ))
                    );
                }
                
            } // End of group TypeOfCharging
            
            group ReAuthorization {
                
                /**
                 * @desc Function used to await RA-Request and send RA-Answer
                 * @param p_ex
                 * @verdict depend on receive message and its matching with template
                 */
                function f_awaitRAR_sendRAA_(
                ) runs on DiameterRfRo {
                    
                    f_awaiting_RAR(
                        mdw_rAR(
                            ?, 
                            mdw_rarBodyAvps(
garciay's avatar
garciay committed
                                vc_originHost_IUT,              // containing an Origin-Host AVP
                                vc_originRealm_IUT,             // containing an Origin-Realm AVP
garciay's avatar
garciay committed
                                vc_destinationRealm_IUT,        // containing a Destination-Realm AVP
                                vc_destinationHost_IUT,         // containing a CC-Request-Type AVP
                                mw_auth_Application_Id(         // containing an Auth-Application-Id AVP
                                    4                           //     indicating the value 4
                                ),
                                mw_re_Auth_Request(             // containing a Re-Auth-Request-Type AVP
                                    AUTHORIZE_ONLY_E            //     indicating AUTHORIZE_ONLY
                                )
                            )
                        )
                    );

                    f_send_RAA(
                        md_rAA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_raaBodyAvps(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm                 // containing an Origin-Realm AVP
                        ))
                    );
                }//end function f_awaitRAR_sendRAA_(
                    
                
                
            }//end group ReAuthorization
            
        } // End of group RO
        
    } // End of group SendMessage 
    
garciay's avatar
garciay committed
    group DefaultTestStep{

        altstep a_diameter_interim() runs on DiameterRfRo
        {
            
            [] DIAMP.receive (DIAMETER_MSG:{aCR_MSG := 
                mdw_aCR(?,mdw_acrBody_ServiceInfo_EventTimestamp(?,?,?,mw_accounting_Record_Type(INTERIM_RECORD_E),?,*,*))
            }) -> value vc_recvDiamMsgDefault
              {
                vc_recv_hopid:= vc_recvDiamMsgDefault.aCR_MSG.header.hopid;
                vc_recv_endid:= vc_recvDiamMsgDefault.aCR_MSG.header.endid;
                vc_accountingRecordNumber := vc_recvDiamMsgDefault.aCR_MSG.aCR_Body.accounting_Record_Number;
garciay's avatar
garciay committed

                f_send_ACA(
                    md_aCA( 
                        vc_sessionId,                       // containing a Session-ID AVP
                        md_acaBodyAvps(
                            m_resultCode(                   // containing a Result-Code AVP
                                DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                            ),
                            vc_originHost,                  // containing an Origin-Host AVP
                            vc_originRealm,                 // containing an Origin-Realm AVP
                            m_accounting_Record_Type(       // containing an Accounting-Record-Type AVP
                                INTERIM_RECORD_E
                            ),
                            vc_accountingRecordNumber
                    ))
                );
                repeat;
              }
        } //end altstep a_diameter_interim()

        altstep a_diameter_event() runs on DiameterRfRo
        {
            
            [] DIAMP.receive (DIAMETER_MSG:{aCR_MSG := 
                mdw_aCR(?,mdw_acrBody_ServiceInfo_EventTimestamp(?,?,?,mw_accounting_Record_Type(EVENT_RECORD_E),?,*,*))
            }) -> value vc_recvDiamMsgDefault
              {
                vc_recv_hopid:= vc_recvDiamMsgDefault.aCR_MSG.header.hopid;
                vc_recv_endid:= vc_recvDiamMsgDefault.aCR_MSG.header.endid;
                vc_accountingRecordNumber := vc_recvDiamMsgDefault.aCR_MSG.aCR_Body.accounting_Record_Number;

                f_send_ACA(
                    md_aCA( 
                        vc_sessionId,                       // containing a Session-ID AVP
                        md_acaBodyAvps(
                            m_resultCode(                   // containing a Result-Code AVP
                                DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                            ),
                            vc_originHost,                  // containing an Origin-Host AVP
                            vc_originRealm,                 // containing an Origin-Realm AVP
                            m_accounting_Record_Type(       // containing an Accounting-Record-Type AVP
                                EVENT_RECORD_E
                            ),
                            vc_accountingRecordNumber
                    ))
                );
                repeat;
              }
        }//end altstep a_diameter_event()
garciay's avatar
garciay committed
    }//end group DefaultTestStep
    
} // End of module DiameterGx_Steps